【SpringBoot】在IOC之外的类中使用IOC内部的Bean
某些时候,某些类是不归IOC管的,如我们的一些Util,如何使用IOC中的Bean?
1、写一个SpringUtil类,该类用于操纵Spring的ApplicationContext
@Component的注解是需要的,该Util是要被Spring管理的。
@Component public class SpringUtil implements ApplicationContextAware {private static ApplicationContext applicationContext;@Overridepublic 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> T getBean(Class<T> clazz){return getApplicationContext().getBean(clazz);}public static <T> T getBean(String name, Class<T> clazz){return getApplicationContext().getBean(name, clazz);} }
2、通过@Bean注解,返回一个Bean;
@Component @Transactional public class SysParamBusiness {@Autowiredprivate 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<SysParamMO> 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
【SpringBoot】在IOC之外的类中使用IOC内部的Bean相关推荐
- SpringBoot 在main或者普通类中条用service接口
SpringBoot 在main或者普通类中条用service接口,对MyBatis进行测试 首先创建一个工具类 SpringUtils import org.springframework.bean ...
- 170630、springboot编程之普通类中调用spring管理的bean对象
我们知道如果我们要在一个类使用spring提供的bean对象,我们需要把这个类注入到spring容器中,交给spring容器进行管理,但是在实际当中,我们往往会碰到在一个普通的Java类中,想直接使用 ...
- 【SpringBoot】在普通类中获取spring容器中的bean
这段时间公司搞封闭开发,做一个联通总部的客服系统项目,是基于springboot的.在开发工程中遇到一个页面datagrid数据排序的功能,因为有多个表的数据都要用到排序功能,于是我就写了一个排序功能 ...
- Spring中的IOC介绍
Spring中的IOC介绍 IOC(控制反转) IOC介绍 IOC是什么 IOC能做什么 Spring容器管理对象 1.maven管理依赖 2.给定容器的配置文件 3.IOC容器管理对象 4.通过容器 ...
- java-在应用中获取spring定义的bean
因为写了些bean作为quartz的任务用spring配置了,但有些时候需要在别的类中使用这些bean,没有太仔细去研究spring,依稀记得有个getBean,到网上g了一把,发现方法不止一种,选了 ...
- springboot在工具类中添加service的方法,显示为空的解决方案
springboot在工具类中添加service的方法,显示为空的解决方案 参考文章: (1)springboot在工具类中添加service的方法,显示为空的解决方案 (2)https://www. ...
- 关于springboot工具类中@Autowired注入bean,用static直接修饰,静态方法使用bean时报空指针异常错误...
错误场景: springboot + mybatis 在工具类的静态方法中,需要使用mapper(其他bean也一样),所以最开始直接使用@Autowired进行了注入,代码如下: @Autowire ...
- autowired 静态方法使用_关于springboot工具类中@Autowired注入bean,用static直接修饰,静态方法使用bean时报空指针异常错误...
错误场景: springboot + mybatis 在工具类的静态方法中,需要使用mapper(其他bean也一样),所以最开始直接使用@Autowired进行了注入,代码如下: @Autowire ...
- springboot 项目中在普通类中调用dao层的mapper 出现空指针异常
springboot 项目中在普通类中调用dao层的mapper 出现空指针异常 参考文章: (1)springboot 项目中在普通类中调用dao层的mapper 出现空指针异常 (2)https: ...
最新文章
- STL中用erase()方法遍历删除元素
- hdoj5792 【树状数组】【未完待续】
- go语言从零学起(二)--list循环删除元素(转载)
- 中石油训练赛 - Watch Later(状压dp)
- 华为p6电信版 android 4.5,华为P6电信版系统应用apk补全教程 完整EMUI
- arcsde 10.2 for oracle 安装,ArcSDE 10.2 for Oracle 12C安装注意事项
- [转] 使用CPN Tools工具做简单的登录模型()
- chromecast投屏_Google的初代投屏神器Chromecast上手体验
- 不会比这更详细的前端工程化的入门教程了
- Gephi 网络可视化——调整网络布局
- DAY 2 Perceived and cognition || HTML CSS 入门
- 字符串分隔 【问题描述】 输入两个字符串str和cut。cut由若干个字符构成,其中每个字符均可作为一个分隔字符对str进行分隔。
- 2022最新MN梦奈宝塔主机系统V1.5版本+UI不错
- 没有痛苦的博士求学经历不是合格的(彭思龙)
- 如何在前端用js实现画三维饼图和三维柱形图
- android压感测试,安卓最强压感识别的正确玩法
- jmeter聚个报告怎么看qps_jmeter测试接口qps
- 希沃展台如何使用_【希沃视频展台--让课堂展示从未如此轻松!】PjTime.COM 综合导购 希沃...
- 如何革命社交媒体、实现去中心化?丝绸之路创始人在狱中提出了构想
- 建议收藏,7个国内「小众」的程序员社区
热门文章
- c++ 数组的输入遇到特定字符停止输入_滑动窗口思维--挑战“无重复字符的最长子串”
- Could NOT find SDL_image (missing:SDL_IMAGE_LIBRARIES SDL_IMAGE_INCLUDE_DIRS)
- 实验5: IOS的升级与恢复
- C# TreeView 连续点击 不触发AfterCheck事件
- fluorinefx C# 版的开源rtmp服务器
- 关于ASP.NET MVC
- 字符串大小写字母转换c 语言,towlower()
- mysql最大连接数512_MySQL服务器最大连接数怎么设置才合理
- 安卓APP_ 控件(8)—— AlertDialog
- 苹果手机耗电快_iPhone12用5G耗电快,苹果回应