Spring boot创建bean并注入到spring 中
来源:互联网 发布:网站数据库泄露 2017 编辑:程序博客网 时间:2024/06/08 07:33
本文转自http://412887952-qq-com.iteye.com/blog/2301642
平时开发时,可能遇到自定义的一个bean需要注入spring 中进行管理,spring boot提供了一个接口,改接口就是BeanDefinitionRegistryPostProcessor,提供了进行注册bean的方法;详细使用如下:
定义一个需要注入到spring 中的bean:
public class ShanhyA{
public void display() {
System.out.println("dispalyA");
}
}
bean注入到spring核心:定义BeanDefinitionRegistryPostProcessor接口实现类:
/**
* 实例化bean并注册到spring中进行管理
* @author 红薯
*
*/
@Configuration
public class MyBeanDefinitionRegistryPostProcessor implements BeanDefinitionRegistryPostProcessor{
//bean的名称生成器
private BeanNameGenerator beanNameGenerator =new AnnotationBeanNameGenerator();
/**
* 先执行postProcessBeanDefinitionRegistry方法
* 在执行postProcessBeanFactory方法
*/
@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory arg0)
throws BeansException {
System.out.println("postProcessBeanFactory");
}
@Override
public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry)
throws BeansException {
//进行注入bean
registerBean(registry, "ShanyA", ShanhyA.class);
registerBean(registry, "SharyB", ShanHyB.class);
System.out.println("postProcessBeanDefinitionRegistry");
}
/**
* 公共注册的方法
* @param registry
* @param name
* @param beanClass
*/
private void registerBean(BeanDefinitionRegistry registry,String name,Class<?> beanClass){
AnnotatedBeanDefinition annotatedBeanDefinition = new AnnotatedGenericBeanDefinition(beanClass);
//可以自动生成name
String beanName = (name != null?name:this.beanNameGenerator.generateBeanName(annotatedBeanDefinition, registry));
//bean注册的holer类.
BeanDefinitionHolder beanDefinitionHolder = new BeanDefinitionHolder(annotatedBeanDefinition, beanName);
//使用bean注册工具类进行注册.
BeanDefinitionReaderUtils.registerBeanDefinition(beanDefinitionHolder, registry);
}
}
测试类:
在使用@Resource 或者 @Autowired并指定@Qualifier 也可以进行bean的注入
@RestController
public class TestController {
@Resource(name="ShanyA")
private ShanhyA shanhyA;
//或者是下面
@Autowired
@Qualifier("ShanyA")
private ShanHyB shanHyB;
@RequestMapping("test")
@ResponseBody
public int testchange(){
shanhyA.display();
shanHyB.display();
return 1;
}
}
注意:不管是@Resource(name="xxx")或者是@Autowrid@Qualifier("XXX"),xxx所指向的是核心类进行注入bean的name名称,否则是找不到注入的bean的
- Spring boot创建bean并注入到spring 中
- Spring Boot 使用Java代码创建Bean并注册到Spring中
- Spring Boot 使用Java代码创建Bean并注册到Spring中
- Spring Boot 使用Java代码创建Bean并注册到Spring中
- Spring Boot 使用Java代码创建Bean并注册到Spring中
- 41. Spring Boot 使用Java代码创建Bean并注册到Spring中【从零开始学Spring Boot】
- 41. Spring Boot 使用Java代码创建Bean并注册到Spring中【从零开始学Spring Boot】
- Spring boot将配置属性注入到bean类中
- Spring boot将配置属性注入到bean类中
- Spring boot 中filter注入bean
- Spring-boot中Filter注入bean
- java创建bean并注册到spring中
- spring boot Filter 注入bean
- Spring boot 手动注入bean
- 解决spring-boot 中 bean无法注入的问题
- 已经解决 spring boot 拦截器中注入bean
- Spring学习笔记 创建自动扫描并注入的bean
- Spring Boot 动态创建Bean
- POJ[2796]Feel Good 单调栈
- Android Toast显示异常的问题
- STM8 LED
- 普通链表 2
- w78cms v1.1版本getshell过程
- Spring boot创建bean并注入到spring 中
- jquery.validator 报错 validator.settings[eventType].call is not a function
- ZOJ 3963 STL + 贪心
- RANSAC算法应用
- 第十二章:IO流
- json格式与SpringMvc接收json列表的问题
- 设计模式之禅笔记--面向对象设计六大原则之六
- css的那些事儿--对一些样式额外的理解
- 【leetcode】第63题 Unique Paths II 题目+解析+JAVA代码