Spring IOC与DI入门讲解
来源:互联网 发布:优化驱动器要不要开 编辑:程序博客网 时间:2024/04/29 22:49
概念
IOC:Inversion of Control 控制反转,即将生成对象的工作交给Spring容器来实现。
DI:Dependency Injection 依赖注入,将一个类需要的其他对象(即依赖)通过Spring容器注入。
—————————————————————————————————————————————————————————————————————————————
IOC:控制反转
首先,在工程的src目录下创建applicationContext.xml文件(applicationContext.xml文件通常可以放在src和WEB-INF目录下),并引入Spring的Schema验证,
该验证代码可以在xsd-config.html文件中找到(文件位于Spring开发包的docs/spring-framework-reference/html/xsd-config.html目录中)。<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"></beans>
Dao层:
接口:
public interface UserDao {public void save();}实现类:
public class UserDaoImpl implements UserDao{@Overridepublic void save() {System.out.println("持久层:添加用户...");}}Service层
接口:
public interface UserService {public void save();}实现类:
public class UserServiceImpl implements UserService{@Overridepublic void save() {System.out.println("业务层:添加用户...");UserDao userDao = new UserDaoImpl();userDao.save();}}
表现层:
public class UserServlet {public void save(){System.out.println("表现层: 添加用户 ...");}}在applicationContext.xml文件中配置bean
<bean id="userServlet" class="cn.itcast.spring.a_quickstart.UserServlet"></bean><bean id="userService" class="cn.itcast.spring.a_quickstart.UserServiceImpl"></bean><bean id="userDao" class="cn.itcast.spring.a_quickstart.UserDaoImpl"></bean>同时在UserServlet中添加获取业务层对象的代码:
public class UserServlet { public void save(){ System.out.println("表现层: 添加用户 ..."); UserService userService = new UserServiceImpl(); userService.save(); }}测试用例:
@Testpublic void regist(){ ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");UserServlet userServlet = (UserServlet) applicationContext.getBean("userServlet"); userServlet.save();}输出结果:
至此,IOC的实例讲解完毕,通过IOC将生成的对象的操作交给Spring容器来完成,如果修改了代码或接口的实现,只需要修改配置文件,实现了松耦合。但是到这里并没有完成DI的操作。
—————————————————————————————————————————————————————————————————————————————
DI:依赖注入
修改UserServlet类添加userService成员变量,并生成set方法, 代码如下:
public class UserServlet {private UserService userService;public void setUserService(UserService userService) {this.userService = userService;}public void save(){System.out.println("表现层: 添加用户 ...");userService.save();}}修改applicationContext.xml配置,代码如下:
<bean id="userServlet" class="cn.itcast.spring.a_quickstart.UserServlet"> <property name="userService" ref="userService" /> </bean> <bean id="userService" class="cn.itcast.spring.a_quickstart.UserServiceImpl"></bean> <bean id="userDao" class="cn.itcast.spring.a_quickstart.UserDaoImpl"></bean><property>标签中的name属性对应对象中的setXXX方法,代表对象中含有某个属性,ref属性代表引用的另一个Bean的id。
当返回UserServlet时,同时提供依赖的UserService对象。
依赖注入配置完成。
0 0
- Spring IOC与DI入门讲解
- spring 入门01--IoC与DI
- spring IoC与DI
- Spring IoC与DI
- Spring入门--控制反转(IOC)与依赖注入(DI)
- Spring入门之IOC与DI个人总结
- Spring入门--控制反转(IOC)与依赖注入(DI)
- spring的IOC与DI
- 【Spring学习】IoC与DI
- spring 的ioc与di
- spring的IoC与DI
- spring ioc 与 di 原理
- Spring之IOC与DI
- spring入门案例(IoC和DI)
- Spring基础入门之Ioc、DI、AOP
- spring注解入门之IOC,DI
- Spring教程系列(一)-IoC与DI
- 戏说Spring里的【IoC与DI】
- HDU 5313 BestCoder 1st Anniversary ($) 1004 Bipartite Graph
- Android之SurfaceView
- 两个日期之间相隔的天数
- C++基础---函数的参数
- 每天一个linux命令目录
- Spring IOC与DI入门讲解
- java中的序列化和反序列化学习笔记
- Lintcode(198) Permutation Index II
- [第1章]数据:CoreData的简单使用
- 黑马程序员--String 和基本数据包装类
- Zookeeper 学习笔记(一)
- Collapsing margins(外边距合并)
- 64位windows系统 int类型内存大小和课本中的差异
- 第17章:特殊类成员