我很热衷于在编译器和IDE的支持下通过移除XML文件来提升Spring3的开发效率,而这并不会改变Spring给你提供的强大的功能。
没有XML配置文件的Hibernate的单元测试是可行的,但是竟然花了我好一会才找到所有的东西,所以就在这里写下来。
我将在一个使用@Configuration注解的类中初始化所有的bean。
@Configuration
@EnableTransactionManagement
public class TestRepositoryConfig {
@Bean
public DataSource dataSource() {
return new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.H2)
.setName("Nuts").build();
}
@Bean
public LocalSessionFactoryBean sessionFactoryBean() {
LocalSessionFactoryBean result = new LocalSessionFactoryBean();
result.setDataSource(dataSource());
result.setPackagesToScan(new String[] { "pl.squirrel.testnoxml.entity" });
Properties properties = new Properties();
properties.setProperty("hibernate.hbm2ddl.auto", "create-drop");
result.setHibernateProperties(properties);
return result;
}
@Bean
public SessionFactory sessionFactory() {
return sessionFactoryBean().getObject();
}
@Bean
public HibernateTransactionManager transactionManager() {
HibernateTransactionManager man = new HibernateTransactionManager();
man.setSessionFactory(sessionFactory());
return man;
}
@Bean
public OrderRepository orderRepo() {
return new OrderRepository();
}
}
测试类是这样的:
@RunWith(SpringJUnit4ClassRunner.class)
@TransactionConfiguration(defaultRollback = true)
@ContextConfiguration(classes = { TestRepositoryConfig.class })
@Transactional
public class OrderRepositoryTest {
@Autowired
private OrderRepository repo;
@Autowired
private SessionFactory sessionFactory;
@Test
public void testPersistOrderWithItems() {
Session s = sessionFactory.getCurrentSession();
Product chestnut = new Product("Chestnut", "2.50");
s.save(chestnut);
Product hazelnut = new Product("Hazelnut", "5.59");
s.save(hazelnut);
Order order = new Order();
order.addLine(chestnut, 20);
order.addLine(hazelnut, 150);
repo.saveOrder(order);
s.flush();
Order persistent = (Order) s.createCriteria(Order.class).uniqueResult();
Assert.assertNotSame(0, persistent.getId());
Assert.assertEquals(new OrderLine(chestnut, 20), persistent
.getOrderLines().get(0));
Assert.assertEquals(new OrderLine(hazelnut, 150), persistent
.getOrderLines().get(1));
}
}
这里有几个需要注意的细节:
OSChina.NET原创翻译/原文链接
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
事务管理,数据库之类的也用配置文件?######Spring非但提供了事务管理,还提供了 身份验证、控制访问、远程服务等等。。。至于用不用Spring的配置文件嘛,就另说了,肯定有人用嘛。。~~######对于需要大量地址和参数等配置的项目来说,用class代替xml纯找抽
玩玩还是可以的######为什么要无xml配置呢?本来改动不需要编译 现在改动需要编译会好点?######好######用javaconfig宣称无xml######如果是多人开发,还是有特定的xml为好,完全注解,只适合一人开发######这个用着简单,但不爽######annotation+xml结合用,还是很不错的,你这个略显蛋疼了,测试还OK######留着备用