【使用SSM框架开发企业级应用】Ioc

使用注解定义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

猜你喜欢

转载自blog.csdn.net/qq_41770735/article/details/82854266