Spring-DI.doc

上传人:sk****8 文档编号:3534852 上传时间:2019-06-02 格式:DOC 页数:10 大小:95KB
下载 相关 举报
Spring-DI.doc_第1页
第1页 / 共10页
Spring-DI.doc_第2页
第2页 / 共10页
Spring-DI.doc_第3页
第3页 / 共10页
Spring-DI.doc_第4页
第4页 / 共10页
Spring-DI.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

1、Spring DIMade by Michael.S注入方法 -21.Setter 注入 -22.Constructor 注入 -23.接口注入(了解) -2简单属性注入 -3Bean 的声明周期 -31.Sigleton -32.Prototype-3集合注入 -3AutoWire-4byName -4byType -5LifeCycle-5lazy-init-5init-method 和 destory-method -5Annotation -6Autowire public void setStudent(Student student)this.student = student;类

2、 StudentService会根据自己类中局部变量的名字(student)在 beans.xml中查找名字一样的bean(student),然后进行装配。byType根据类型来进行装配注意:如果在 beans.xml中有两个是同一个类型的( 例如都是 Student)类型的 bean,就会报错。注意:byName 和 byType可以写在 标签上,就对所有的 bean进行auto-wire。在 中的 autowire=”default” 就是依据中的 default-autowire设置。LifeCyclelazy-init若不加,一旦 ApplicationContext new 出来,所

3、有的 bean就都 new出来;加上了,当getBean()的时候才会初始化。注意:也可以在 beans中设置init-method和 destory-method初始化的时候调用 init,容器关闭的时候调用 destoryComment Mike2: 好像只能用ApplicationContext,用 BeanFactory会抛出异常(不清楚是什么原因,有知道的情联系我) 。注意:一般非 web程序,需要 ClassPathXmlApplicationContext.destory( )才能调用 destory.顺序还是先 new 这个 bean,然后再调用 init方法,最后执行 des

4、tory方法。如果 scope是 sigleton那么就算是两个 bean对象也只会调用一次 init;但是如果 scope是prototype, 那么就会调用两次 init。AnnotationAutowire 可以在 setter方法上面加Autowired public void setStudentDao (StudentDao studentDao)this. studentDao = studentDao;可以在构造方法上面加Autowired public StudentService(StudentDao studentDao)this. studentDao = studen

5、tDao;可以在普通方法上面加Autowiredpublic void addStudent(Student student)System.out.println(student.getName();2.DTD BEAN 的 xml 文件Xml 的文件头不变,只需要添加即可。而不需要添加。因为 的用途就是配置了AutowiredAnnotationBeanPostProcessor, CommonAnnotationBeanPostProcessor,PersistenceAnnotationBeanPostProcessorRequiredAnnotationBeanPostProcesso

6、r注意:如果autowire默认是byType,如果xml 文件中有两个是同样的类型需要被注入(用非 Annotation法会抛出异常) ,这里需要在参数上面添加QualifierAutowired public void setStudentDao (Qualifier(“student2“) StudentDao studentDao)注意:Qualifier(“student2“ )中的 “student2“是可以在xml的bean中配置的,或者不用在bean中配置 qualifire,默认与name ,id相同。注意:可以设置Autowired(required=false),即表示不

7、是必须要进行织入,如果没有响应的不会抛出异常Resource和 autowire 结果差不多,推荐使用 Resource,可以在局部变量和 setter 方法上面进行ResourceResource(name=“student2“)public void addUser(Student student)默认是 byName,找不到的时候再 byType,可以用(name=”student2”)来指定用哪一个同类型的 bean。Component使用Component 能够在 xml 文件中不配置任何 bean1.在 xml 文件中添加其中 base-package 指的是从哪个包中找你要的 b

8、ean这样就可以将 xml 文件中的 bean 都删除掉2.在 bean 所代表的类上面加上ComponentComponentpublic class Student3.在需要这个 bean 的地方可以用Resource 进行注入Resourcepublic void addUser(Student student)完成!注意:一般推荐在Component 上面加上 name:Component(“student“ ),然后再Resource(name=“student“),这样能够更加清楚、准确地进行定位。提示:也可以在xml文件中删除studentService 的bean,在StudentService的类上加上Component(“studentService“) ,最后在main 方法中依然使用context.getBean(“studentService”);注意:1.可以在Component 上面添加Scope(“prototype“)来指定 bean 的范围(prototype / sigleton)2.在方法上面加PostConstruct 可以指定 bean 的 init 方法;在方法上面加PreDestroy 可以指定 bean 的 destory 方法。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 实用文档资料库 > 策划方案

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。