控制反转和依赖注入
- - CSDN博客架构设计推荐文章 上篇博客简单介绍了Spring的一些优点,现在来说一下Spring这些优点实现的基础:控制反转和依赖注入. IoC(Inversion of Control),我们可以把它理解为面向对象编程的一个名词概念. 直白的说,就是:本来是你该控制的事,现在交由其他人控制,即权利或责任的反转.
上篇博客简单介绍了Spring的一些优点,现在来说一下Spring这些优点实现的基础:控制反转和依赖注入。
IoC(Inversion of Control),我们可以把它理解为面向对象编程的一个名词概念。直白的说,就是:本来是你该控制的事,现在交由其他人控制,即权利或责任的反转。在编程中,常见的实例是,A对象需要依赖B对象(在A中new一个B),本该是A控制这个过程,现在交由系统处理,这种做法的优势是A与B的耦合性降低;如果这种依赖关系可以控制,也提高了程序的灵活性。
DI(Dependency Injection),控制反转是一个概念,如何什么手段实现?依赖注入是一个靠谱的方案,依赖注入的主要实现靠的是反射和面向接口编程,常见的如:
UserDao userDao=new userDao4Mysql();依赖注入,就是把这个实例化的过程分为两步:
将使用到的userDao注入到UserManagerImpl中。
<?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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
<bean id="userDaoMysql" class="com.tgb.spring.dao.UserDao4MysqlImpl"/>
<bean id="userDaoOracle" class="com.tgb.spring.dao.UserDao4OracleImpl"/>
<bean id="userManager" class="com.tgb.spring.manager.UserManagerImpl">
<property name="userDao" ref="userDao4Mysql"/>
</bean>
</beans>
public class UserManagerImpl implements UserManager {
private UserDao userDao;
public UserManagerImpl(UserDao userDao){
this.userDao=userDao;
}
}
public class UserManagerImpl implements UserManager {
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
}
如上所见,耦合性降低同时灵活性提升:
以上说的是优点,那么缺点呢?
以上就是Spring的核心控制反转和依赖注入,下篇博客会说到Spring与Struts1的集成。