资源预览内容
第1页 / 共19页
第2页 / 共19页
第3页 / 共19页
第4页 / 共19页
第5页 / 共19页
第6页 / 共19页
第7页 / 共19页
第8页 / 共19页
第9页 / 共19页
第10页 / 共19页
亲,该文档总共19页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
Spring,2,选择Spring,涵盖了应用系统开发所涉及的大多数技术范畴最能提高生产力的技术,也就是最有价值的技术。,3,Spring进阶,IOC(控制反转),有时也叫DI(依赖注入) a、控制反转:控制权的转移,即控制权由应用代码中转到了外部容器。 b、依赖注入:组件之间的依赖关系由容器在运行期决定,即由容器动态的将某种依赖关系注入到组件之中。,4,考虑下列情形,公司招聘,是老板亲自去选拔、任命销售人员 还是老板下一个命令,让手下的人把这件事办妥了,5,Spring体验,public class HelloImpl implements Hello private Message msg;public Message getMsg() return msg; public void setMsg(Message msg) this.msg = msg; public String sayHello(String name) return this.msg.getMsg() + “ “ + name; ,HelloImpl这个类需要 用到Message类 那么, 是由HelloImpl自己 实例化Message类呢 还是最好有人把 Message类实例化 好了,给它送过来呢,6,实现注入的步骤,A.在配置文件中声明好要注入的类,要注入的类定义,7,B.选择注入方式常用的注入的方式有两种: 构造子注入 设值注入,注入方式,8,构造子注入,public class HelloImpl implements Hello private Message msg;public HelloImpl(Message msg) this.msg = msg; ,被注入的属性 由Spring注入,9,构造子注入的优势,避免了繁琐的setter方法的编写,所有依赖关系均在构造函数中设定,依赖关系集中呈现更加易读。 由于没有setter方法,依赖关系在构造时由容器一次性设定,因此组件在被创建之后即处于相对“不变”的稳定状态,无需担心上层代码在调用过程中执行setter方法对组件依赖关系产生破坏。,10,设值注入,public class HelloImpl implements Hello private Message msg;public void setMsg(Message msg) this.msg = msg; ,被注入的属性 由Spring注入,11,设值注入的优势,如果依赖(或继承)关系较为复杂,那么构造注入模式的构造函数会相当庞大,此时设置会更为简洁。 通过SETTER方法设定依赖关系,对于习惯传统JavaBean开发的程序员而言更加直观。,12,C.测试,BeanFactory factory = new XmlBeanFactory(resource); Hello hello = (Hello) factory.getBean(“hello1“); hello.sayHello(“XX公司“);,public String sayHello(String name) return this.msg.getMsg() + “ “ + name; ,msg属性的值在使用前 已经在getBean()的 过程中被注入好了,13,Spring Bean封装机制,引入了JAVA的反射机制 核心组件BeanFactory、BeanWrappter ApplicationContext、Web Context,14,BeanWrappter,Object obj = Class.forName(“com.test.Message“).newInstance(); BeanWrapper bw = new BeanWrapperImpl(obj); bw.setPropertyValue(“msg”, “XX公司“);,15,BeanFactory,BeanFactory factory = new XmlBeanFactory(resource); Hello hello = (Hello) factory.getBean(“hello1“); hello.sayHello(“Spring“);,16,ApplicationContext,ApplicationContext ac = new FileSystemXmlApplicationContext(“bean.xml“);HelloImpl hlmp = (HelloImpl)ac.getBean(“hello1“);hlmp.sayHello(“XX公司“);,17,Web Context,对于Web应用,Spring提供了可配置的ApplicationContext加载机制 加载器:ContextLoaderListener和ContextLoaderServlet。,18,Web Context,web.xml中增加,19,THANKS,
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号