更新时间:2018-07-24 来源:黑马程序员 浏览量:
由我们自己实例化的对象交给spring容器来实始化。这时对象的初始化的权利就会反转。
DI
dependency injection 依赖注入
在spring框架负责创建Bean对象时,动态将依赖对象注入到Bean组件
IOC/DI区别
IOC 控制反转,是指对象实例化权利由spring容器来管理
DI 依赖注入 在spring创建对象的过程中,对象所依赖的属性通过配置注入对象中。
Spring Bean基本步骤
1.导入相关jar包
spring-beans-4.2.4.RELEASE.jar
spring-context-4.2.4.RELEASE.jar
spring-core-4.2.4.RELEASE.jar
spring-expression-4.2.4.RELEASE.jar
2.导入相关日志包
commons-logging-1.2.jar
log4j-1.2.16.jar
3.在项目的src目录下创建applicationContext.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN"
"http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<bean id="userService" class="com.b3a4a.ioc.UserServiceImpl">
<!-- 通过依赖注入将cnB3a4a这个值注到实例对象的info属性中 -->
<property name="info" value="cnB3a4a"></property>
</bean>
</beans>
注意:
<bean></bean>标签注意事项
在开发中可以使用id或name
id它遵守xml规范,名称中不能包含特殊符号
name它是为了更好的扩展,在name中可以包含一些特殊符号,例如"_"
4.创建接口(IUserService)和实现类(UserServiceImpl)
public interface IUserService {
public void hello();
}
public class UserServiceImpl implements IUserService {
private String info;
@Override
public void hello() {
System.out.println("hello " + info);
}
//省略get/set方法
......
}
5.获取对象实例
@Test
public void test(){
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
IUserService service = (IUserService) applicationContext.getBean("userService");
service.sayHello();
}
上面就是一个基本的使用步骤了,但是这个只是一个最基本的入门,那么接下来咱们则开始给大家一点点的引入
首先,大家需要明确一个问题,那就是我们这个Spring Bean这块的作用是什么?
很简单,就是我们相关对象以前是通过自己new 对象的形式来创建的,现在呢,则改为让框架统一对咱们的对象进行管理.所以咱们先来看下在Spring中,我们的对象究竟是有谁来创建的.当然.说简单点,其实底层实现起来是通过 解析xml配置文件+反射+工厂模式来实现的, 而我们在使用的过程中,我们真正需要了解的就是所谓的对象是通过哪些工厂来实现的呢?
1)BeanFactory
2)ApplicationContext
3)ClassPathXmlApplicationContext
4)FileSystemXmlApplicationContext
5)WebApplicationContext
他们之间的关系
BeanFactory(根接口) --> ApplicationContext(子接口)
至于ClassPathXmlApplicationContext,FileSystemXmlApplicationContext,WebApplicationContext则是一个个具体的实现类,当然这里先和大家说声,真实开发中都是使用
WebApplicationContext来实例化咱们的spring bean容器,但是这个工厂我们不需要自己去创建,通过一些配置,我们就能让这个对象在咱们项目启动的时候自动初始化~
创建工厂的方式
a)通过BeanFactory来获取
BeanFactory factory = new XmlBeanFactory(new ClassPathResource("applicationContext.xml"));
b)通过ClassPathXmlApplicationContext来获取
ApplicationContext factory = new ClassPathXmlApplicationContext("applicationContext.xml");
c)通过FileSystemXmlApplicationContext来获取
ApplicationContext factory = new FileSystemXmlApplicationContext("src/applicationContext.xml");
通过工厂获取实例对象
IBean bean = (IBean) factory.getBean("bean");
但是这里有一个小小的知识点需要告诉大家,BeanFactory是延迟加载,ApplicationContext是加载配置文件的时候加载
ok.那么到此为止,咱们对Springbean这块有了个基本认识,下次的话就给大家去聊下如何玩转ioc和di(xml和注解的方式)