学习Spring,首先当然是需要了解Spring平台的核心之一IoC。
一、控制反转(IoC = Inversion of Control)和依赖注入(DI = Dependency Injection)
IoC,通俗说法就是由容器控制程序之间的关系,而非由代码直接控制;也就是控制权由程序代码转移到了外部容器,控制权的转移,即所谓的反转。
DI,即组件之间的依赖关系由容器在运行时来决定,形象的说就是由容器动态的将依赖关系注入到组件之中。依赖注入的目标并非为系统带来更多的功能,而是提升组件的复用行和可扩展性。
二、依赖注入的实现类型
1.接口注入,预先在配置文件中设定实现类的类名,动态加载实现类;
2.构造子注入,通过构造函数完成依赖关系的设定;
3.设值注入,通过setter方法完成依赖关系的设定。
接口注入模式因为具有侵略性,它要求组件与特定的接口相关联,使用被限制。而构造子注入和设值注入没有以上劣势而被广泛应用。
三、Spring Bean的封装机制
1.Bean Wrapper,它的功能很简单,就是提供一个设置JavaBean的通用方法。如:
Object obj = Class.forName("com.china.bean.User").newInstance();
BeanWrapper bw = new BeanWrapperImpl(obj);
bw.setPropertyValue("name", "CJTL");
System.out.println(bw.getPropertyValue("name"));
这样做的好处是无需在编码时指定JavaBean的实现类和属性的值,而是在配置文件中设定,就可以在运行期间动态的创建和设定其属性的值。
2.Bean Factory,负责根据配置文件创建并维护Bean实例。如一个比较完整的配置:
Boy类:
package com.csh.bean;
public class Boy {
private String name;
private int age;
private Girl myGirl;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Girl getMyGirl() {
return myGirl;
}
public void setMyGirl(Girl myGirl) {
this.myGirl = myGirl;
}
public void born() {
System.out.println("born...");
}
public void die() {
System.out.println("die...");
}
}
Girl类:
package com.csh.bean;
public class Girl {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="wxb"
class="com.csh.bean.Boy"
singleton="true"
init-method="born"
destroy-method="die"
depends-on=""
>
<property name="name">
<value>xb</value>
</property>
<property name="age">
<value>22</value>
</property>
<property name="myGirl">
<ref local="ake"/>
</property>
</bean>
<bean id="ake"
class="com.csh.bean.Girl"
>
<property name="name">
<value>kk</value>
</property>
</bean>
</beans>
测试类:
package com.csh.test;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.FileSystemResource;
import com.csh.bean.Boy;
public class Test {
public static void main(String[] args) throws Exception {
BeanFactory factory = new XmlBeanFactory(
new FileSystemResource("src/applicationContext.xml"));
Boy boy = (Boy) factory.getBean("wxb");
System.out.println(boy.getName() + boy.getAge() + boy.getMyGirl().getName());
}
}
这样即能创建Boy类的实例,并根据配置文件进行初始化和属性值的设定。
分享到:
相关推荐
NULL 博文链接:https://huangminwen.iteye.com/blog/1041298
J2EE企业级项目开发-3期(KC007) 7.2 精解Spring之IoC原理与具体使用文档.docx 学习资料 复习资料 教学资源
spring_iocspring_iocspring_iocspring_iocspring_iocspring_iocspring_iocspring_iocspring_ioc
主要为大家详细解析了Spring中IoC优点与缺点,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
模拟实现__Spring的Ioc 1、Spring主要两个作用:实例化Bean,动态装配Bean。并将所有的bean放到spring容器中,调用时从容器中取。Spring容器就是一个bean的Map:private Map, Object> beans = new HashMap, Object>...
这是俺写的第一个IoC入门实例 刚刚学的Spring
这是spring_ioc部分的内容。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。...
spring尝试实践
spring ioc指的是控制反转,IOC容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。交由Spring容器统一进行管理,从而实现松耦合
Spring的IoC容器之BeanFactory 4.1 拥有BeanFactory之后的生活 4.2 BeanFactory的对象注册与依赖绑定方式 4.3 BeanFactory的XML之旅 4.4 容器背后的秘密 4.5 小结 Spring IoC容器ApplicationContext 5.1 统一资源...
Spring IOC 技术的必备开发包,有了这些包就可以放心研究Spring IOC 技术了
Spring的IOC原理 Spring的IOC原理
spring-IOC的一些笔记心得
Spring源码分析_Spring_IOC
Spring_IOC-v(上)笔记Spring_IOC-v(上)笔记Spring_IOC-v(上)笔记Spring_IOC-v(上)笔记
以注解方式模拟Spring IoC AOP,了解Spring是如何实现的.
创建Priter类和pater类,分别代表打印机和纸张,然后利用Spring的IoC对打印机进行组装,分别实现A4纸打印和b5纸打印。
来自极客学院平台的springIoc文档
springIOC手写框架分析springIOC手写框架分析springIOC手写框架分析springIOC手写框架分析springIOC手写框架分析springIOC手写框架分析springIOC手写框架分析springIOC手写框架分析springIOC手写框架分析springIOC...
spring ioc容器初始化流程图 spring ioc容器依赖注入流程图 spring aop实现原理流程图