Профили Maven, источники данных Spring, JDBC и JNDI - PullRequest
4 голосов
/ 17 мая 2011

У меня есть проект Spring, который использует Maven и имеет несколько профилей, позволяющих запускать его на разных установках с фильтрацией ресурсов. Некоторые настройки имеют JNDI, а некоторые нет. Для тех, которые не являются источником данных JDBC, требуется.

Каков наилучший способ справиться с этим, учитывая мои настройки? Я хочу избегать делать что-либо с несколькими файлами и ant-run или чем-то подобным. Что оставляет меня с:

  • Настройка двух bean-компонентов и фильтрация моих ресурсов для включения одного или другого.
  • Что-то, о чем я не подумал?

Вот пример первой пули:

<bean id="jdbcDataSource"
    class="org.apache.commons.dbcp.BasicDataSource"
    destroy-method="close"
    p:driverClassName="${jdbc.driver}"
    p:url="${jdbc.url}"
    p:username="${jdbc.username}"
    p:password="${jdbc.password}"/>

<bean id="jndiDataSource" class="org.springframework.jndi.JndiObjectFactoryBean"
    p:jndiName="${jndi.name}" />

<bean id="someBean" class="com.whatever.SomeBeanImpl"
    p:dataSource-ref="${dataSource}"/>

Мне интересно услышать о других способах, которыми люди достигли этого и почему они пошли с этим решением. Или если они пошли с этим решением и почему.

Ответы [ 2 ]

3 голосов
/ 18 мая 2011

Spring 3.1 обеспечивает поддержку профилей изначально. В весеннем мире это известно как Окружающая среда. Смотрите здесь для более подробной информации.

1 голос
/ 18 мая 2011

Использование конфигурации на основе Java для вашего компонента источника данных.

@Configuration
public class DataConfig {

  @Value("${dataSource.jndiName:}")
  String jndiName; 

  @Bean
  public DataSource dataSource() {
    if ("".equals(jndiName)) {
       // create datasource
    } else {
       // lookup from JNDI
    }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...