精华帖 (0) :: 良好帖 (13) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-08-19
现在的项目里用的就是spring3+jpa的注解,用起来很方便,只有事务我用的是xml配置。 dao层: @Repository public class UserDaoImpl extends BasicDaoImpl<User, Serializable> service层: @Service public class UserServiceImpl implements UserService { @Inject private Dao<User, Serializable> userDaoImpl; public Dao<User, Serializable> getUserDaoImpl() { return userDaoImpl; } public void setUserDaoImpl(Dao<User, Serializable> userDaoImpl) { this.userDaoImpl = userDaoImpl; }
但是也会伴随着一些问题..比如OpenSessionView的那个拦截器我就不知道怎么在注解的情况下配置... |
|
返回顶楼 | |
发表时间:2010-08-19
zzy9zzy 写道 还是用xml配置文件好些。annotation配置出了问题还要去翻代码,不符合配置文件和代码分离的本意。
同此想法 如果想改xml中的参数 肯定要改代码 一想到改代码 会疯掉 |
|
返回顶楼 | |
发表时间:2010-08-19
septem 写道 @Service与@Component有什么不同?那天被问到这个问题,一时之间却想不起来,就利用这篇文章来纪录spring3.0中常用的annotation。
楼主,我问下,spring和hibernate结合时,hibernate实体类使用xml方式标注可以通过<prop key="hibernate.hbm2ddl.auto">create</prop>这种方式自动创建表结果,如果换成用注解的话可不可以实现相同功能?!!!? |
|
返回顶楼 | |
发表时间:2010-08-19
最后修改:2010-08-19
qljcly 写道 楼主,我问下,spring和hibernate结合时,hibernate实体类使用xml方式标注可以通过<prop key="hibernate.hbm2ddl.auto">create</prop>这种方式自动创建表结果,如果换成用注解的话可不可以实现相同功能?!!!? 也是能实现的,只要在AppConfig里面提供dataSource和sessionFactory 比如以下的XML配置 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="jdbc:hsqldb:mem:mymemdb"/> <property name="url" value="org.hsqldb.jdbcDriver"/> <property name="username" value="sa"/> <property name="password" value=""/> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="packagesToScan"> <list> <value>septem.model</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop> <prop key="hibernate.hbm2ddl.auto">create</prop> </props> </property> </bean> 换成代码就是: @Configuration public class AppConfig { @Bean public GreetingDao greetingDao() { return new GreetingDao(); } @Bean public ChildBean childBean(){ return new ChildBean(); } @Bean(destroyMethod = "close") public BasicDataSource dataSource(){ BasicDataSource dataSource = new BasicDataSource(); dataSource.setUrl("jdbc:hsqldb:mem:mymemdb"); dataSource.setDriverClassName("org.hsqldb.jdbcDriver"); dataSource.setUsername("sa"); dataSource.setPassword(""); return dataSource; } @Bean public AnnotationSessionFactoryBean sessionFactory(){ AnnotationSessionFactoryBean sessionFactory = new AnnotationSessionFactoryBean(); sessionFactory.setDataSource(dataSource()); sessionFactory.setPackagesToScan(new String[]{"septem.model"}); sessionFactory.setHibernateProperties(hibernateProperties()); return sessionFactory; } private Properties hibernateProperties(){ Properties p = new Properties(); p.setProperty("hibernate.dialect", "org.hibernate.dialect.HSQLDialect"); p.setProperty("hibernate.hbm2ddl.auto", "create"); return p; } 当然你也可以将数据库的连接等信息保存在properties文件里面 |
|
返回顶楼 | |
发表时间:2010-08-19
IcedCoffee 写道
但是也会伴随着一些问题..比如OpenSessionView的那个拦截器我就不知道怎么在注解的情况下配置... 理论上讲XML里面的Bean都可以移到AppConfig里面,不过我之前用的都是OpenSessionInViewFilter,直接配置在web.xml里面,OpenSessionInViewInterceptor倒是没用过 |
|
返回顶楼 | |
发表时间:2010-08-19
多谢楼主,关键是@Configuration这个,之前我一直用的2.5,换成3.0就有这个注解了
|
|
返回顶楼 | |
发表时间:2010-08-19
学习了,不过感觉XML还是不能扔的,我现在工作使用的是Spring2.5,平时像数据源、事务管理器之类的程序全局和框架性的东西使用XML来配置,自己写的DAO、Service等使用自动扫描,感觉不错
|
|
返回顶楼 | |
发表时间:2010-08-20
xml的可维护性明显更强, 只是开发效率差点。
|
|
返回顶楼 | |
发表时间:2010-08-20
我觉得这是一种倒退
|
|
返回顶楼 | |
发表时间:2010-08-20
这和什么东西都写在代码里有何区别?
|
|
返回顶楼 | |