使用注解定义Bean
@Component
@Repository
@Service
@Controller
使用注解实现Bean组建装配
准备需要的jar包
org.springframework.asm-3.0.5.RELEASE.jar
org.springframework.core-3.0.5.RELEASE.jar
org.springframework.beans-3.0.5.RELEASE.jar
org.springframework.context-3.0.5.RELEASE.jar
org.springframework.expression-3.0.5.RELEASE.jar
加载注解定义的Bean
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
使用java标准注解完成装配
JSR,即java规范提案,java 的版本和功能在不断的更新和扩展,JSR就是用来规范这些功能和接口的标准,已经成为java业界的一个重要标准
@resource有一个name属性,默认情况下,spring将这个属性的值解释为要注入的Bean的名称
如果没有显示的指定Bean的名称,且无法找到与默认的Bean名称匹配的Bean组件,@resource注解会由按名称查找的方式自动变为按类型匹配的方式进行装配,如果不存在,@resource注解会转而查找和属性类型想匹配的Bean组件并注入
使用注解定义切面
AspectJ简介
AspectJ是一个面向切面的框架,扩展了java语言,定义了AOP语法,能够在编译器提供代码的织入,所以它有一个专门的编译器用来生成遵守字节编码规范的Class文件
@AspectJ是AspectJ5新增的功能,需要保证所使用的JDK是5.0以上的版本,否则无法使用注解技术
Spring通过继承AspectJ实现了以注解的方式定义切面,大大减少了配置文件的工作量.此外,因为java的反射机制无法获取方法参数名,Spring还需要利用轻量级的字节码处理框架asm(已集成在Spring Core模块中)处理@Aspectj中所描述的方法参数名
【注意】必须在@afterReturning注解中通过returning属性指定该参数的名称,Spring会将目标方法的返回值复制给指定名称的参数
使用注解定义其他类型的增强
@After注解可以定义最终增强
Spring的切面配置小结
Spring在同一问题提供了多种灵活选择,反而使初学者迷惑。我们应该根据项目的具体情况做出选择:如果项目采用jdk5.0以上的可以考虑@AspectJ注解方式,减少配置的工作量;版本较低无法使用注解可以选择使用<aop:adpect>配合普通javaBean的形式
本章总结
- Spring提供了设值注入,构造注入等以来注入方式
- 使用p命名空间可以简化属性注入的配置
- Spring提供的增强处理类型包括前置增强.后置增强.一场抛出增强.环绕增强.最终增强
- 通过Sching提供形式将POJO的方法配置成切面,所用标签包括<aop:aspect>.<aop:before>.<aop:after-returning>.<aop:around>.<aop:after-throwing>.<aop:after>
- 用来定义Bean组件的注解包括@Component.@Repository.@Service@Controller
- Bean组件的装配可以通过@AutoWired.@qualifier以及@Resource实现
- 在Spring配置文件中使用<context:component-scan>元素扫描包含注解的类,完成初始化
- 使用注解方式定义切面可以简化配置工作,常用注解有@Aspect.@Before@AfterReturning@Around@AfterThowing.@After等
- 通过配置文件中添加<aop:aspectj-autoproxy>元素,就可以启用对于@AspectJ注解的支持
内容就到这,
我是陈恰恰.77