2012-04-19 13 views
10

Czy ktoś wie, czy Spring ma jakieś rozszerzenia, które pozwalają na konfigurację jego ApplicationContext za pośrednictwem JSON (lub naprawdę dowolnego innego formatu), a nie XML? Nie mogłem znaleźć niczego w oficjalnych dokumentach, ale zastanawiałem się, czy są jakieś inne rozszerzenia typu open source, które mogłyby na to pozwolić.Czy Spring Support JSON Configuration?

Dla jasności, nie mówię tu o skonfigurowaniu SpringMVC do skonfigurowania usługi sieciowej opartej na JEST-ie opartej na JEST-ach lub czegoś podobnego, tylko jeśli możliwe jest konfigurowanie aplikacji Spring poprzez JSON zamiast XML.

Odpowiedz

5

O ile mi wiadomo, nie ma projektu wspierającego JSON jako źródło konfiguracji. Powinno być stosunkowo łatwo uruchomić, (Kontener Spring nie ma zależności od XML, jest to po prostu sposób na konstruowanie definicji fasoli). Jest to jednak o wiele więcej pracy, niż mogłoby się wydawać.

Należy pamiętać, że wiosna zapewnia , aby pomóc Ci w pisaniu prawidłowego XML. Nie dostaniesz tak dużo w JSON. Również wiele DSL zostało zbudowanych na bazie Spring XML i niestandardowych przestrzeni nazw (, i innych używają tego).

Jeśli nienawidzisz XML (wiele zrobić), wypróbować Java Konfiguracja, dostępnego od 3.0 i ulepszony w 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; 
    } 

} 

Ciekawostka: dzięki wymyślnej proxy, foo() nazywa się dokładnie raz tutaj, nawet chociaż jest przywoływany dwa razy.

+0

Dzięki. Chyba spróbuję trzymać się adnotacji. Nie naprawdę * nienawidzę * XML per se, ale byłoby mi miło mieć jakieś alternatywy. – donalbain

3

Wypróbuj bibliotekę dostępną na serwerze centralnym, obsługuje właściwości, format HOCON i JSON.

Możesz wstrzykiwać wartości z zewnętrznego pliku do swojej usługi i nie tylko!

Wykorzystanie Przykładowy JavaConfig:

Państwo dane przechowywane w pliku app.conf

{ 
"root":{ 
"simpleConf":{ 
    "url":"Hello World", 
    "port":12, 
    "aMap":{ 
     "key1":"value1", 
     "key2":"value2" 
    }, 
    "aList":[ 
     "value1", 
     "value2" 
    ] 
}} 

Ty serwis gdzie konfiguracja należy wstrzykiwać

@Service("service") 
public class Service { 
    @Autowired 
    private ConfigBean configBean; 
} 

stwierdzenie interfejs dostępu Twoje wartości konfiguracyjne z usługi

@ConfigurationProperties("root/simpleConf") 
public interface ConfigBean { 
    String getUrl(); 
    int getPort(); 
    Map getAMap(); 
    List getAList(); 
} 

A twój Wiosna konfiguracja fasola:

@Configuration 
public class ContextConfiguration { 
    @Bean 
    public static ConfigurationFactory configurationFactory() { 
     return new ConfigurationFactory().withResourceName("app.conf") // 
       .withScanPackage("org.jsconf.core.sample.bean"); 
    } 
} 
Powiązane problemy