[英]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.