gpt4 book ai didi

java - Spring:将数据库配置从 XML 文件迁移到注释

转载 作者:行者123 更新时间:2023-11-30 03:48:35 24 4
gpt4 key购买 nike

我正在尝试将我的项目更新到最新版本的 Spring、Hibernate 等,我现在面临的问题是将数据库配置从旧的 XML 配置文件迁移到注释(我真的很喜欢基于注释的配置)。以下是我的旧配置:

<!-- Configure SessionFactory -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass" value="org.postgresql.Driver" />
<property name="jdbcUrl" value="jdbc:postgresql://localhost:5432/mydatabase" />
<property name="user" value="user" />
<property name="password" value="password" />
</bean>

<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource">
<ref local="dataSource" />
</property>
<property name="packagesToScan" value="com.myproject.core.domain" />
<property name="configLocation">
<value>/WEB-INF/hibernate.cfg.xml</value>
</property>
<property name="configurationClass">
<value>org.hibernate.cfg.AnnotationConfiguration</value>
</property>
</bean>

<!-- enable the configuration of transactional behavior based on annotations -->
<tx:annotation-driven transaction-manager="transactionManager" />

<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>

<bean
class="org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor" />

<!-- END HIBERNATE CONFIG -->

有人知道如何仅使用注释来配置 sessionfactory 和事务管理器吗?

最佳答案

这是我对 Hibernate 4 和 spring 3.2 的了解:您需要使用@EnableTransactionManagement对于您的配置类。

@Configuration
@EnableTransactionManagement
@PropertySource({ "classpath:application.properties" })
@ComponentScan({ "org.mysample.model" })
public class PersistenceConfig {

@Autowired
private Environment env;

@Bean
public LocalSessionFactoryBean sessionFactory() {
LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
sessionFactory.setDataSource(restDataSource());
sessionFactory.setPackagesToScan(new String[] { "org.mysample.model" });
sessionFactory.setHibernateProperties(hibernateProperties());

return sessionFactory;
}

@Bean
public DataSource restDataSource() {
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName(env.getProperty("jdbc.driverClassName"));
dataSource.setUrl(env.getProperty("jdbc.url"));
dataSource.setUsername(env.getProperty("jdbc.username"));
dataSource.setPassword(env.getProperty("jdbc.password"));
return dataSource;
}

@Bean
@Autowired
public HibernateTransactionManager transactionManager(SessionFactory s) {
HibernateTransactionManager txManager = new HibernateTransactionManager();
txManager.setSessionFactory(s);
return txManager;
}
}

如果您需要更多配置,可以通过使用 @Bean 进行注释来添加它们。这些是几个依赖项,包括 hibernate-core:4.3.5.Finaljavassist:3.18.1-GA

更新:如果您在 application.properties 文件中定义一些配置,Spring 会自动构建您的数据源和其他配置:Common application properties

关于java - Spring:将数据库配置从 XML 文件迁移到注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24960817/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com