您的位置:首页 > 编程语言 > Java开发

action,dao和service在spring中的配置

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

Html代码

<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>

在上面用到了authenticationFactory这个引用,这个是配置在service当中的,那问题是如何在action中引用到此service,这是我们需要将这几个配置文件都在web.xml文件当中使用contextConfigLocation这个param-name属性配置将这些文件在应用启动时就加载初始化这些配置文件,这样在整个应用的过程当中都能使用配置文件当中的相关配置。如果某个action引用到别的service,可以根据以上配置来进行相应的引用。
接下来配置service,service的配置就是对一些service类的注入,在本项目当中操作数据库是使用面向接口方式来操作的,即分别写一个service的接口定义需要操作的方法和一个dao接口定义需要对数据库操作的增删改查,然后分别实现这两个接口,dao的实现类对后台的数据库进行操作(主要还是通过之前封装好的DaoSupport类来操作),然后在service的实现类当中引用dao的实现类以实现数据操作。这样的话在service的配置当中必然会引用到dao,如下:

Html代码

<bean id="clubService" class="com.service.impl.ClubServiceImpl">
<property name="dao1" ref="dao1" />
<property name="dao2" ref="dao2" />

Html代码

<span style="white-space: pre;"> </span>.....
</bean>

那么这里的ref在哪里配置呢?这是我们再独立出来一个配置文件,主要是对于dao的配置,上面说到dao是直接操作数据库的,那么数据库的配置必然需要在dao的配置文件当中体现以实现数据库配置的作用。例如:

Html代码

<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>

Html代码

<bean id="userTokenDao" class="com.dao.core.impl.UserTokenDaoImpl" parent="daoGameSF"></bean><!--这里的userTokenDao就是上面service中ref的值,其他根据具体情况来配置就行了-->

这样配置之后其实就把dao和数据库之前联系起来了,达到了dao对数据库的事务控制了。
相关的配置基本上已经完成了,但是之前说到的mysql主从切换类我们还没有对它进行配置,不配置是起不到什么作用的,在这里配置如下:

Html代码

<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>

这样配置之后就能够在对service操作的过程中主从切换的作用了。至此,功能性配置文件基本上已经完成。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: