这篇文章主要是对action,dao和service在spring中的配置,在本项目当中会有多个action,action也比较复杂,action中有很多相同的代码,所以考虑了使用一个BaseAction,之后的action都要继承这个BaseAction,在spring中的配置就比较简单了,例如:
- <bean id="baseAction" class="com.action.BaseAction"
- abstract="true">
- <property name="authenticationFactory" ref="authenticationFactory" />
- </bean>
- <bean id="testAction" class="com.action.TestAction"
- parent="baseAction" scope="prototype"></bean>
接下来配置service,service的配置就是对一些service类的注入,在本项目当中操作数据库是使用面向接口方式来操作的,即分别写一个service的接口定义需要操作的方法和一个dao接口定义需要对数据库操作的增删改查,然后分别实现这两个接口,dao的实现类对后台的数据库进行操作(主要还是通过之前封装好的DaoSupport类来操作),然后在service的实现类当中引用dao的实现类以实现数据操作。这样的话在service的配置当中必然会引用到dao,如下:
- <bean id="clubService" class="com.service.impl.ClubServiceImpl">
- <property name="dao1" ref="dao1" />
- <property name="dao2" ref="dao2" />
- <span style="white-space: pre;"> </span>.....
- </bean>
- <import resource="database/databaseContext.xml"/><!--dataBaseContext.xml文件时上文说到的关于hibernate,事务,spring的那个配置文件-->
- <bean id="daoSupport" class="com.dao.DaoSupport" abstract="true">
- <property name="slaveHibernateTemplate" ref="slaveHibernateTemplate" />
- </bean>
- <bean id="daoGameSF" parent="daoSupport">
- <property name="sessionFactory" ref="gameSessionFactory" />
- </bean>
- <bean id="userTokenDao" class="com.dao.core.impl.UserTokenDaoImpl" parent="daoGameSF"></bean><!--这里的userTokenDao就是上面service中ref的值,其他根据具体情况来配置就行了-->
相关的配置基本上已经完成了,但是之前说到的mysql主从切换类我们还没有对它进行配置,不配置是起不到什么作用的,在这里配置如下:
- <bean id="masterSlaveAdvice" class="com.interceptor.MasterSlaveAdvice">
- <property name="enabled" value="true" />
- </bean>
- <bean id="cacheAdvice" class="com.interceptor.CacheAdvice"><!--此类是关于memcache的缓存处理的类,在这里就不解释了-->
- <property name="enabled" value="true" />
- <property name="printCacheLog" value="true" />
- </bean>
- <bean
- class="org.springframework.aop.aspectj.AspectJExpressionPointcutAdvisor">
- <property name="advice" ref="serviceAdvice" />
- <property name="order" value="3" />
- <property name="expression">
- <value>
- execution(* com..service..*.*(..))
- </value>
- </property>
- </bean>
- <bean id="serviceAdvice" class="com.interceptor.ServiceMethodInterceptor">
- <property name="printCostTime" value="true" />
- <property name="befordMethodAdvices">
- <list>
- <ref bean="cacheAdvice" />
- <ref bean="masterSlaveAdvice" />
- </list>
- </property>
- <property name="afterMethodAdvices">
- <list>
- <ref bean="cacheAdvice" />
- <ref bean="masterSlaveAdvice" />
- </list>
- </property>
- </bean>