spring引发的一些概念的理解

本文详细介绍了Spring框架的核心模块及其功能,包括依赖注入、面向切面编程、Web集成等,并对比了面向对象编程与面向切面编程的设计思想。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 简单来说,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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

huangleijay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值