欢迎大家来到IT世界,在知识的湖畔探索吧!
如果想在工具类这种非spring管理的bean的对象中注入spring管理的bean,应该怎么做呢?
一个关键接口org.springframework.beans.factory.BeanFactoryAware
先来个官方解释
Interface to be implemented by beans that wish to be aware of their
owning {@link BeanFactory}.
欢迎大家来到IT世界,在知识的湖畔探索吧!
其实就是将这个需要注入spring管理的bean的对象交给spring管理,让它自己变成一个spring管理的 bean,然后实现这个接口,为什么不能直接注入呢?因为工具类中一般都是静态变量,和spring容器中bean的初始化时机不一样,这个今天不细说。
下边开始代码测试一波,喜欢的点个关注,持续更新!
1.配置bean
欢迎大家来到IT世界,在知识的湖畔探索吧!@Bean
public User user() {
User user = new User();
user.setId(666L);
user.setName("666name");
return user;
}
2.创建工具类
/**
* utils中获取bean
*/
public class BeanUtils implements BeanFactoryAware {
public static User user;
@Override
public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
user = beanFactory.getBean(User.class);
System.out.println(user.toString());
}
}
3.使用工具类
欢迎大家来到IT世界,在知识的湖畔探索吧!@RequestMapping("/utils")
@RestController
public class UtilsController {
@RequestMapping("/getBeanOfUtils")
public Object getBeanOfUtils() {
return BeanUtils.user.toString();
}
}
4.运行结果
运行结果
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/22281.html