`
blues1021
  • 浏览: 135506 次
  • 性别: Icon_minigender_1
  • 来自: 南宁
社区版块
存档分类
最新评论

Spring 2.*有注释的配置文件中各层配置详解

    博客分类:
  • SSH
 
阅读更多

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
    
    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
        <property name="configLocation"        <!--1.数据源层-->
            value="classpath:hibernate.cfg.xml">
<!-- 使用了注释将数据源连接上,并生成了对象sessionFactory -->
        </property>
    </bean>
    
    
    <!-- 公司注册DAO-->
    <bean id="bspcorpdao" class="com.bsp.dao.BspCorpDAOImpl">
        <property name="sessionFactory">
            <ref local="sessionFactory" />
        </property>
    </bean>
    <!-- 用户注册DAO-->
    <bean id="bspuserdao" class="com.bsp.dao.BspUserDAOImpl">
        <property name="sessionFactory">
            <ref local="sessionFactory" />
        </property>
    </bean>
    <!-- 认证公司DAO-->
    <bean id="bspcorpspldao" class="com.bsp.dao.BspCorpSplDAOImpl">
        <property name="sessionFactory">
            <ref local="sessionFactory" />
        </property>
    </bean>
    <!-- 联系人DAO-->
    <bean id="bspmysplcontactdao"
        class="com.bsp.dao.BspMySplContactDAOImpl">
        <property name="sessionFactory">
            <ref local="sessionFactory" />
        </property>
    </bean>
    <!-- 公告信息DAO-->
    <bean id="bspmessagedao" class="com.bsp.dao.BspMessageDAOImpl">
        <property name="sessionFactory">
            <ref local="sessionFactory" />
        </property>
    </bean>
    <!-- 公告信息DAO-->
    <bean id="dao" class="com.bsp.action.REG_CORP_ADMIN1Action">
        <property name="managerfactory">  <!--3.DAO操作数据层-->

         
<ref local="managerfactory" /> <!--1.使用了数据源类对象。-->
                   <!-- ?where's managerfactory ,2.此为包是所有务逻辑的管理器,业务逻辑又使用了dao类-->

        </property>
    </bean>
    <!-- 询价单DAO-->
    <bean id="bspinqdao" class="com.bsp.dao.BspInqDAOImpl">
        <property name="sessionFactory">
            <ref local="sessionFactory" />
        </property>
    </bean>
    <!-- 询价单涉及部件DAO-->
    <bean id="bspinqpartsdao" class="com.bsp.dao.BspInqPartsDAOImpl">
        <property name="sessionFactory">
            <ref local="sessionFactory" />
        </property>
    </bean>
    <!-- 供应商收到询价记录DAO-->
    <bean id="bspinqspldao" class="com.bsp.dao.BspInqSplDAOImpl">
        <property name="sessionFactory">
            <ref local="sessionFactory" />
        </property>
    </bean>
    
    
<!-- 账户事务逻辑层注入DAO层组件 -->
    <bean id="accountmanager" class="com.bsp.service.AccountManagerImpl">
        <property name="bspuserdao">   <!-- use LoginAction DAO -->
            <ref local="bspuserdao" />
        </property>
        <property name="bspcorpdao">
            <ref local="bspcorpdao" />
        </property>
        <property name="bspcorpspldao">
            <ref local="bspcorpspldao" />
        </property>
        <property name="bspmysplcontactdao">
            <ref local="bspmysplcontactdao" />
        </property>
    </bean>
    <bean id="messagemanager" class="com.bsp.service.MessageManagerImpl">
        <property name="bspmessagedao">
            <ref local="bspmessagedao" />
        </property>
    </bean>
    <bean id="inqmanager" class="com.bsp.service.InqManagerImpl">
        <property name="bspinqdao">
            <ref local="bspinqdao" />
        </property>
        <property name="bspinqpartsdao">
            <ref local="bspinqpartsdao" />
        </property>
        <property name="bspinqspldao">
            <ref local="bspinqspldao" />                                                 
        </property>
    </bean>                                    <!--3.特定业务逻辑层-->
 
<!--1.具体业务类使用了dao对象;2.定义了统一管理他们的管理类,注入业务业务逻辑类对象-->
    
   <!-- 工厂服务层注入事务逻辑层组件 -->
    <bean id="managerfactory" class="com.bsp.service.ManagerFactory">
        <property name="accountmanager">
            <ref local="accountmanager" />
        </property>
        <property name="messagemanager">
            <ref local="messagemanager" />
        </property>
        <property name="inqmanager">
            <ref local="inqmanager" />
        </property>
    </bean>
                                                    <!--2.数据持久的事务管理层-->
<!--1.定义事务管理器,使用数据源对象 2.配置事务拦截器,注入了管理器对象,并定义DML事务传播属性-->
 <!--3.定义BeanNameAutoProxyCreator,为指定的dao类自动添加事务拦截器-->


     <!-- 事务管理器 -->
    <bean id="transactionManager"            
        class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory">
            <ref local="sessionFactory" />
        </property>
    </bean>
    <!-- 配置事务拦截器-->
    <bean id="transactionInterceptor"
        class="org.springframework.transaction.interceptor.TransactionInterceptor">
        <!-- 事务拦截器bean 需要依赖注入一个事务管理器-->
        <property name="transactionManager">
            <ref local="transactionManager" />
        </property>
        <property name="transactionAttributes">
            <!-- 下面定义事务传播属性-->
            <props>
                <prop key="save">PROPAGATION_REQUIRED</prop>
                <prop key="dele*">PROPAGATION_REQUIRED</prop>
                <prop key="find*">PROPAGATION_REQUIRED</prop>
                <prop key="query">PROPAGATION_REQUIRED</prop>
                <prop key="valid">PROPAGATION_REQUIRED</prop>
            </props>
       </property>
    </bean>
    
    <!--定义BeanNameAutoProxyCreator ,该bean 是个bean 后处理器,无须被引用,因此
        没有id 属性
        这个bean 后处理器,根据事务拦截器为目标bean 自动创建事务代理-->
    <bean
        class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
        <!--指定对满足哪些bean name 的bean 自动生成业务代理-->
        <property name="beanNames">
            <!-- 下面是所有需要自动创建事务代理的bean-->
            <list>
                <value>bspcorpdao</value>
                <value>bspuserdao</value>
                <value>bspcorpspldao</value>
                <value>bspmysplcontactdao</value>
                <value>bspmessagedao</value>
                <value>bspinqdao</value>
                <value>bspinqpartsdao</value>
                <value>bspinqspldao</value>
            </list>
            <!--  此处可增加其他需要自动创建事务代理的bean-->
        </property>
        <!--下面定义BeanNameAutoProxyCreator所需的事务拦截器-->
        <property name="interceptorNames">
            <list>
                <value>transactionInterceptor</value>
                <!-- 此处可增加其他新的工nterceptor-->
            </list>
        </property>
    </bean>
        
                       <!--4.action页面控制层-->  
 
<!-- 1.使用了统一的managerfactory对象实现统一接口 -->
  <!-- why use that's name标识,上面name 是为了注释中的namespace下的Action value下注入对象处理页面控制 -->

    
   <!-- Struts动作控件器Bean设置 -->
    <!-- 用户登录验证,注意,Spring2.0单实例模式的设置改成了scope,而在2.0以前是singleton-->
    <bean name="logonAction" class="com.bsp.action.LogonAction"
        scope="prototype">
        <property name="managerfactory">
            <ref local="managerfactory" />
        </property>
    </bean>
    <!-- 公司及管理员注册 -->
    <bean name="/MyCountManager/REG_CORP_ADMIN1" id="UserIsReg"
        class="com.bsp.action.REG_CORP_ADMIN1Action" scope="prototype"><!-- why use that's name标识 -->
        <property name="managerfactory">           <!-- 上面name 是为了注释中的namespace下的Action value下注入对象处理页面控制 -->
            <ref local="managerfactory" />
        </property>
    </bean>
    <!-- 普通用户注册 -->
    <bean name="/MyCountManager/REG_CORP_USER"
        class="com.bsp.action.REG_CORP_USERAction" scope="prototype">
        <property name="managerfactory">
            <ref local="managerfactory" />
        </property>
    </bean>
    <!-- 用户注册 -->
    <bean name="/MyCountManager/BSP_User_Reg" id="BSPUserReg"  
        class="com.bsp.action.BSP_User_RegAction" scope="prototype">
        <property name="managerfactory">
            <ref local="managerfactory" />
        </property>
    </bean>
    <!-- 用户找回密码-->
    <bean name="BSP_User_GetPass"
        class="com.bsp.action.BSP_User_GetPassAction" scope="prototype">
        <property name="managerfactory">
            <ref local="managerfactory" />
        </property>
    </bean>
    <!--显示己注册的公司信息-->
    <bean name="USERREG"
        class="com.bsp.action.USERREGAction" scope="prototype">
        <property name="managerfactory">
            <ref local="managerfactory" />
        </property>
    </bean>
    <!--显示己认证公司信息-->
    <bean name="/MyOrderParts/BUYCERSPL"
        class="com.bsp.action.BUY_CER_SPLAction" scope="prototype">
        <property name="managerfactory">
            <ref local="managerfactory" />
        </property>
    </bean>
    <!--显示联系人信息-->
    <bean name="/MyOrderParts/BUYSPLLIST"
        class="com.bsp.action.BUY_SPL_LISTAction" scope="prototype">
        <property name="managerfactory">
            <ref local="managerfactory" />
        </property>
    </bean>
    <!--公告板管理-->
    <bean name="/MessageBoard/bspMessage"
        class="com.bsp.action.BspMessageAction" scope="prototype">
        <property name="managerfactory">
            <ref local="managerfactory" />
        </property>
    </bean>
    <!--询价管理-->
    <bean name="/MyOrderParts/BUYINQEDIT" id="BUYINQEDIT"  
        class="com.bsp.action.BUY_INQ_EDITAction" scope="prototype">
        <property name="managerfactory">
            <ref local="managerfactory" />
        </property>
    </bean>
    <!--收到询价管理-->
    <bean name="/MySaleparts/SALERECINQLIST"
        class="com.bsp.action.SALE_REC_INQ_LISTAction"
        scope="prototype">
        <property name="managerfactory">
            <ref local="managerfactory" />
        </property>
    </bean>
</beans>

在有注释的Action类中如下:
@Namespace("/MyCountManager")
public class REG_CORP_ADMIN1Action extends BaseAction {
    private static final long serialVersionUID = 1L;
    REG_CORP_ADMIN1VO regcorpadmin;//管理员注册VO
    public void setRegcorpadmin(REG_CORP_ADMIN1VO regcorpadmin) {
        this.regcorpadmin = regcorpadmin;
    }
    public REG_CORP_ADMIN1VO getRegcorpadmin() {
        return this.regcorpadmin;
    }
    public String UserIsReg(String uid) {//判断用户是否已注册,供DWR调用
        if (this.managerfactory.getAccountmanager().findByUserId(uid) != null) {
            return "yes";
        }
        return "no";
    }
    public String CorpIsReg(String cid) {//判断企业是否已注册,供DWR调用
        if (this.managerfactory.getAccountmanager().findByCorpId(cid) != null) {
            return "yes";
        }
        return "no";
    }
  
  @Action(value = "REG_CORP_ADMIN1",
results = { @Result(name = "input", location = "/MyCountManager/REG_CORP_ADMIN1.jsp") })

    public String execute() {..........}
}
       <!--5.客户表现层--->
       <!--略,因为spring配置文件中没有-->

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics