各位小伙伴
今天我们分享的是
spring IOC(控制反转)的
基于注解的注入 :就是用注解标签的方式来替换掉我们 xml 配置文件里面 bean 的注册和依赖关系的描述(有不清楚的小伙伴可以去看一下我们之前文章)
我们来实践一下
先来创建一个小项目吧!
我们就直接在原来的项目上进行修改了!
把 jar 包 spring-aop-4.2.1.RELEASE.jar 导入到我们的项目中,包的位置在spring-framework-4.2.1.RELEASE\libs 文件夹里面。
就是他了!
加入 context 约束,虽然我们不进行配置,但要告诉容器我们有哪些文件使用注解的方式,让容器去扫描文件。
在 appliactionContext.xml 配置里面定义扫描需要用到的直接的包路径。
后面就不用再添加别的内容了!
现在就在需要注解的 bean 对象前面加入注解标识符
@Component 所有的类上面都可以这么写,只是不规范!
规范一点的写法是:
@Repository:这个注解主要是声明 dao 的类组件
@Service:这个注解主要是声明 service 服务类
@Controller:主要是声明控制类 (springmvc/struts2 action/controller)
我们的例子中没有这边的代码,就不截图了
上面是类的声明,下面是我们的依赖关系。
@Resource java 的注解 ,默认是以 byName 方式注入,byName 找不到的话,再用 byType 去匹配
@Autowired spring 的注解,默认是以 byType 注入,-如果有多个实现类,他再用 byName 的方式去匹配
测试结果
@Qualifier spring的注解,可以指定实现的方法名称。
@Autowired @Qualifier 两个一起 用,指定用byName的方式进行匹配
@Scope bean的作用域
注意: 注解不需要设置 setter 方法 ,但是我们还是一般写上,因为当我们在配置文件里面配置了 bean 的时候 ,而且通过配置文件描述了依赖关系,会有限是用配置,如果没有setter方法,会报异常。
Spring IOC 总结
Spring 的IOC(控制反转)是通过依赖注入(dependency injection)来实现的
优点 :
减少了对象的创建和管理 ,使代码层次更加清晰。
Spring 的IOC容器是一个轻量级的容器 ,没有侵入性(不依赖容器的API) ,不需要实现一些特殊接口。
鼓励我们面向接口编程。
减少了代码的耦合,将耦合的部分推到了配置文件中 ,如果他们的关系发生了改变,只需要修改配置文件。
今天就到这里了
再见了