IOC 反转控制 是Spring的基础,Inversion Of Control
简单说就是创建对象由以前的程序员自己new 构造方法来调用,变成了交由Spring创建对象
DI 依赖注入 Dependency Inject. 简单地说就是拿到的对象的属性,已经被注入好相关值了,直接使用即可。
IOC 简单demo: 实体类:User
package com.entity; public class User { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }Dao层:UserDao
package com.dao; public interface UserDao { //持久层方法 模拟执行对数据库的增删改查操作 public void save();//保存 public void delete();//删除 public void edit();//编辑 }Dao层实现类:UserDaoImpl
package com.daoImpl; import com.dao.UserDao; public class UserDaoImpI implements UserDao{ //保存User信息 public void save() { System.out.println("保存User信息"); } //删除User信息 public void delete() { System.out.println("删除User信息"); } //编辑User信息 public void edit() { System.out.println("编辑User信息"); } }Service层:UserService
package com.service; /** * service层 */ public interface UserSerivce { public void save(); public void delete(); public void edit(); }Service层实现类:UserServiceImpl
package com.serviceImpI; import com.dao.UserDao; import com.service.UserSerivce; public class UserServiceImpl implements UserSerivce { //直接调用Dao层的方法 private UserDao userDao; public UserDao getUserDao() { return userDao; } public void setUserDao(UserDao userDao) { this.userDao = userDao; } public void save() { userDao.save(); } public void delete() { userDao.delete(); } public void edit() { userDao.edit(); } }此时通过spring的配置文件可以实现将 UserDao 作为成员属性直接注入给UserServiceImpl,spring 配置文件如下:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <bean id="userSerivce" class="com.serviceImpI.UserServiceImpl"> <!-- 属性注入:将userDao 作为属性注入到UserService的实现接口 --> <property name="userDao" ref="userDao" ></property> </bean> <!-- 配置userDao --> <bean id="userDao" class="com.daoImpl.UserDaoImpI"></bean> </beans>控制台结果:
log4j:WARN No appenders could be found for logger (org.springframework.core.env.StandardEnvironment). log4j:WARN Please initialize the log4j system properly. 保存User信息 删除User信息 编辑User信息