IoC和DI控制反转依赖注入
控制反转:不再通过new来创建而是直接从IoC容器获得
那么Spring IoC容器中的对象是什么时候创建的?
在早期的Spring中,主要通过XML的方式来定义Bean,Spring会解析XML文件,把定义的Bean装载到IoC容器中
依赖注入:IoC容器运行期间,动态地把某种依赖关系注入组件中
在Spring的配置文件中描述Bean之间的依赖关系,IoC容器在解析该配置文件的时候会根据Bean之间的依赖关系进行注入,这个过程就是依赖注入
实现依赖注入的方法有三种,分别是接口注入、构造方法注入和setter方式注入,不过现在都采用@Autowired、@Inject和@Resource注入
Bean装配方式的升级
- XML配置形式的变化
在早期Speing中,我们会基于XML配置文件来描述Bean及Bean的装配关系 <?xml version ="1.0" encoding="utf-8"> <beans xmlns="http://www.w3…………> <!--bean的描述--> </beans>
-
使用JavaConfig形式之后,只需要使用@Configuration注解即可,它等同于XML的装配形式
@Configuration
public class SpringConfigClass{
//bean的描述
}
Bean装载方式的变化
- 基于XML形式的装载方式
<bean id="beanDefine" class="com.gupaoedu.spring.BeanDefine"/>
-
基于JavaConfig的配置形式,可以通过@Bean注解来将一个对象注入IoC容器中,默认情况下采用方法名称作为Bean的id。
@Configuration public class SpringConfigClass{ @Bean public BeanDefine beandefine(){ return new BeanDefine(); }
Bean装配与Bean装载:
-
Bean装配是配置方式:XML、JavaConfig等
-
Bean装载就是把Bean注入到IoC容器中
@Bean可修饰方法,生成对象的Bean对象注入到IoC容器中
@Repository、@Controller、@Component、@Service等注解修饰的类会生成对象的Bean对象注入到IoC容器中