IOC:Inverse of Control
,控制反转,指的是对象的创建权反转(交给)Spring框架,其作用是实现了程序的解耦合
面向接口编程,资源创建的权力由App决定,获取资源的时候需要new
一个新对象,在切换底层类的实现的时候,需要修改程序的源码
将控制权移交给Spring,通过工厂+反射+配置文件来实现解耦合
public interface UserService {
public void sayHello();
}
public class UserServiceImpl implements UserService {
public void sayHello(){
System.out.println("Demo01: Hello Spring ");
}
}
在applicationContest.xml
中使用bean
标签
public class Demo01Test {
/**
* @Auther wangfei
*原来的方法
*/
@org.junit.Test
public void run1(){
//创建实现类
UserServiceImpl userService=new UserServiceImpl();
userService.sayHello();
}
/**
* @Auther wangfei
* Spring-IoC
*/
@org.junit.Test
public void run2(){
// 创建工厂,加载核心配置文件
ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
// 从工厂中获得对象,与在XML bean 标签使用的 id 一致
UserServiceImpl userService=(UserServiceImpl) applicationContext.getBean("userService");
// 调用对象的方法执行
userService.sayHello();
}
}
Bean
标签Bean
配置id
属性:Bean标签的名字,在约束中唯一,取值要求:必须以字母开始,不能出现特殊字符name
属性:Bean标签的名字,没有采用ID的约束class
属性:Bean对象的全路径scope
属性:scope
属性代表Bean的作用范围
singleton
:单例(默认)prototype
:多例request
:在Web项目中,每次HTTP请求都会创建一个新的Beansession
:在Web项目中,同一个HTTP Session共享一个Beanglobalsession
:在Web项目中,多服务器间的sessioninit-method
:当Bean被载入到容器的时候调用init-method
属性指定的方法destroy-method
:当Bean从容器中删除的时候调用destroy-method
属性指定的方法Bean
之间的关系继承
Spring允许定义一个父
,子
将自动继承父
的配置信息
Spring允许用户通过depends-on
属性显示指定Bean
前置依赖的Bean
,前置依赖的Bean
会在本Bean
实例化之前就创建好,例如:保证manager
在实例化之前,sysInit
就已经初始化完成
假如一个
要引用另一个
的id
属性值,则可以直接配置:
一般情况下,在一个Bean
中引用另一个Bean
的id
是希望在运行期通过getBean(beanName)
方法获取对应的Bean
,但是由于Spring并不会在容器启动的时候对属性配置进行特殊的检查,因此即使拼写错误,也需要等到具体调用的时候才会发现。可以同过Spring的
元素标签来优化配置
下一篇:Spring学习笔记[2]之DI[依赖注入] https://blog.csdn.net/Rabbit_Judy/article/details/81842413