欢迎来到天天文库
浏览记录
ID:39468357
大小:72.50 KB
页数:5页
时间:2019-07-04
《Spring实例入门》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Spring实例入门本文结合实例理解解容器,DI,IOC,耦合,解耦等Spring所涉及的概念,同时了解Spring的最基本也是最核心的使用方法。1.Spring容器Spring容器负责对象的实例化,对象生命周期的管理,被Spring管理的对象称之为Bean。例如有Soldier类需要交由Spring容器管理,我们先编写类packagecom.hb;publicclassSoldier{privateStringname;publicStringgetName(){returnname;}publicvoidsetName(Stringname)
2、{this.name=name;}}在Spring配置文件中添加如下配置初始化Spring容器publicclassTest{publicstaticvoidmain(String[]args){ApplicationContextcontext=newClassPathXmlApplicationContext("applicationContext.xml");}}从Spring容器中取得对象实例Soldiers1=(Soldier)context.getBe
3、an("s1");Spring默认使用单例的方式创建对象。可以通过修改的配置改变成其它创建方式。这个属性为Scope,称之为作用域或生命周期,它的值为singleton(单例,默认值),prototype(每次产生一个新的实例)等。2.注入方式有setter注入,构造注入方式,接口注入(不需掌握)。建议多使用Setter注入方式。Setter注入:Soldier类中有一个属性name,如何在创建Soldier的时候使n
4、ame的值变为”RANBO”?配置如下:这样创建的Soldier对象的name属性就有值了,测试代码:publicstaticvoidmain(String[]args){ApplicationContextcontext=newClassPathXmlApplicationContext("applicationContext.xml");Soldiers1=(Soldier)context.
5、getBean("s1");System.out.println(s1.getName());}构造注入:我们先修改下Soldier类,给它添加一个构造方法:packagecom.hb;publicclassSoldier{privateStringname;publicSoldier(Stringname){this.name=name;}publicStringgetName(){returnname;}}配置如下:6、>测试结果同上。1.依赖当A对象使用了B对象的方法,A对B产生依赖,称之为A依赖B。下面的例子中Soldier类依赖HandGun类。packagecom.hb;/***士兵类*/publicclassSoldier{/***打仗*/publicvoidfight(){HandGunhandGun=newHandGun();handGun.killEnemy();}}packagecom.hb;/***手枪类*/publicclassHandGun{/***手枪杀敌*/publicvoidkill7、Enemy(){System.out.println("手枪杀敌");}}当HandGun发生变化时,必然导致Soldier必须做相应修改,同时,当Soldier需要使用OtherGun时也必须重新编写代码,导致代码重用度不高。当对象之间的依赖关系很强时(耦合),会使程序代码死板,不利于后期的维护和扩展。降低对象之间的依赖关系称之为解耦。Spring能够很好的解决这一问题。1.控制反转(InversionofControl,简称IOC)和依赖注入(DependenceInject简称DI)我们运用Spring的setter注入方式解决HandGu8、n和Soldier的耦合问题。修改Soldier的代码,将HandGun定义为Soldier的属性并提供setter方法:package
6、>测试结果同上。1.依赖当A对象使用了B对象的方法,A对B产生依赖,称之为A依赖B。下面的例子中Soldier类依赖HandGun类。packagecom.hb;/***士兵类*/publicclassSoldier{/***打仗*/publicvoidfight(){HandGunhandGun=newHandGun();handGun.killEnemy();}}packagecom.hb;/***手枪类*/publicclassHandGun{/***手枪杀敌*/publicvoidkill
7、Enemy(){System.out.println("手枪杀敌");}}当HandGun发生变化时,必然导致Soldier必须做相应修改,同时,当Soldier需要使用OtherGun时也必须重新编写代码,导致代码重用度不高。当对象之间的依赖关系很强时(耦合),会使程序代码死板,不利于后期的维护和扩展。降低对象之间的依赖关系称之为解耦。Spring能够很好的解决这一问题。1.控制反转(InversionofControl,简称IOC)和依赖注入(DependenceInject简称DI)我们运用Spring的setter注入方式解决HandGu
8、n和Soldier的耦合问题。修改Soldier的代码,将HandGun定义为Soldier的属性并提供setter方法:package
此文档下载收益归作者所有