我想通過啓動應用程序爲我的身份驗證服務生成密鑰,並將其用於所有請求。所以我必須將它存儲在某個地方並使其可訪問。我還需要其他一些對象以及所有請求共享。
在C#中可以通過靜態變量進行設置,但不能在Spring Boot中進行設置。 你知道一個辦法嗎? 我知道一個解決方案,以在啓動時生成所有,並將它們放入數據庫,但我認爲這是一種骯髒的方式。是否可以共享相同的對象到所有請求?
我是新來的春天引導和欣賞的幫助。
我想通過啓動應用程序爲我的身份驗證服務生成密鑰,並將其用於所有請求。所以我必須將它存儲在某個地方並使其可訪問。我還需要其他一些對象以及所有請求共享。
在C#中可以通過靜態變量進行設置,但不能在Spring Boot中進行設置。 你知道一個辦法嗎? 我知道一個解決方案,以在啓動時生成所有,並將它們放入數據庫,但我認爲這是一種骯髒的方式。是否可以共享相同的對象到所有請求?
我是新來的春天引導和欣賞的幫助。
我想你missunderstand什麼Springboot
是,它沒有任何的靜態範圍。
春季以來嵌入自己的DI框架,你可以創建注射豆,然後在其他託管豆在任何地方使用它們。可注入Bean是生命週期由DI容器管理的類,並且它們可以以不同的方式實例化以適合您的需要。你可以看看Spring bean scope。
如果你想擁有它仍然是所有同一個bean要求必須使用範圍Singleton
,這是默認的。
// No need to provide the scope, since singleton is the default one
@Component
public MySingletonBean {
private final String key;
// Yes, the constructor is private, but spring will see it anyway
private MySingletonBean() {
key = generateAKey();
}
private String getKey() {
return this.key;
}
}
通過該組件(即DI框架知道作爲一個單身),你可以在你的應用程序在任何地方使用相同的密鑰,密鑰將保持除非服務器重啓相同。
您可以隨時隨地@Inject
使用它。
實例控制器使用它
@RestController
public void MyController {
@Inject
private MySingletonBean mySingletonBean;
@RequestMapping("/")
public String index() {
String key = mySingletonBean.getKey();
return key;
}
}
,請不要使用自己的MySingletonBean構造。國際奧委會框架將照顧豆實例
在春天,你可以創建'bean's,你可以在需要時注入它們... http://docs.spring.io/autorepo/docs/spring/4.2 .x/spring-framework-reference/html/beans.html –