欢迎来到天天文库
浏览记录
ID:36876815
大小:631.50 KB
页数:74页
时间:2019-05-10
《Spring的核心机制及容器》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第14章Spring的核心机制及容器14.1Spring的核心机制14.2Spring容器14.3Bean中对集合的注入14.4两种后处理器14.1Spring的核心机制14.1.1依赖注入的概念新建一个WebProject,名称为Spring_DI,为其添加Spring核心类库,步骤见13.2节的第2步。创建包“org.interfaces”,在该包中新建Person接口,代码如下:packageorg.interfaces;/**定义Person接口*/publicinterfacePerson{//接口中定义一个吃食物方法publ
2、icvoideatFood();}继续在该包中定义Food接口,代码如下:packageorg.interfaces;/**定义Food接口*/publicinterfaceFood{//在接口中定义一个吃的方法,返回吃的东西publicStringeat();}14.1.1依赖注入的概念创建包“org.interfaces.impl”,在该包中定义Person的实现类Man,代码如下:packageorg.interfaces.impl;importorg.interfaces.Food;importorg.interfaces.Pe
3、rson;/**Person接口的具体实现类*/publicclassManimplementsPerson{//定义Food接口私有属性,面向Food接口编程,而不是具体的实现类privateFoodfood;//构建setter方法,必须要有,后面会讲解为什么publicvoidsetFood(Foodfood){this.food=food;}//实现Person接口eatFood方法publicvoideatFood(){System.out.println(food.eat());}}14.1.1依赖注入的概念定义Food的一
4、个实现类Apple,代码如下:packageorg.interfaces.impl;importorg.interfaces.Food;publicclassAppleimplementsFood{publicStringeat(){return"正在吃苹果...";}}在src下编写Spring的配置文件config.xml,使用Spring的配置文件将Person实例和Food实例组织在一起,配置内容。14.1.1依赖注入的概念下面就可以编写测试类了,代码如下:packageorg.test;importorg.interfaces
5、.Person;importorg.springframework.context.ApplicationContext;importorg.springframework.context.support.FileSystemXmlApplicationContext;publicclassTest{publicstaticvoidmain(String[]args){//创建ApplicationContext对象,参数为配置文件放置的位置ApplicationContextcontext=newFileSystemXmlApplic
6、ationContext("/WebRoot/WEB-INF/classes/config.xml");//通过Personbean的id来获取bean实例,面向接口编程,因此此处强制类型转换为接口类型Personp=(Person)context.getBean("man");//直接执行Person的eatFood()方法p.eatFood();}}14.1.1依赖注入的概念运行主程序,输出结果,代码如下:正在吃苹果...在主程序中,调用了Person的eatFood()方法,该方法的方法体内需要使用Food的实例,按照通常的方式,
7、在Person实例的eatFood()方法中,应该这样实现://创建Food实例food=newApple();//获得Food实例的eat方法返回值System.out.println(food.eat());14.1.1依赖注入的概念如果需要改写Food的实现类,或者提供另一个实现类给Person实例使用,Person接口和Man实现类都无须改变,只需提供另一个Food的实现,然后对配置文件进行简单的修改即可。例如,我们现在新建另一个Food的实现类Orange,代码如下:packageorg.interfaces.impl;imp
8、ortorg.interfaces.Food;/**定义Orange类,实现Food接口*/publicclassOrangeimplementsFood{/**实现接口吃的方法*/publicString
此文档下载收益归作者所有