在我的网络应用程序中,我有applicationContext.xml
我定义了bean数据库连接参数等。
虽然我可以在pojo类中使用托管bean(使用服务和daos)进行所需的操作;我不能使用这些服务和托管bean。有没有办法使用应用程序上下文中的参数从pojo访问数据库?我看的每个例子都使用@managedProperty
和托管bean。但是,将我的pojo类定义为托管bean将是一个糟糕的设计。
答案 0 :(得分:1)
您可以使用@Configurable注释将DataSource注入POJO(通常不由Spring管理)。查看执行此操作的方法here
就个人而言,如果可能的话,我会避免从POJO访问数据库
答案 1 :(得分:0)
这可以通过使用现有的数据源bean来实现。
只需自动连接dataSource或使用applicationContext(帮助程序类)获取数据源并从中获取连接。 然后使用prepared语句来做你的本机sql。
@Autowired
private DataSource dataSource;
public void doBla(){
// Open a database connection using Spring's DataSourceUtils
Connection connection = DataSourceUtils.getConnection(dataSource); // NOSONAR
PreparedStatement countQuery = null;
try {
connection.setAutoCommit(false);
countQuery = connection.prepareStatement("//put sql here");
ResultSet countResult = countQuery.executeQuery();
} catch (Exception e){
//TODO do something here...
}
DataSourceUtils.releaseConnection(connection, dataSource);
}
答案 2 :(得分:0)
private static ISettingsService settingsService;
private static ApplicationContext context;
在构造函数中我调用了
context = new ClassPathXmlApplicationContext("../applicationContext.xml");
settingsService = (ISettingsService)context.getBean("SettingsService");
所以我成功获得了服务,这需要我所有的crud操作。 btw在applicationContext.xml中我有这一行
<bean id="SettingsService" class="my.path.to.services.SettingsService">
<property name="settingsDAO" ref="SettingsDAO" />
</bean>