2015-04-22 1 views
-1

Я искал способ добавления источников данных во время выполнения. Я хочу уйти от определения источников данных в классе @Configuration, а вместо этого, когда приложение загружается, я хочу динамически создавать компоненты источника данных и вводить их в контекст Spring. Я не совсем уверен, как я могу это сделать.Spring 4 Create Bean Programmatically

+0

Вы прочитали этот вопрос? [http://stackoverflow.com/questions/15328904/dynamically-declare-beans-at-runtime-in-spring](http://stackoverflow.com/questions/15328904/dynamically-declare-beans-at-runtime- весна) – Lukino

+0

Я сделал, и я также видел другие примеры. Я начал использовать весну, когда она была весной 4.x, я ищу новый способ или лучший способ. –

+0

Я отправил ответ, дайте мне знать, что вы думаете. –

ответ

0

Это то, с чем я закончил, не уверен, что это правильный подход или нет, если есть лучший способ поделиться им.

@Component 
class SpringContextListener implements ApplicationListener<ContextRefreshedEvent> { 

    public void onApplicationEvent(ContextRefreshedEvent event) { 
     org.apache.tomcat.jdbc.pool.DataSource ds = new org.apache.tomcat.jdbc.pool.DataSource(); 
     ds.setDriverClassName("com.mysql.jdbc.Driver"); 
     ds.setUrl("jdbc:mysql://MySQL:3306/test?useUnicode=true&characterEncoding=utf8&maxAllowedPacket=512000"); 
     ds.setUsername("MYUSERNAME"); 
     ds.setPassword("MYPASSWORD"); 
     ConfigurableApplicationContext ctx = (ConfigurableApplicationContext) event.getApplicationContext(); 
     ConfigurableListableBeanFactory bf = ctx.getBeanFactory(); 
     bf.registerSingleton("mysqlDSN", ds); 
    }; 
} 

Это пример того, что я хочу сделать, но я хотел бы, чтобы в конечном итоге иметь возможность динамически создавать бобы и добавить их к ним весной, а не выписывая конфигурационные файлы.