DI(依赖注入)功能使用注解annotation实现

spring的控制反转:由spring创建对象,控制权的转移,DI(依赖注入)是最明显的特征。

**MVC模式常用的注解**:
<!-- 
	加载配置文件之后,扫描com.zhiyou100下的所有子包,当在包中扫描到类带有注解,那么管理该类
    @Repository  用在MVC中的Dao层
    @Service 	  用在MVC中的服务层
    @Controller  控制,不能使用Component替换
    @Component	 如果该类不好划分范围,但是需要交给spring管理。可以替换Repository和Service
    这些注解应使用在功能类的头部
    
	注解的使用:Annotation
	使用位置
	1、属性中 限定属性的类型和作用等
	2、方法上 对方法进行限定
	3、用在类上 对类进行限定,声明类的作用
	使用时间:
	1、源代码	2、编译期	3、运行时
-->

1、在spring.xml中配置

<!-- 
	扫面这个包,或者子包下的类。
	如果扫描到头部有注解@Component,将此类初始化
	初始化时默认调用无参的构造方法,并且对象名默认是类名首字母小写
-->
 <context:component-scan base-package="com.aaa" />

2、在功能类的头部加上注解

AndroidMPChart依赖 annotation依赖_依赖注入DI


这里UserServiceImpl中有一个属性userDaoImpl还没有赋值

(1)首先找到相应的类,头部加上@Repository,实例化一个对象

AndroidMPChart依赖 annotation依赖_依赖注入DI_02


(2)在对应的set方法头部加上@AutoWired,在bean集合中找合适的对象赋值

i.首先按照byName

ii.byName如果找不到,按照byType

有两种方式可以选择,一个是加到set方法的头部,

AndroidMPChart依赖 annotation依赖_依赖注入DI_03


一个是加到属性的头部,推荐加到属性的头部,一般项目开发中属性,只在本类中使用

AndroidMPChart依赖 annotation依赖_spring控制反转_04


(3)@Resource作为了解,一般使用@AutoWired3、测试

AndroidMPChart依赖 annotation依赖_AndroidMPChart依赖_05

4、使用@Scope设置单例模式还是原型模式

AndroidMPChart依赖 annotation依赖_注解实现_06

5、使用@PostConstruct,@PreDestroy来了解生命周期的问题

AndroidMPChart依赖 annotation依赖_依赖注入DI_07

最后,到底是用xml还是使用注解annotation
a、注解开发相对简单,但它只能写在java源文件上。
b、使用相对复杂,适用于任何情况
c、如果对象所在的类是在jar文件中,只能使用xml配置引用。如果是自己定义的类,使用xml或者annotation自己随意
d、开发中spring,一般注解和xml结合起来使用,视情况而定。