天天看點

java 擷取spring 資料源_java – Spring從多個檔案中資料多個資料源

在這種情況下,最新的Spring啟動(版本1.3.5)不支援SpEL.

請參閱注釋@ConfigurationProperties的JavaDoc

Note that contrary to {@code @Value}, SpEL expressions are not

evaluated since property values are externalized.

我找到了一種自定義Spring啟動預設行為的方法,如下所示:

例如,我在某處有data.properties檔案,由于某種原因我無法在運作時之前擷取該位置.

username=mike

password=password

是以,定義POJO映射到屬性:

@Component

@ConfigurationProperties(locations = "myConfiguration")// myConfiguration is customized placeholder

public class MyProperties{

String username;

String password;

//Getters, Setters…

}

public class MyEnvironment extends StandardEnvironment {

@Override

public String resolvePlaceholders(String location) {

if (location.equals("myConfiguration")) {

//Whatever you can do, SpEL, method call...

//Return database.properties path at runtime in this case

return getRootFolder() + "datasource.properties";

} else {

return super.resolvePlaceholders(text);

}

}

}

最後,将它應用于Spring boot main方法條目:

@SpringBootApplication

public class MyApplication extends SpringBootServletInitializer {

public static void main(String[] args) {

new SpeedRestApplication()

.configure(new SpringApplicationBuilder(SpeedRestApplication.class).environment(new MyEnvironment()))//Replace default StandardEnvironment

.run(args);

}

}

一旦Spring啟動啟動,MyProperties bean名稱和密碼字段将從database.properties中注入.然後,您可以将MyProperties bean連接配接到其他bean作為配置.

希望能幫助到你!