Spring框架的概念,Spring中i的oc操作,Spring的工作原理
一、Spring框架的概念
Spring是一个开源容器框架,可以接管web层,业务层,dao层,持久层的组件,并且可以配置各种bean,和维护bean与bean之间的关系。其核心就是控制反转(IOC),和面向切面(AOP),简单的说就是一个分层的轻量级开源框架。
二、Spring中的Ioc
IOC:(全称:Inverse Of Control ),控制反转容器主动将资源推送给它所管理的组件,组件所做的是选择一种合理的方式接受资源。
简单的理解:把创建对象和维护之间的关系的权利由程序中转移到Spring容器的配置文件中。
三、Spring框架原理
1.加入依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
2.在applicationContext.xml中声明bean
<bean id="userDao" class="com.hxci.ioc.dao.UserDaoImpl"/>
<bean id="userService" class="com.hxci.ioc.service.UserServiceImpl">
<property name="userDao" ref="userDao"/>
</bean>
3.text的测试类
//Ioc
public class TextIoC {
public static void main(String[] args) {
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
UserDao userDao = (UserDao) ac.getBean("userDao");
userDao.say();
}
}
//DI
public class TextDI {
public static void main(String[] args) {
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
UserService userService = (UserService) ac.getBean("userService");
userService.say();
}
}
总结:
1、依赖注入发生的时间
2、SimpleInstantiationStrategy类使用默认的无参构造方法创建Bean实例化对象
3、BeanDefinitionValueResolver解析属性值
4、createBeanInstance方法创建Bean的java实例对象
5、AbstractAutowireCapableBeanFactory创建Bean实例对象
6、populateBean方法对Bean属性的依赖注入
7、AbstractBeanFactory通过getBean向IoC容器获取被管理的Bean