Im using Spring 3.0 и JDBC В настоящее время я экспериментирую с весной для настольного приложения. Каждый раз, когда классу нужно будет использовать источник данных, объявленный в моем spring_bean_file.xml, мне нужно было бы объявить каждый из них в файле xml и снова инициализировать каждый из них в моем классе.
Ниже мой XML-файлКак упростить добавление нескольких компонентов в XML-файл, который использует источник данных весной
<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>
Это мой Java-код:
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();
}
Id хотел бы знать, если Theres более эффективный способ сделать это. Какой лучший подход, поэтому мне не нужно было добавлять компонент для каждого класса, который будет использовать DataSoruce. Спасибо заранее, ребята.
В чем проблема? Вы можете объявить bean-шаблон с помощью abstract = "true" и использовать parent = "myBean", чтобы добавить общее объявление полей для каждого компонента. –
Я не хочу инициализировать каждый компонент в моем классе для каждого класса, для которого потребуется dataSource, например. ClassA classA = (ClassA) context.getBean ("classA"); ClassB classB = (ClassB) context.getBean ("classB"); – royjavelosa
Почему вы их не вводите? –