Spring 4 Создание компонента программно

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


person Hatem Jaber    schedule 22.04.2015    source источник
comment
Вы читали этот вопрос? http://stackoverflow.com/questions/15328904/dynamically-declare-beans-at-runtime-in-spring   -  person Lukino    schedule 22.04.2015
comment
Я сделал, и я также видел и другие примеры. Я начал использовать Spring, когда это была Spring 4.x, я ищу новый способ или лучший способ.   -  person Hatem Jaber    schedule 22.04.2015
comment
Я отправил ответ, дайте мне знать, что вы думаете.   -  person Hatem Jaber    schedule 22.04.2015


Ответы (1)


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

    @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);
    };
}

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

person Hatem Jaber    schedule 22.04.2015