簡體   English   中英

Spring依賴注入與構造函數參數

[英]Spring dependency injection with constructor arguments

我有用於客戶端的Spring Boot,Hibernate應用程序和Android應用程序。 我也使用java.net.Socket api進行套接字連接。 在創建像這樣的new Server(12346);服務器套接字之前, new Server(12346); 一切都很好。 但是現在我需要從套接字類(例如,使用@Autowired UsersDao字段)訪問數據庫,但是它當然為null因為Spring Framework無法看到Socket類。 那么,如何使用port作為構造函數參數對Socket類進行依賴注入,並使UserDao為非空?

您可以從靜態方法訪問Spring Application Context ,並使用此靜態方法將存儲庫bean加載到Server類中,而不是自動裝配它。

您需要創建以下類(在此處找到):

ApplicationContextProvider

@Component
public class ApplicationContextProvider implements ApplicationContextAware {

    private static ApplicationContext context;

    public ApplicationContext getApplicationContext() {
        return context;
    }

    @Override
    public void setApplicationContext(ApplicationContext ctx) {
        context = ctx;
    }
}

SpringConfiguration

@Configuration
public class SpringConfiguration {

    @Bean
    public static ApplicationContextProvider contextProvider() {
        return new ApplicationContextProvider();
    }

}

然后是非Spring托管Server類:

public class Server {
    //your code

    public void doUsersDaoStuff() {
        UsersDao usersDao = (UsersDao) SpringConfiguration.contextProvider().getApplicationContext().getBean("UsersDao");
        // Do your own stuff with UsersDao here...
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM