2012-04-19 4 views
10

Кто-нибудь знает, есть ли у Spring какие-либо расширения, которые позволяют настраивать свой ApplicationContext через JSON (или действительно любой другой формат), а не XML? Я не мог найти ничего в официальных документах, но мне было интересно, есть ли какие-либо другие расширения с открытым исходным кодом, которые могли бы это позволить.Поддерживает ли Spring конфигурацию JSON?

Для того, чтобы быть понятным, я не говорю о настройке SpringMVC для настройки веб-службы на основе RESTful JSON или чего-то в этом роде, просто если можно настроить Spring app configuration через JSON вместо XML.

ответ

5

Насколько я знаю, проект не поддерживает JSON в качестве источника конфигурации. Это должно быть относительно легко начать с нуля (контейнер Spring не имеет зависимости от XML, это всего лишь способ создания определений bean-компонентов). Однако это гораздо больше, чем вы думаете.

Обратите внимание, что Spring предоставляет , чтобы помочь вам в написании правильного XML. Вы не будете так много в JSON. Также многие DSL были построены поверх Spring XML и поддержки пользовательских пространств имен (, и другие используют его).

Если вы ненавидите 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() называется ровно один раз здесь, даже хотя и упоминается дважды.

+0

Спасибо. Полагаю, я постараюсь придерживаться аннотаций. Не на самом деле * ненавижу * XML как таковой, но мне было бы неплохо иметь некоторые альтернативы. – donalbain

3

Попробуйте JSConf библиотека, доступная на центральной станции maven, ее поддержка Свойства, формат 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(); 
} 

И ваша весна конфигурации фасоли:

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

 Смежные вопросы

  • Нет связанных вопросов^_^