2、 利用利用java的反射机制调用属性的的反射机制调用属性的 setter方法赋值方法赋值
3、 在客户端利用在客户端利用context.getBean方法把方法把spring容器中的一个对象获取了。容器中的一个对象获取了。
4.所以在写一个所以在写一个 javabean的时候,应该提供属性的的时候,应该提供属性的 setter方法,默认的构造器,带参的构造器方法,默认的构造器,带参的构造器
注解注解
概念:1.用来解释说明的
2.注解必须作用在类的某一部分
3.注解的作用域范围(java,class,jvm)
4.注解解析器
自定义的注解
注解解析器
Spring的注解
在spring配置文件中
说明:1.启动spring容器
2.spring容器内部创建了两个对象person和student
3.当spring容器解析到
启动依赖注入的注解解析器
4.spring容器在容器中查找所有的bean
5.看哪些bean的属性上是否有Resource注解
6.如果属性上有该注解,再检查是否有name属性
7.如果没有name属性,则会把该注解标注的属性的名称获取到和spring容器中的id做匹配,如果匹配成功,则赋值,如果
匹配不成功,则按照类型进行匹配,如果匹配成功,则赋值,如果匹配不成功,则报错
8.如果有那么属性,则把name属性的值解析出来和spring容器中的id做匹配,如果匹配成功则赋值,不成功则报错
9. 从上面可以看出注解的效率比较低,xml效率比较高,注解写起来比较简单,xml写起来比较复杂
spring容器中的注解
按照类型匹配
@Autowried //按照类型匹配
按照ID匹配
@Autowried //按照类型匹配
@Qualifier("student") //按照id进行匹配
注解只能应用于引用类型
IOC和DI的意义
案例1
求需:编写一个文档管理系统,在文档有如下的结构
1.Documentinterface
readDocument
writeDocument
2.WordDocument是Document的实现类
readDocument
writeDocument
3.ExcelDocument
readDocument
writeDocument
4.PDFDocument
readDocment