action,dao和service在spring中的配置

这篇文章主要是对action,dao和service在spring中的配置,在本项目当中会有多个action,action也比较复杂,action中有很多相同的代码,所以考虑了使用一个BaseAction,之后的action都要继承这个BaseAction,在spring中的配置就比较简单了,例如:

Html代码
  1. <bean id="baseAction" class="com.action.BaseAction"  
  2.         abstract="true">  
  3.         <property name="authenticationFactory" ref="authenticationFactory" />  
  4.     </bean>  
  5.   
  6.     <bean id="testAction" class="com.action.TestAction"  
  7.         parent="baseAction"  scope="prototype"></bean>  
在上面用到了 authenticationFactory这个引用,这个是配置在service当中的,那问题是如何在action中引用到此service,这是我们需要将这几个配置文件都在web.xml文件当中使用contextConfigLocation这个param-name属性配置将这些文件在应用启动时就加载初始化这些配置文件,这样在整个应用的过程当中都能使用配置文件当中的相关配置。如果某个action引用到别的service,可以根据以上配置来进行相应的引用。

接下来配置service,service的配置就是对一些service类的注入,在本项目当中操作数据库是使用面向接口方式来操作的,即分别写一个service的接口定义需要操作的方法和一个dao接口定义需要对数据库操作的增删改查,然后分别实现这两个接口,dao的实现类对后台的数据库进行操作(主要还是通过之前封装好的DaoSupport类来操作),然后在service的实现类当中引用dao的实现类以实现数据操作。这样的话在service的配置当中必然会引用到dao,如下:

Html代码
  1. <bean id="clubService" class="com.service.impl.ClubServiceImpl">  
  2.         <property name="dao1" ref="dao1" />  
  3.         <property name="dao2" ref="dao2" />  
Html代码
  1. <span style="white-space: pre;">  </span>.....  
  2.     </bean>  
那么这里的ref在哪里配置呢?这是我们再独立出来一个配置文件,主要是对于dao的配置,上面说到dao是直接操作数据库的,那么数据库的配置必然需要在dao的配置文件当中体现以实现数据库配置的作用。例如:

Html代码
  1. <import resource="database/databaseContext.xml"/><!--dataBaseContext.xml文件时上文说到的关于hibernate,事务,spring的那个配置文件-->  
  2.       
  3.     <bean id="daoSupport" class="com.dao.DaoSupport" abstract="true">  
  4.         <property name="slaveHibernateTemplate" ref="slaveHibernateTemplate" />  
  5.     </bean>  
  6.       
  7.     <bean id="daoGameSF" parent="daoSupport">  
  8.         <property name="sessionFactory" ref="gameSessionFactory" />  
  9.     </bean>  
Html代码
  1. <bean id="userTokenDao" class="com.dao.core.impl.UserTokenDaoImpl" parent="daoGameSF"></bean><!--这里的userTokenDao就是上面service中ref的值,其他根据具体情况来配置就行了-->  
这样配置之后其实就把dao和数据库之前联系起来了,达到了dao对数据库的事务控制了。

相关的配置基本上已经完成了,但是之前说到的mysql主从切换类我们还没有对它进行配置,不配置是起不到什么作用的,在这里配置如下:

Html代码
  1. <bean id="masterSlaveAdvice" class="com.interceptor.MasterSlaveAdvice">  
  2.         <property name="enabled" value="true" />  
  3.     </bean>  
  4.     <bean id="cacheAdvice" class="com.interceptor.CacheAdvice"><!--此类是关于memcache的缓存处理的类,在这里就不解释了-->  
  5.         <property name="enabled" value="true" />  
  6.         <property name="printCacheLog" value="true" />  
  7.     </bean>  
  8.   
  9.     <bean  
  10.         class="org.springframework.aop.aspectj.AspectJExpressionPointcutAdvisor">  
  11.         <property name="advice" ref="serviceAdvice" />  
  12.         <property name="order" value="3" />  
  13.         <property name="expression">  
  14.             <value>  
  15.                 execution(* com..service..*.*(..))  
  16.            </value>  
  17.         </property>  
  18.     </bean>  
  19.     <bean id="serviceAdvice" class="com.interceptor.ServiceMethodInterceptor">  
  20.         <property name="printCostTime" value="true" />  
  21.         <property name="befordMethodAdvices">  
  22.             <list>  
  23.                 <ref bean="cacheAdvice" />  
  24.                 <ref bean="masterSlaveAdvice" />  
  25.             </list>  
  26.         </property>  
  27.         <property name="afterMethodAdvices">  
  28.             <list>  
  29.                 <ref bean="cacheAdvice" />  
  30.                 <ref bean="masterSlaveAdvice" />  
  31.             </list>  
  32.         </property>  
  33.     </bean>  
这样配置之后就能够在对service操作的过程中主从切换的作用了。 至此,功能性配置文件基本上已经完成。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值