- How to simplify adding multiple beans in the xml file which uses the DataSource in Spring
- <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
- <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
- <property name="url" value="#{T(java.lang.System).getenv(DB_URL')}"/>
- <property name="username" value="#{T(java.lang.System).getenv('DB_USER')}"/>
- <property name="password" value="#{T(java.lang.System).getenv('DB_PASS')}"/>
- </bean>
- <bean id="classA" class="com.example.ClassA">
- <property name="dataSource" ref="dataSource"/>
- </bean>
- <bean id="classB" class="com.example.ClassB">
- <property name="dataSource" ref="dataSource"/>
- </bean>
- public static void main(String[] args) {
- ApplicationContext context = new ClassPathXmlApplicationContext("spring_bean_file.xml");
- ClassA classA = (ClassA) context.getBean("classA");
- ClassB classB = (ClassB) context.getBean("classB");
- try {
- rrRpi.generateRrRpi();
- rrSpi.generateRrSpi();
- } catch (SQLException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- //close the context
- ((ClassPathXmlApplicationContext) context).close();
- }
- @Service
- public class ClassA {
- @Resource
- private DataSource dataSource;
- //...
- }
- @Service
- public class ClassB {
- @Resource
- private DataSource dataSource;
- //...
- }
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:context="http://www.springframework.org/schema/context"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
- <context:component-scan base-package="com.example" />
- <!-- ... -->
- </beans
- @Configuration
- public class Cfg {
- @Bean
- public DataSource dataSource() {
- BasicDataSource ds = new BasicDataSource();
- ds.setDriverClassName("oracle.jdbc.driver.OracleDriver);
- //...
- return ds;
- }
- @Bean
- public ClassA classA() {
- ClassA ca = new ClassA()
- ca.setDataSource(dataSource());
- return ca;
- }
- @Bean
- public ClassB classB() {
- ClassB cb = new ClassB()
- cb.setDataSource(dataSource());
- return cb;
- }
- }
- new AnnotationConfigApplicationContext(Cfg.class);