有誰知道Spring是否有任何允許通過JSON(或其他任何格式)配置其ApplicationContext而不是XML的擴展?我在官方文檔中找不到任何內容,但我想知道是否還有其他任何可以允許這樣做的開源擴展。Spring支持JSON配置嗎?
只是要說清楚,我並不是在談論如何配置SpringMVC來設置基於REST的基於JSON的Web服務或類似的東西,就像通過JSON而不是XML來完成Spring應用程序配置一樣。
有誰知道Spring是否有任何允許通過JSON(或其他任何格式)配置其ApplicationContext而不是XML的擴展?我在官方文檔中找不到任何內容,但我想知道是否還有其他任何可以允許這樣做的開源擴展。Spring支持JSON配置嗎?
只是要說清楚,我並不是在談論如何配置SpringMVC來設置基於REST的基於JSON的Web服務或類似的東西,就像通過JSON而不是XML來完成Spring應用程序配置一樣。
據我所知,沒有項目支持JSON作爲配置源。啓動起來應該相對容易,(Spring容器不依賴於XML,它只是一種構造bean定義的方法)。然而,它比你想象的要多得多。
請注意,Spring提供xml-schema來協助您編寫正確的XML。你不會在JSON中獲得那麼多。此外,許多DSL都是基於Spring XML和自定義命名空間支持構建的(spring-integration,mule-esb和其他人使用它)。
如果你恨XML(許多人),嘗試一下Java的配置,因爲3.0提供和改善3.1:
@Configuration
public class MyBeans {
@Bean
public Foo foo() {
return new Foo();
}
@Bean
public Bar bar() {
return new Bar(foo());
}
@Bean
public Buzz buzz() {
Buzz buzz = new Buzz();
buzz.setFoo(foo());
return buzz;
}
}
有趣的事實:由於一些奇特的代理,foo()
被調用一次在這裏,甚至儘管引用了兩次。
嘗試JSConf庫在maven central上可用,它支持Properties,HOCON和JSON格式。
你可以從外部文件注入值到你的服務和更多! JavaConfig的
使用範例:
您存儲在文件app.conf數據
{
"root":{
"simpleConf":{
"url":"Hello World",
"port":12,
"aMap":{
"key1":"value1",
"key2":"value2"
},
"aList":[
"value1",
"value2"
]
}}
您服務您的配置必須注入
@Service("service")
public class Service {
@Autowired
private ConfigBean configBean;
}
聲明一個接口來訪問您的服務配置值
@ConfigurationProperties("root/simpleConf")
public interface ConfigBean {
String getUrl();
int getPort();
Map getAMap();
List getAList();
}
而且Spring配置的bean:
@Configuration
public class ContextConfiguration {
@Bean
public static ConfigurationFactory configurationFactory() {
return new ConfigurationFactory().withResourceName("app.conf") //
.withScanPackage("org.jsconf.core.sample.bean");
}
}
感謝。猜猜我會嘗試堅持註釋。本質上不討厭* XML,但我會很高興有一些選擇。 – donalbain 2012-04-19 19:01:51