这篇主要是在整合Hibernate后,测试IoC和AOP的应用。
1、工程目录(SRC)
2、IoC
1)、一个Service测试类
1 /* 2 * 加入spring容器 3 */ 4 private ApplicationContext applicationContext = 5 6 new ClassPathXmlApplicationContext("classpath:spring/applicationContext.xml"); 7 public static void main(String[] args) { 8 new UserServiceTest().testGetUserAndRole(); 9 } 10 11 public void test1() { 12 UserService userService= (UserService) applicationContext.getBean("userService"); 13 User user = userService.getById("u1"); 14 System.out.println(user.getId()+"---"+user.getUsername()); 15 }
2)、UserServiceImpl
从User user = userService.getById("u1");调用UserServiceImpl。(下文都省略贴接口)。
再看看UserServiceImpl
那么,spring容器应该是怎么样设置的呢?
其他,同理。
3)、组件扫描
对于一个个bean地配置,可能有点麻烦,可以使用组件扫描
如,RoleServiceImpl
xml文件中,则是
3、AOP
这里是事务管理方面的应用。Spring中的设置如下。
1 <!-- 事务管理 --> 2 <bean id="transactionManager" 3 class="org.springframework.orm.hibernate4.HibernateTransactionManager"> 4 <property name="sessionFactory" ref="sessionFactory" /> 5 </bean> 6 7 <!-- AOP 切点--> 8 <aop:config > 9 <aop:advisor advice-ref="txAdvice" 10 pointcut="execution(* com.xzw.ssh.service.impl.*.*(..))" /> 11 </aop:config> 12 13 <!--事务的传播特性--> 14 <tx:advice id="txAdvice" transaction-manager="transactionManager"> 15 <tx:attributes> 16 <tx:method name="get*" read-only="true" propagation="REQUIRED"/> 17 <tx:method name="find*" read-only="true" propagation="REQUIRED"/> 18 <tx:method name="save*" propagation="REQUIRED"/> 19 <tx:method name="update*" propagation="REQUIRED"/> 20 <tx:method name="remove*" propagation="REQUIRED"/> 21 <tx:method name="add*" propagation="REQUIRED"/> 22 <!--默认其他方法都是REQUIRED--> 23 <tx:method name="*"/> 24 </tx:attributes> 25 </tx:advice>
注意
在使用AOP的时候,之前导入的包还是不够,会有出现“找不到类”的提示,关键字,org/aopalliance/intercept/MethodInterceptor和org/aspectj/weaver,对应加入aopalliance-1.0.jar和aspectjweaver.jar
至此,spring和hibernate的整合基本完成。