1. 什么是IoC?
IoC:Inverse of Control,控制反转。对象的创建权力由程序反转给Spring框架。
什么是DI?
DI:Dependency injection,依赖注入。在Spring框架负责创建Bean对象时,动态的将依赖对象注入到Bean组件中。
2.什么是IoC容器(Spring容器)?
Spring容器指的就是IoC容器。要想使用SpringIoC,必须要先创建Spring IoC容器。。
IoC容器就是指的Spring中Bean工厂里面的Map存储结构(存储了Bean的实例)。
注:实现了ApplicationContext接口和BeanFactory接口的工厂,可以获取到容器中具体的Bean对象,最终的底层BeanFactory都是DefaultListableBeanFactory
3.Spring IoC简单的demo(基于xml方式)
(1)创建一个简单的Maven工程,添加Spring相关依赖
(2)编写一个Spring配置文件,先添加文件头
(3)添加接口和方法
(4)编写实现类
(5)配置文件中添加bean实例的配置
(6)测试
4.实例化bean的三种方式
(1)默认无参构造函数(推荐)
(2)静态工厂
(3)实例工厂
5.依赖注入demo
(1)构造函数注入
注意,使用此方式,类中需要提供一个对应参数列表的构造函数。如下:
配置文件修改如下:
此时<constructor-arg>标签中name总用为指定参数在构造函数中的名称,value能赋的值是基本数据类型和String类型,ref能赋的值是其他bean类型,必须是在配置文件中配置过的bean
测试结果:
(2)set方法注入(基于xml)
6.IoC和DI常用的几个注解
IoC注解:
@Component 属性有value,指定bean的id,如果不指定value属性,默认bean的id是当前类的类名,首字母小写
@Controller(一般用于表现层)
@Service(业务层)
@Repository(持久层)
作用:把资源让Spring管理,相当于在XML中配置一个bean,相当于<bean id="" class="">
DI注解:
@Autowired (默认按类型装配)相当于 <property name="" ref="">
@Resource(默认按名称装配)相当于<property name="" value="">
以上这些只是最基本的一些概念和例子,具体深入的知识等研究源码后再来慢慢补充。