SpringBoot(14)—注解装配Bean
2019-06-11 22:38
1546 查看
SpringBoot(14)—注解装配Bean
SpringBoot装配Bean方式主要有两种
- 通过Java配置文件
@Bean
的方式定义Bean。 - 通过注解扫描的方式
@Component/@ComponentScan
。
一、当前项目装配Bean
创建项目名称为
create-bean。
1、@Component方式
@Component("componentBean") public class ComponentBean { private String type = "@Component实例化bean"; public String getName(String name) { return name + " ___ " + type; } }
说明注解@Component 表明这个类将被Spring IoC容器扫描装配,bean的名称为componentBean。 如果不配置这个值 ,那IoC 容器就会把类名第一个字母作为小写,其他的不变作为 Bean 名称放入到 IoC 容器中。
2、@Bean方式
1)、POJO类
public class ConfigBean { private String type = "Configuration注解生成bean实体"; public String getName(String name) { return name + " ___ " + type; } }
2)BeanConfig类
/** * @Description: 生成Bean */ @Configuration public class BeanConfig { @Bean public ConfigBean configBean() { return new ConfigBean(); } }
@Configuration代表是一个 Java 配置文件 , Spring会根据它来生成 IoC 容器去装配 Bean。
@Bean代表将 configBean方法返回的 POJO 装配到 IoC 容器中, name为Bean 的名称,如果没有配置它,则会将方法名称作为 Bean 的名称保存到 Spring IoC 容器中 。
3、测试
/** * @Description: 当前工程下的bean实体测试 */ @RestController public class BeanController { /** * 1、经典的注解引入方式 就是在@Configuration注解下生存bean */ @Autowired private ConfigBean configBean; /** * 2、通过@Component方式注入bean 这里通过构造方法引入方式(也可和同上通过@Autowired注入) */ private ComponentBean componentBean; public BeanController(ComponentBean componentBean) { this.componentBean = componentBean; } @GetMapping(path = "/bean") public String show(String name) { Map<String, String> map = new HashMap(16); map.put("ComponentBean", componentBean.getName(name)); map.put("ConfigBean", configBean.getName(name)); return JSON.toJSONString(map); } }
示例
bean实体成功!
二、装配第三方 Bean
上面介绍的Bean,在一个项目中可能不会出现什么问题,可如果你提供了一个Jar包供第三方用户使用,那么你这个jar包中的Bean,就不能被第三方加载,那么如何才能被加载呢?
创建项目名称为
third-bean。
1、通过@Bean方式
POJO实体
/** * @Description: 通过Configuration注解生成bean实体 */ @Slf4j public class ThirdConfigBean { private String type = "第三方 ThirdConfigBean注解生成bean实体"; public String getName(String name) { return name + " ___ " + type; } }
BeanConfig
@Configuration //@ComponentScan("com.jincou.third") 当前项目包名 public class BeanConfig { @Bean public ThirdConfigBean thirdConfigBean() { return new ThirdConfigBean(); } }
这个时候在将配置放在指定的文件中即可,使用者会自动加载,从而避免的代码的侵入
- 在资源目录下新建目录 META-INF
- 在 META-INF 目录下新建文件
spring.factories
- 在文件中添加
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.jincou.third.config.BeanConfig
这个时候thirdConfigBean就可以能被第三方jar使用了。
2、@Component方式
@Component public class ThirdComponentBean { private String type = "第三方ThirdComponent注解生成bean实体"; public String getName(String name) { return name + " ___ " + type; } }
说明如果是@Component方式,那么第三方jar包依然无法实例化当前Bean的,除非,在上面的BeanConfig将@ComponentScan注解打开,同时满足@ComponentScan注解能够扫描到ThirdComponentBean实体,那么久可以实例化该Bean。
3、测试
说明我创建了两个项目
create-bean和
third-bean同时third-bean当作jar被create-bean引用,这个时候测上面的Bean能否被实例化。
在create-bean项目新建ThirdBeanController
/** * @Description: 引入第三方的bean实体测试 */ @RestController public class ThirdBeanController { /** * 1、通过@Component方式注入bean */ @Autowired private ThirdComponentBean thirdComponentBean; /** * 2、经典的注解引入方式 就是在@Configuration注解下生存bean */ @Autowired private ThirdConfigBean thirdConfigBean; @GetMapping(path = "/third-bean") public String show(String name) { Map<String, String> map = new HashMap(16); map.put("ThirdComponentBean", thirdComponentBean.getName(name)); map.put("ThirdConfigBean", thirdConfigBean.getName(name)); return JSON.toJSONString(map); } }
测试如下
上面讲的可能并没有那么好理解,这边提供GitHub项目源码: https://github.com/yudiandemingzi/SpringBoot,
涉及到两个项目
create-bean和
third-bean
参考
只要自己变优秀了,其他的事情才会跟着好起来(中将2)
相关文章推荐
- Spring Boot2.x-06Spring Boot基础-使用@Conditional注解根据特定的条件装配bean
- Spring Boot2.x-04Spring Boot基础-使用注解装配bean
- spring中bean的注解装配(8)
- Spring_IOC注解方式装配Bean对象
- java spring - 自动装配Bean 注解大全
- spring、IoC控制反转和DI依赖注入入门、基于XML的Bean装配、基于注解的Bean装配
- spring实战-注解装配bean
- Spring 框架 详解 (四)------IOC装配Bean(注解方式)
- Spring学习(14)--- 基于Java类的配置Bean 之 @ImportResource & @Value 注解
- Spring基于注解装配bean
- Spring常用注解,自动扫描装配Bean
- (14)spring boot中@SpringBootApplication注解
- Spring基础篇——通过Java注解和XML配置装配bean
- Spring Bean装配之Autowired注解说明-2
- Spring常用注解,自动扫描装配Bean
- Spring 装配Bean 基于注解
- Spring常用注解,自动扫描装配Bean
- Spring(3、基于注解装配Bean)
- Spring(三):IoC容器装配Bean(xml配置方式和注解方式)
- Spring入门(Bean装配,Autowired注解)