外置 tomcat啟動Spring Boot程序模式下解決過濾器注入bean的空指針問題


  在上一篇博文中,一般是可以解決過濾器注入bean的空指針問題的,但我們跑在服務器上的Spring Boot程序一般是使用外置tomcat來啟動的,

1      public static void main(String[] args) throws InterruptedException {
2          ApplicationContext context = SpringApplication.run(Application.class, args);
3          SpringContextUtil.setApplicationContext(context);
4      }

這與我們在ide上直接run Application.java是不一樣的,也會發生空指針異常,因為直接啟動tomcat的方式上面的第三行沒有執行,context注入失敗。因此我們需要換一種Spring context的注入方式

 1 @Component
 2 public class SpringContextUtil implements ApplicationContextAware {
 3     private static ApplicationContext applicationContext;
 4     public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
 5         SpringContextUtil.applicationContext = applicationContext;
 6     }
 7     public static ApplicationContext getApplicationContext() {
 8         return applicationContext;
 9     }
10     
11     //通過名字獲取上下文中的bean
12     public static Object getBean(String name){
13         return applicationContext.getBean(name);
14     }
15     
16     //通過類型獲取上下文中的bean
17     public static Object getBean(Class<?> requiredType){
18         return applicationContext.getBean(requiredType);
19     }
20 }

就可以正常使用Bean組件了,經驗證 問題得以解決


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM