使用注解实现spring IOC
注解方式
- 步骤
- 使用注解定义Bean
- 通过注解实现不同层级Bean
- @Controller :用于标注控制器类
- @Service :用于标注业务类
- @Repository :用于标注DAO类
- @Component :定义非以上所属层级的类
- 使用注解实现Bean的注入
- @Autowired //相当于xml文件配置中的:<property name="userDao" ref="userDao"/>
按类型匹配的方式为属性自动装配合适的依赖对象,
即容器会查找和属性类型相匹配的Bean组件,并自动为属性注入
可以使用@Qualifier("")指定Bean名称注入
- 需要对包含注解类的包进行扫描,代码如下,如果有多个包用逗号隔开
<context:component-scan base-package="com.lx.service,com.lx.dao"/>
Java标准注解
- 区别在于实现Bean注入的时候是通过Java本身自带的注解@Resource注解实现,
- 他是基于属性名进行匹配,如果没有找到相对应得属性名,则按照类型进行匹配
总结
使用注解主要是代替xml文件的注入,控制反转这一过程
使用注解实现spring AOP
- @Aspect:定义切面 ;非spring框架不能对类定义Bean,需手动定义
- 手动定义Bean2种方式
- xml文件中定义bean标签
- 添加@Component注解(spring会自动配置Bean);需对注解进行扫描
- 定义切点
@Pointcut("execution(* com.lx.service.impl.*.*(..))")
public void pointCut() {
}
- 或在通知注解中value属性手动添加
- 实现增强
- 增强的注解形式
抛出异常增强 | <aop:before/> | @AfterThrowing |
前置增强 | <aop:before/> | @Before |
后置增强 | <aop:after-returning/> | @AfterReturning |
环绕增强 | <aop:around/> | @Around |
最终增强 | <aop:after/> | @After |
- 最后只需要在配置文件中配置
<aop:aspectj-autoproxy/>
- 因为@Aspect并不是spring包的,需要手动指定