1. 程式人生 > >springboot 在@Autowire無法注入bean時的臨時處理辦法

springboot 在@Autowire無法注入bean時的臨時處理辦法

問題由來:

在用netty寫一個網路程式設計專案的時候,需要用到mongoTemplate這個springdata提供的mongodb的操作類。但是這個只能由springboot來注入,但是netty又會進行new操作,使得@Autowire無法正常工作。

解決方案:

1.我看網上的教程,有spring.xml來顯式注入的,但這個有點麻煩。
2.還有幾個教程沒看懂 比如 http://blog.csdn.net/zhousenshan/article/details/75807999
3.我最後用的方式,在一層呼叫的時候使用靜態方法static,當然static屬性和方法是不能直接使用@Autowire注入的,這裡用來一個@PostConstruct來進行操作。
就是在bean初始化時執行。

    @Autowired
    private PositionDao positionDao;
    private static PositionDao positionDaoStatic;
    @PostConstruct
    public void init(){
        positionDaoStatic=positionDao;
    }

@PostConstruct 註解是在bean被構造時,先執行這個方法。
這樣下面的static方法就可以使用@Autowire的屬性了。而且呼叫靜態方法也不需要new一個物件,或者使用springboot自動注入了。
另外,記得在類上加@Compact 註解。
ps:這個路子肯定是有點野的,等我研究清楚netty和spring框架可能會找到更好的方法。

相關推薦

springboot 在@Autowire無法注入bean臨時處理辦法

問題由來: 在用netty寫一個網路程式設計專案的時候,需要用到mongoTemplate這個springdata提供的mongodb的操作類。但是這個只能由springboot來注入,但是netty又會進行new操作,使得@Autowire無法正常工作。

解決SpringBoot使用Quartz無法注入Bean的問題

依賴 <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId>

Spring通過註解annotation方式注入Bean,採用動態代理,那麼JDK代理和CGLIB代理區別?

切面程式設計是Spring中非常重要的一個模組,切面程式設計的實現原理是動態代理,那麼動態代理又有兩種實現方式:一種方法是直接實現JDK中的InvocationHandler介面,另一種方法是繼承CGLIB。 首先如果不是很清楚兩者的區別的話,記住一般情況下Invocati

Spring3.1完全基於註解配置@Configuration類中@Autowire無法注入問題解決

在上回介紹Spring3.1+Hibernate4.1.7基於註解配置的時候(《SpringMVC3.1+Hibernate4.1.7完全基於註解配置(零配置檔案)》)說過,在修改配置方式的時候遇到過不少問題。這裡介紹一下。 方式一 On

netty學習----spring整合netty無法注入bean的問題解決

作者在使用netty整合spring注入呼叫時普通的@Autowired一直bean注入為null,這裡我只是記錄針對netty注入spring無法注入bean的解決發放,具體底層實現,希望大神不吝賜教 首先上解決程式碼塊,copy過去就可以直接用 @Component

訊息佇列監聽器無法注入bean的問題解決

在使用ActiveMq或者其他訊息佇列的過程中,第一步對ActiveMq進行初始化的過程是放在ContextListener的初始化的時候的; 然而當mq接收到訊息的時候觸發getMqMsg方法的時候報錯null,除錯發現MqManageService根本沒有獲取到,我的

問題:使用@Autowired無法注入Bean物件

問題 在公司的一個專案開發時,遇到了一個類的屬性無法注入的問題 public class DemoController extends BaseController implements BussinessProcessHandler { @Autow

服務器無法顯示大內存的處理辦法

窗口化 系統 loader multi 其中 erp 物理 大於 添加 經常有朋友遇到說,我服務器明明是8G內存,為什麽只能顯示到4G,是不是內存壞了!實際上不是的,今天3A網絡小錢就來給大家講講win2003下的一項被忽略的功能(PAE和AWE) 對於PAE和AWE

yum安轉軟體包提示nokey錯誤處理辦法

目錄 問題描述 問題分析 解決辦法 問題描述 遇到錯誤程式碼:warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID e856289的解決辦法 在我們執行yum

ubuntu 14.04 無法進入桌面的解決辦法以及雙顯示卡的使用

背景 之前想在ubuntu上安裝nvidia和intel的雙顯示卡,並且實現雙顯示卡的切換,但是之後把電腦整崩了,每次只能用ubuntu advanced option下的resume模式進入命令列,

MySQL因非正常關機的情況下,導致無法正常啟動的臨時解決辦法

步驟1、進入MySQL安裝目錄,找到配置檔案my.ini(linux下為my.cnf),把該檔案進行備份。 步驟2、用文字編輯器開啟my.ini(linux下為my.cnf),找到[mysqld]節,如果該節下有innodb_force_recovery,則將值改成1並啟用

MySQL不能進入處理辦法(Linux)

第一步:先停止所有mysql 程序#  killall -TERM mysqld第二步:用安全模式啟動# /usr/local/mysql/bin/mysqld_safe  --skip-grant-table &注: 啟動時會報錯,而且卡在哪不動,這時你只要回車即可

springboot中使用filter注入bean為null的解決辦法

過濾器是servlet規範中定義的,並不歸spring容器管理,也無法直接注入spring中的bean(會報錯) 初始化時通過spring上下文獲取,進行bean的初始化: @Override public void init(FilterConfig filterConfig) throws Serv

spring3.1整合quartz,spring依賴注入無法注入到quartz的job中的處理方法

定時任務類 package cn.customercard.controller; import java.util.Date; import javax.servlet.ServletContextEvent; import javax.serv

SpringBoot bean無法注入

*************************** APPLICATION FAILED TO START *************************** Description: Field userP in com.springboot.controller

springboot中@webfilter註解的filter注入bean都是null

在使用@Webfilter註解Filter的情況下,不上外部tomcat時是沒有問題的。但是在tomcat下執行時,filter中注入的bean就都是null 解決辦法: 一:去掉@Webfilter註解 public class GeneralFilter implements Filter {

關於SpringBoot bean無法注入的問題(與檔案包位置有關)

問題場景描述 整個專案通過Maven構建,大致結構如下: 核心Spring框架一個module spring-boot-base service和dao一個module server-core 提

關於SpringBoot bean無法注入的問題(與檔案包位置有關)改變自動掃描的包

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'com.example.SpringBootJdbcDemoApplication.SpringBootJdbcDe

SpringBoot攔截器中Bean無法註入(轉)

然而 BE 技術分享 查詢 load oschina pac 原因 註解 這兩天遇到SpringBoot攔截器中Bean無法註入問題。下面介紹我的思考過程和解決過程: 1.由於其他bean在service,controller層註入一點問題也沒有,開始根本沒意識到Bean無

Centos無法卸載處理辦法

gre 卸載 進程 處理 use device 工作 查看 當前目錄 卸載時,提示 umount: /mnt/cd: device is busy 首先要確定沒有工作在當前目錄下 pwd 查看當前哪個進程在使用當前目錄 fuser -m /mnt/cd/ ps a