凌风515
时不我待,只争朝夕
随笔 - 15,  文章 - 0,  评论 - 0,  阅读 - 14850

优化前部分代码:

每张报表对应一个task,定时任务中使用 @Autowired 注入。后期报表增加,@Autowired 会越来越多。

优化过程:

主要思路: 提供一个公共的接口,每张报表实现该接口。定时任务从spring容器中获取到对应报表实现类的bean,并使用该公共接口接收。调用接口方法即可。

1、公共接口

2、接口实现类

每张报表一个实现类,均实现 BaseTask 接口。

3、调用:

获取 spring 容器中接口的具体实现 bean。使用 ApplicationContextAware 接口。

ApplicationContextAware 接口:
spring 容器在初始化时,如果Spring配置文件中所定义的Bean实现了该接口,那么加载时会调用 setApplicationContext(ApplicationContext applicationContext) throws BeansException 方法,获得ApplicationContext对象。通过ApplicationContext对象就可以获取具体的实现类。

总结:

获取一个接口具体哪个实现类的方式
1、new 一个具体的接口实现类对象。
2、@Autowired 注入具体实现类。
3、使用 @Resource 注解指定实现类名称。

 4、@Qualifier 指定

 5、ApplicationContextAware 接口

 

 

posted on   凌风515  阅读(3642)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示