10-20 Spring框架(二)—— IoC核心
一、概念
IOC(控制反转)就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部的容器负责,这样控制权就由应用转移到外部容器,控制权的转移就是所谓的反转。
控制权转移带来的好处就是降低了业务对象之间的依赖程度(低耦合,高内聚)
二、DI(依赖注入)
DI(Dependency Injection,依赖注入)可以向某个对象动态的注入它所依赖的其他对象
依赖注入的方式
1.构造器注入
2.方法注入
3.接口注入
注意:Spring的IOC容器仅支持构造器和方法注入
三、IOC容器
Spring IOC容器是指实现IOC(控制反转)和DI(依赖注入)概念的一个Spring组件,开发者使用IOC容器可以获得IOC/DI带来的降低耦合度和简化开发的特性
3.1 Bean
Spring 中使用 Bean 来表示应用组件,一个 Bean 组件可以是任何形式的简单 Java 类实例,Spring 中使用 IoC 容器来管理 Bean 的生命周期(Bean 的创建和销毁)
3.2 BeanFactory(Bean工厂)
1.BeanFactory是Spring框架最核心的接口,它提供了高级的IOC的配置机制;BeanFactory使管理不同类型的java对象成为可能。
2.BeanFactory是Spring框架 的基础设施,属于底层封装组件,专供Spring框架内部使用。
3.3 ApplicationContext(应用上下文)
ApplicationContext是建立zaiBeanfactory基础之上,提供了更多的面向应用的功能。一般称beanfactory为IOC容器,而称ApplicationContext为应用上下文
ApplicationContext面向Spring框架的开发者,属于上乘封装组件,专供开发者使用
通过ApplicationContext应用方法上下文实例调用其getBean()从IOC容器中即可获得Bean对象实例。
3.4 Spring有三种启动IOC容器的方式
1.classpathXMLApplicationContext(相对路径)
ApplicationContext ctx = new ClassPathxmlApplicationComtext(“包路径/beans.xml”)
2.fileSystemXMLApplicationContext(绝对路径)
文件路径/beans.xml
3.XMLwebApplicationContext(web配置路径)
四、装配bean
装配 Bean 是指在 Spring IoC 容器中创建 Bean 组件和建立 Bean 组件之间的依赖关系的过程,即实现 IoC(控制反转)和 DI(依赖注入)。
Spring 支持三种装配 Bean 的方式:
基于 XML 配置装配 Bean
基于注解装配 Bean
基于 Java 类装配 Bean
4.1开启注解
<!--Spring IoC 容器需要在 Spring 配置中开启注解(默认禁用注解)--> <context:annotation-config /> <!--Spring IoC 容器需要自动检测 Bean(扫描 Java 类中 Bean 组件) --> <context:component-scan packages=“包路径”/>
4.2定义Bean组件注解(ioc)
@Component
标识java类为Spring Bean组件(通用注解)
@Controller
标识三层架构中表现层的java类Spring Bean组件
@Service
标识三层架构中业务逻辑层的java类Spring Bean组件
@Repository
标识三层架构中数据访问层或持久层的java类Spring Bean组件
4.3 Bean组件依赖注入注解
@Autowired
可以用于标注setter方法
可以用于标注构造器
可以用于直接标注属性(常用)
@Resource
使用与@Autowired注解相同
@Qualifier
明确指定需要自动装配的Bean组件