博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【SpringBoot】在IOC之外的类中使用IOC内部的Bean
阅读量:5855 次
发布时间:2019-06-19

本文共 2247 字,大约阅读时间需要 7 分钟。

某些时候,某些类是不归IOC管的,如我们的一些Util,如何使用IOC中的Bean?

 

1、写一个SpringUtil类,该类用于操纵Spring的ApplicationContext

@Component的注解是需要的,该Util是要被Spring管理的。
@Componentpublic class SpringUtil implements ApplicationContextAware{    private static ApplicationContext applicationContext;    @Override    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException    {        if (SpringUtil.applicationContext == null)        {            SpringUtil.applicationContext = applicationContext;        }    }    public static ApplicationContext getApplicationContext()    {        return applicationContext;    }    public static Object getBean(String name)    {        return getApplicationContext().getBean(name);    }    public static 
T getBean(Class
clazz) { return getApplicationContext().getBean(clazz); } public static
T getBean(String name, Class
clazz) { return getApplicationContext().getBean(name, clazz); }}

2、通过@Bean注解,返回一个Bean;

@Component@Transactionalpublic class SysParamBusiness{    @Autowired    private SysParamDao sysParamDao;        public void modify(SysParamMO mo) throws LittleCatException    {        sysParamDao.modify(mo);    }    public String getValueByName(String name) throws LittleCatException    {        return sysParamDao.getValueByName(name).getValue();    }    public List
getList() throws LittleCatException { return sysParamDao.getList(); } @Bean(name="SysParamBusiness") public SysParamBusiness getSysParamBusiness() { return new SysParamBusiness(); }}

 

3、在我们自己的Util中使用

 

public class SysParamUtil{    public static String PARAM_NAME_MEMBER_ENABLE_DAYS = "member_enable_days";        private static final SysParamBusiness sysParamBusiness = (SysParamBusiness) SpringUtil.getBean("SysParamBusiness");    public static String getValueByName(String name) throws LittleCatException    {        return sysParamBusiness.getValueByName(name);    }}

 

注:

也可以这样使用(如果没有特殊逻辑,推荐使用这种方法):

private static final SysParamBusiness sysParamBusiness = SpringUtil.getBean(SysParamBusiness.class);

 

这样,第二步就可以省略了。

 

转载于:https://www.cnblogs.com/njlittlecat/p/9736341.html

你可能感兴趣的文章
ssh(1)struts2
查看>>
SpringBoot整合Mybatis
查看>>
20145213《信息安全系统设计基础》实验四 外设驱动程序设计
查看>>
js 在<input type='file'/>的使用中,控制文件的后缀jpg gif等
查看>>
[转载] Discovery——看穿读心术 02 恋人心理透视
查看>>
php纯面向过程--论坛
查看>>
CF 715 E. Complete the Permutations
查看>>
jQuery源码分析 开篇(一)
查看>>
dotnet 各个版本的下载链接----Download .NET SDKs for Visual Studio
查看>>
获取shell脚本目录
查看>>
linux命令--bash进阶
查看>>
C. Tanya and Toys_模拟
查看>>
NEUACM1132: Renew MST Quickly 增量最小生成树
查看>>
4.结对编程汇编
查看>>
闭包面试提 (2)
查看>>
php-字符串函数
查看>>
ftruncate(改变文件大小)
查看>>
多点触摸与单点触摸接口主要区别【转】
查看>>
LeetCode OJ:Combination Sum II (组合之和 II)
查看>>
简述Dubbo
查看>>