您的位置:首页 > 编程语言 > Java开发

spring引发的一些概念的理解

2013-09-11 15:58 274 查看
 简单来说,Spring是一个轻量级的控制反转IoC)和面向切面(AOP)的容器框架。



Spring 模块分为:

1.Spring 核心模块:提供了IOC即依赖注入,spring
核心最主要的是beanFactory.

2.Spring AOP: 定义实现了AOP并利用其提供了拦截器实现事务管理.

3.Spring
上下文context模块:用地资源装载和资源邦定,事件移植和透明装载上下文等功能,并继承了spring的核心功能.

4.Spring
Web模块:提供web的集成其它提供了ContextLoaderListener并提供了Jsf等集成所需要的类.

5.Spring
Dao模块:提供了jdbc抽象层使开发不用去编写jdbc代码能分析数据库厂商的sql错误代码,同事提供编程方式和声明式控制事务.

6.Spring ORM模块:提供了当前的ORM技术框架的集成如hibernate
,ibatis,jdo等.

7.Spring MVC:提供了web
mvc的实现,并清楚的划分了web各项功能,如表单生成和校验器等.

知道spring的各功能有利我们更深入的了了spring,也有利于我的开发工作!

******************************************************

AOP、OOP在字面上虽然非常类似,但却是面向不同领域的两种设计思想。OOP(面向对象编程)针对业务处理过程的实体及其属性和行为进行抽象封装,以获得更加清晰高效的逻辑单元划分。

  而AOP则是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。这两种设计思想在目标上有着本质的差异。
  上面的陈述可能过于理论化,举个简单的例子,对于“雇员”这样一个业务实体进行封装,自然是OOP/OOD的任务,我们可以为其建立一个“Employee”类,并将“雇员”相关的属性和行为封装其中。而用AOP设计思想对“雇员”进行封装将无从谈起。
  同样,对于“权限检查”这一动作片断进行划分,则是AOP的目标领域。而通过OOD/OOP对一个动作进行封装,则有点不伦不类。
  换而言之,OOD/OOP面向名词领域,AOP面向动词领域。



传统的程序通常表现出一些不能自然地适合单一的程序模块或者是几个紧密相关的程序模块的行为,AOP
将这种行为称为横切,它们跨越了给定编程模型中的典型职责界限。横切行为的实现都是分散的,软件设计师会发现这种行为难以用正常的逻辑来思考、实现和更改。最常见的一些横切行为如下面这些:

  日志记录,跟踪,优化和监控

  事务的处理

  持久化

  性能的优化

  资源池,如数据库连接池的管理

  系统统一的认证、权限管理等

  应用系统的异常捕捉及处理

  针对具体行业应用的横切行为





____________________

*************************************

SST

发现spring3 的基于注解的springMVC超级方便。(以前认为spring MVC
配置很麻烦。)比struts2还方便。

1.下载STS 2.新建模板项目-》spring MVC
会有配置文件和WellcomeController自动生成配置在app-config里面表示是支持注解,要导包(自动配置,自动生成)

3.新建个controller @Controller @RequestMapping("/test") public
class HelloController { @RequestMapping("test1") public
ModelAndView test2(HttpServletRequest request, HttpServletResponse
response,helloForm form)throws Exception{
request.setAttribute("name", form.getName());
request.setAttribute("pwd", form.getPwd()); String[]
cc=request.getParameterValues("cc"); System.out.print(cc);
request.setAttribute("cc", cc); return new ModelAndView("test"); }
} 这里我还自己建立个form

4.在view文件夹下 建立自己的页面,显示内容(配置在)mvc-config (自动配置,自动生成)

5.开服务器,访问127.0.0.1:8080/项目名/test/test1就好了想当方便啊,而且@RequestMapping("/test")支持方法,传值过滤。很强大,很方便,告别了配置文件。。

<:property value="/WEB-INF/views/"
name="prefix"><:property value=".jsp"
name="suffix">****************************************************</:property></:property>

<:property value="/WEB-INF/views/"
name="prefix"><:property value=".jsp"
name="suffix">*******************************************************

Roo is not a runtime:只介入开发过程,这点我很喜欢。

Roo is not an IDE
plugin:可以用eclipse的STS插件,但不依赖于IDE,好处是更新或者切换版本时不至于太突兀,这点用过某XXStudio就感同身受了。

Roo is not an annotation processing
library:Roo不会使用java的api来处理ann,也就是说它都不介入compile阶段,它只是把java文件当文本文件来处理里面的ann。



万恶的maven再次出现,Roo构建出来的project是基于pom结构的。




</:property></:property>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: