atools -> config -> AutoBean
2022/8/24 23:25:13
本文主要是介绍atools -> config -> AutoBean,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
AutoBean类文件
package com.example.demo.atools.config; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.context.annotation.Configuration; /** * @Create: IntelliJ IDEA. * @Author: subtlman_ljx * @Date: 2022/07/28/11:39 * @Description: */ @Configuration public class AutoBean implements ApplicationContextAware { /** * springboot在使用Scheduled做定时任务出现Autowired注入空指针异常: * * 原因: * 因为Scheduled的加载时机要早于Autowired,定时任务会开启一个新的进程, * 而spring值会注入到初始的类中,但这个有值类并没有被使用,而是调用了无值的类。 * * 解决: * ApplicationContextAware的作用是可以方便获取Spring容器ApplicationContext,从而可以获取容器内的Bean。 * 其实我们看到---Aware就知道是干嘛用的了,就是属性注入的, * 但是这个ApplicationContextAware的不同地方在于,实现了这个接口的bean, * 当spring容器初始化的时候,会自动的将ApplicationContext注入进来。 * * 使用: * 注入方式不用@Autowired,改成下面的代码注入 * private final Service service= AutoBean.getBean(Service.class); * * 注意事项: * AutoBean的代码位置要在TestTask代码之前,启动服务时,代码的顺序,会影响到执行顺序, * 如果位置不正确,还是会导致service获取空指针。 * * 定时任务: * cron表达式在线生成器 https://cron.qqe2.com * @Scheduled 修饰方法 * @Component 修饰方法所在类 * @EnableScheduling 修饰启动类 * */ /** * context object instance. */ private static ApplicationContext context; @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { context = applicationContext; } /** * get context. * * @return */ public static ApplicationContext getApplicationContext() { return context; } /** * Get Bean by name. * * @param name * @return */ public static Object getBean(String name) { return getApplicationContext().getBean(name); } /** * Get Bean by class. * * @param clazz * @param <T> * @return */ public static <T> T getBean(Class<T> clazz) { return getApplicationContext().getBean(clazz); } /** * Returns the specified Bean by name, and Clazz * * @param name * @param clazz * @param <T> * @return */ public static <T> T getBean(String name, Class<T> clazz) { return getApplicationContext().getBean(name, clazz); } }
这篇关于atools -> config -> AutoBean的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享