目录
课程内容
IOC(控制反转)
IOC介绍
IOC是什么
IOC能做什么
Spring容器管理对象
1、maven管理依赖
2、给定容器的配置文件
3、IOC容器管理对象
4、通过容器来获取对象
Spring中IOC容器介绍
课程内容
了解spring
IOC(控制反转)
DI(依赖注入)
AOP(面向切面编程)
spring和mybatis的整合
IOC(控制反转)
IOC介绍
IOC是什么
IOC是什么
IOC(Inversion of Control 即控制反转)将对象交给容器管理
考虑:谁控制谁、控制什么?为了是反转?那些方面反转?
谁控制了谁?是容器控制了对象
控制什么?主要控制了外部资源及生命周期
由容器帮我们查找并注入依赖的对象,对象只能被动的接收依赖对象,依赖对象的获取被反转了
传统程序对象依赖处理:
三个类。
UserInfo:用户信息类,属性有name,sex
User:用户类
Client:客户类,实现调用User类
//用户信息类
public class UserInfo {
private String name;
private String sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
//用户类
public class User {
private UserInfo userinfo;
public User(UserInfo userinfo){
this.userinfo = userinfo;
}
//修改用户名
public void updataName(String name ){
userinfo.setName(name);
}
//修改性别
}
public static void main(String[] args) {
//完成用户信息的修改
UserInfo userinfo = new UserInfo();
User user = new User(userinfo);
user.updataName("张三");
}
spring中提供了一种IOC容器,来控制对象的创建,无论是你创建对象,处理对象之间的依赖关系,对象的创建时间还是对象的创建数量,都是spring提供IOC容器上配置对象的信息就可以了
IOC能做什么
由IOC容器帮对象找相应的依赖思想并注入,并不是由对象主动去找
资源集中管理,实现资源的可配置和易管理
降低了使用资源双方的依赖程度,松耦合
Spring容器管理对象
1、maven管理依赖
引入spring核心依赖
4.1.7.RELEASE org.springframework spring-beans${spring.propety} org.springframework spring-core${spring.propety} org.springframework spring-context${spring.propety} org.springframework spring-expression${spring.propety}
2、给定容器的配置文件
将要交个容器的对象配置在该配置文件中,配置文件名Applicationcontext.xml
3、IOC容器管理对象
将userInfo对象交给容器管理
4、通过容器来获取对象
public static void main(String[] args) {
//获取IOC容器
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("springcontext1.xml");
//获取对象
UserInfo userInfo = (UserInfo)context.getBean("userInfo");
System.out.println(userInfo);
}
执行结果:
通过spring容器获取到了对象
总结:Spring IOC操作
1、增加一个spring配置文件
2、解析xml的配置文件
3、BeanFactory工厂类
4、在工厂类中使用反射创建bean对象
Spring中IOC容器介绍
在spring中,spring-core包模块中包含IOC技术,IOC容器主要是为了管理对象,以及对象之间的依赖关系
容器实现主要是BeanFactory接口和ApplicationContext接口,其继承关系如上图所示:
BeanFactory
是Spring IOC的最底层设计,提供了先进的配置机制,使得任何类型的对象配置成为可能。
ApplicationContext
ApplicationContext接口是继承自BeanFactory,实现了许多接口的扩展。
BeanFactory的使用和ApplicationContext类似
BeanFactory factory = new xmlBeanFactory(new ClassPathResource("context.xml"));
fatory.getBean("XXX");
BeanFactory和ApplicationContext区别在于:BeanFactory的实现是按需创建,即第一次获取Bean才创建这个Bean(按需创建),而ApplicationContext会一次性创建所有Bean。BeanFactory是ApplicationContext父接口,ApplicationContext也提供了一个额外的功能,比兔提供支持国际化、事件通知等,通常总是使用ApplicationContext,现在很少使用BeanFactory。
ApplicationContext接口常见实现类:
- ClassPathXmlApplicationContext
读取的xml配置文件放置在类路径下,优先考虑使用ClassPathXmlApplicationContext
//获取IOC容器
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("springcontext.xml");
- FileSystemXmlApplicationContext
读取的配置文件放置在文件系统路径下,则优先考虑使用FileSystemXmlApplicationContext
FileSystemXmlApplicationContext context1 = new FileSystemXmlApplicationContext("c://applacation.xml");
- XMLWebApplicationContext
需要在web环境下读取配置信息XMLWebApplicationContext



