某些时候,某些类是不归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相关推荐

  1. SpringBoot 在main或者普通类中条用service接口

    SpringBoot 在main或者普通类中条用service接口,对MyBatis进行测试 首先创建一个工具类 SpringUtils import org.springframework.bean ...

  2. 170630、springboot编程之普通类中调用spring管理的bean对象

    我们知道如果我们要在一个类使用spring提供的bean对象,我们需要把这个类注入到spring容器中,交给spring容器进行管理,但是在实际当中,我们往往会碰到在一个普通的Java类中,想直接使用 ...

  3. 【SpringBoot】在普通类中获取spring容器中的bean

    这段时间公司搞封闭开发,做一个联通总部的客服系统项目,是基于springboot的.在开发工程中遇到一个页面datagrid数据排序的功能,因为有多个表的数据都要用到排序功能,于是我就写了一个排序功能 ...

  4. Spring中的IOC介绍

    Spring中的IOC介绍 IOC(控制反转) IOC介绍 IOC是什么 IOC能做什么 Spring容器管理对象 1.maven管理依赖 2.给定容器的配置文件 3.IOC容器管理对象 4.通过容器 ...

  5. java-在应用中获取spring定义的bean

    因为写了些bean作为quartz的任务用spring配置了,但有些时候需要在别的类中使用这些bean,没有太仔细去研究spring,依稀记得有个getBean,到网上g了一把,发现方法不止一种,选了 ...

  6. springboot在工具类中添加service的方法,显示为空的解决方案

    springboot在工具类中添加service的方法,显示为空的解决方案 参考文章: (1)springboot在工具类中添加service的方法,显示为空的解决方案 (2)https://www. ...

  7. 关于springboot工具类中@Autowired注入bean,用static直接修饰,静态方法使用bean时报空指针异常错误...

    错误场景: springboot + mybatis 在工具类的静态方法中,需要使用mapper(其他bean也一样),所以最开始直接使用@Autowired进行了注入,代码如下: @Autowire ...

  8. autowired 静态方法使用_关于springboot工具类中@Autowired注入bean,用static直接修饰,静态方法使用bean时报空指针异常错误...

    错误场景: springboot + mybatis 在工具类的静态方法中,需要使用mapper(其他bean也一样),所以最开始直接使用@Autowired进行了注入,代码如下: @Autowire ...

  9. springboot 项目中在普通类中调用dao层的mapper 出现空指针异常

    springboot 项目中在普通类中调用dao层的mapper 出现空指针异常 参考文章: (1)springboot 项目中在普通类中调用dao层的mapper 出现空指针异常 (2)https: ...

最新文章

  1. STL中用erase()方法遍历删除元素
  2. hdoj5792 【树状数组】【未完待续】
  3. go语言从零学起(二)--list循环删除元素(转载)
  4. 中石油训练赛 - Watch Later(状压dp)
  5. 华为p6电信版 android 4.5,华为P6电信版系统应用apk补全教程 完整EMUI
  6. arcsde 10.2 for oracle 安装,ArcSDE 10.2 for Oracle 12C安装注意事项
  7. [转] 使用CPN Tools工具做简单的登录模型()
  8. chromecast投屏_Google的初代投屏神器Chromecast上手体验
  9. 不会比这更详细的前端工程化的入门教程了
  10. Gephi 网络可视化——调整网络布局
  11. DAY 2 Perceived and cognition || HTML CSS 入门
  12. 字符串分隔 【问题描述】 输入两个字符串str和cut。cut由若干个字符构成,其中每个字符均可作为一个分隔字符对str进行分隔。
  13. 2022最新MN梦奈宝塔主机系统V1.5版本+UI不错
  14. 没有痛苦的博士求学经历不是合格的(彭思龙)
  15. 如何在前端用js实现画三维饼图和三维柱形图
  16. android压感测试,安卓最强压感识别的正确玩法
  17. jmeter聚个报告怎么看qps_jmeter测试接口qps
  18. 希沃展台如何使用_【希沃视频展台--让课堂展示从未如此轻松!】PjTime.COM 综合导购 希沃...
  19. 如何革命社交媒体、实现去中心化?丝绸之路创始人在狱中提出了构想
  20. 建议收藏,7个国内「小众」的程序员社区

热门文章

  1. c++ 数组的输入遇到特定字符停止输入_滑动窗口思维--挑战“无重复字符的最长子串”
  2. Could NOT find SDL_image (missing:SDL_IMAGE_LIBRARIES SDL_IMAGE_INCLUDE_DIRS)
  3. 实验5: IOS的升级与恢复
  4. C# TreeView 连续点击 不触发AfterCheck事件
  5. fluorinefx C# 版的开源rtmp服务器
  6. 关于ASP.NET MVC
  7. 字符串大小写字母转换c 语言,towlower()
  8. mysql最大连接数512_MySQL服务器最大连接数怎么设置才合理
  9. 安卓APP_ 控件(8)—— AlertDialog
  10. 苹果手机耗电快_iPhone12用5G耗电快,苹果回应