基于注解的注入:就是用注解标签的方式替换掉我们xml配置文件里面bean的注册和依赖关系的描述
a:首先回顾IOC(控制反转),进行依赖注入需要做到两件事情:
1:注册类 2:描述依赖关系
b:注解的实现步骤
* 加入jar包spring-aop-4.2.1.RELEASE.jar
* 加入context约束
* 在applicationContext.xml配置文件中定义扫描需要用到的直接的包路径
* 在需要注解的bean对象前面加入注解标识符
@Component 所有地方都可以,代表<bean id = "" class = ""></bean>
定义component注解还有三种方式
@Repository 这个注解主要是声明dao的类组件
@Service 这个注解主要是声明service服务类的
@Controller 这个注解主要是声明控制类
* 用注解标识符autowire来声明依赖关系(bean的作用域默认的是单例)
@Resource java的注解,她默认以byName的方式注入,byName找不见,再用byType去匹配
@Autowire spring注解,默认是以byType的方式注入,--如果有多个实现类,她用byName的方式再去匹配,不过建议使用@Qualifier来指定需要匹配的依赖类的名称
@Autowire @Qualifier spring注解,两个一起用,指定用byName的方式
注意: 注解不需要设置set方法,但是我们还是一般写上
因为当我们在配置文件里面配置了bean的时候,而且通过配置文件描述了依赖关系,会优先使用配置,如果没有setter方法,会报异常
spring IOC总结:
Spring 的IOC(控制反转)是通过依赖注入(dependency injection)来实现的
优点:
* 大量减少对象的创建和管理,是代码层次更加清晰
* Spring 的IOC容器是轻量级的容器,没有侵入性(不依赖容器的API),不需要实现一些特殊接口
* 鼓励我们面向接口编程
* 减少了代码的耦合,将耦合的部分推到了配置文件,如果他们的关系发生了改变,只需要修改配置文件就好
* 提供了aop声明式的服务能力