【Spring】Spring容器装配Bean的三种方式
2020-07-23 09:32
127 查看
参考文献:https://www.cnblogs.com/jimisun/p/9742293.html
一、隐式的Bean发现机制和自动装配
Spring从两个角度来实现自动化装配;组件扫描(Spring自动发现应用中上下文所需要的创建的Bean),自动装配(Spring自动满足Bean之间的依赖)。
- 使用@Component将普通Java类配置成SpringBean
- 使用@Autowired(自动装配)使Spring满足Bean的依赖
在Java类中配置组件扫描
主配置类
@Configuration @ComponentScan("com.wei") public class ApplicationConfig { }
@Data @Component public class User { @Autowired private Cat cat; }
@Component public class Cat { public void shot(){ System.out.println("cat shot!!!"); } }
测试
@Test public void fun2(){ ApplicationContext applicationContext = new AnnotationConfigApplicationContext(ApplicationConfig.class); User bean = applicationContext.getBean(User.class); Cat cat = bean.getCat(); cat.shot(); }
在XML配置文件配置组件扫描
- 与java类中配置组件扫描的区别仅在applicationContext.xml文件、主配置类和测试类上。
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop https://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> <context:component-scan base-package="com.wei.pojo" /> </beans>
测试
@Test public void fun1(){ ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); User bean = applicationContext.getBean(User.class); Cat cat = bean.getCat(); cat.shot(); }
二、在Java中进行装配
同样我们可以再Spring的Java配置类中对SpringBean进行配置
- 使用 @Bean 注解将方法返回的实例对象添加到上下文中
- 在@Bean返回的实例对象中可以通过构造器注入传入相关依赖
///////////java主配置类///////////// @Configuration @ComponentScan("com.wei") public class ApplicationConfig { @Bean public Dog dog(){ return new Dog(); } } ///////////Dog 类///////////// public class Dog { public Dog(){ System.out.println("Dog shot!!!"); } } ///////////测试类///////////// @Test public void fun3(){ ApplicationContext applicationContext = new AnnotationConfigApplicationContext(ApplicationConfig.class); Dog dog = applicationContext.getBean(Dog.class); } ///////////输出结果//////////// Dog shot!!!
三、在XML中进行装配
- 对于在XML中进行配置可能是经常使用的,在以前的Spring版本中几乎都是使用XML进行配置Spring。
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring- context.xsd http://www.springframework.org/schema/aop https://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> <!-- bean注入就可用,component需要扫描 --> <context:component-scan base-package="com.wei.pojo" /> <bean id="dog" class="com.wei.pojo.Dog"></bean> </beans>
//测试类 @Test public void fun4(){ ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); Dog dog = applicationContext.getBean(Dog.class); }
四、总结
-
注意:在实际应用中如何不想被海量的标签埋没前,你应当优先使用隐式的Bean发现机制和自动装配和在Java中进行装配,最后再选择使用在XML中配置。
-
实际项目中我们通常都会选择组合使用
隐式的Bean发现机制和Java中进行装配进行组合
-
隐式的Bean发现机制和XML配置进行组合
相关文章推荐
- 第36天(就业班) spring引入、专业术语、spring六大模块、bean创建对象的细节、IOC容器、对象依赖关系、自动装配、注解方式
- Spring中装配bean的三种主要方式
- Spring IOC容器装配Bean_基于注解配置方式
- 【Spring杂烩】探讨Spring向容器注册Bean的三种方式
- Spring的三种装配Bean方式
- Spring IOC容器装配Bean_基于注解配置方式
- spring4笔记----使用装配注入合作者Bean的三种方式
- JAVAWEB开发之Spring详解之——Spring的入门以及IOC容器装配Bean(xml和注解的方式)、Spring整合web开发、整合Junit4测试
- spring装配bean的三种方式及其混合装配
- Spring的三种装配Bean的方式
- 【spring】1、三种装配bean的方式
- 关于在spring 容器初始化 bean 和销毁前所做的操作定义方式有三种
- spring 装配bean的三种方式
- Spring的三种装配Bean的方式
- Spring中装配bean的三种主要方式
- Spring的自动装配Bean的三种方式
- Spring(三):IoC容器装配Bean(xml配置方式和注解方式)
- 在spring容器中定义初始化和销毁bean前所做的操作,有三种方式
- Spring学习(四)-Bean的三种装配方式
- Spring学习-06:IOC容器装配Bean(xml配置方式)详解