12

Spring に、XML ではなく JSON (または実際には他の形式) を介して ApplicationContext を構成できる拡張機能があるかどうかは誰にもわかりませんか? 公式ドキュメントには何も見つかりませんでしたが、これを可能にするオープンソースの拡張機能が他にないかどうか疑問に思っていました.

明確にするために、Spring MVC を構成して RESTful JSON ベースの Web サービスなどをセットアップすることについて話しているのではなく、XML ではなく JSON を介して Spring アプリの構成を行うことが可能である場合に限ります。

4

2 に答える 2

5

私の知る限り、構成ソースとしてJSONをサポートするプロジェクトはありません。キックスタートは比較的簡単なはずです(SpringコンテナはXMLに依存せず、Bean定義を構築する方法にすぎません)。しかし、それはあなたが思っているよりもはるかに多くの仕事です。

Springは、正しいXMLの記述を支援するJSONではそれほど多くは得られません。また、多くのDSLはSpring XMLとカスタム名前空間サポートの上に構築されました(などがそれを使用します)。

XMLが嫌いな場合は(多くの場合)、3.0以降で利用可能で3.1で改善されたJava構成を試してください。

@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()、2回参照されていても、ここでは1回だけ呼び出されます。

于 2012-04-19T18:53:59.273 に答える
5

Maven Central で利用可能なJSConfライブラリを試してみてください。これは、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");
    }
}
于 2016-04-07T05:59:16.767 に答える