SSH配置文件和SSM配置文件的寫法


一、SSH配置文件的寫法(XML版本)

<util:properties id="jdbc" location="classpath:db.properties"/>
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close">
        <property name="driverClassName" value="#{jdbc.driverName}"></property>
       <property name="url" value="#{jdbc.url}"></property>
       <property name="username" value="#{jdbc.userName}"></property>
       <property name="password" value="#{jdbc.password}"></property>
       <!-- 設置連接最大數  -->
       <property name="maxActive" value="20"></property>
       <!-- 設置連接池實例化時初始創建的連接數 -->
       <property name="initialSize" value="2"></property>
    </bean> 
    
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <!-- 指定db連接參數 -->
        <property name="dataSource" ref="dataSource"></property>
        <!-- 指定hibernate框架參數 -->
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">
                    org.hibernate.dialect.OracleDialect
                </prop>
                <prop key="hibernate.show_sql">
                    true
                </prop>
                <prop key="hibernate.format_sql">
                    true
                </prop>
            </props>
        </property>
        <!-- 指定hbm映射描述信息 -->
        <property name="mappingLocations">
            <list>
                <value>classpath:org/tarena/entity/Cost.hbm.xml</value>
            </list>
        </property>
    </bean>
    
    <bean id="template" class="org.springframework.orm.hibernate3.HibernateTemplate">
        <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>
       
    <!-- 事務控制 -->
    <!-- 定義事務管理bean -->
    <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory">
        </property>
    </bean>
    
    <!-- 定義方面和通知,默認環繞通知 -->
    <tx:advice id="txAdvice" transaction-manager="txManager">
        <!-- 可以指定目標目標對象中不同方法采用不同的事務機制 -->
        <tx:attributes>
            <tx:method name="save" propagation="REQUIRED"/>
            <tx:method name="update" propagation="REQUIRED"/>
            <tx:method name="delete" propagation="REQUIRED"/>
            <tx:method name="find*" read-only="true" propagation="REQUIRED"/>
            <tx:method name="get*" read-only="true" propagation="REQUIRED"/>
            <tx:method name="*" propagation="REQUIRED"/>
        </tx:attributes>
    </tx:advice>
    
    <!-- 定義切入點,AOP切入 -->
    <aop:config>
        <aop:pointcut id="daoPoint" expression="within(org.tarena.dao..*)"/>
        <!-- 將切入點和通知結合 -->
        <aop:advisor advice-ref="txAdvice" pointcut-ref="daoPoint"/>
    </aop:config>

二、SSH配置文件的寫法(注解版本)

<util:properties id="jdbc" location="classpath:db.properties"/>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
    destroy-method="close">
    <property name="driverClassName" value="#{jdbc.driverName}"></property>
   <property name="url" value="#{jdbc.url}"></property>
   <property name="username" value="#{jdbc.userName}"></property>
   <property name="password" value="#{jdbc.password}"></property>
   <!-- 設置連接最大數  -->
   <property name="maxActive" value="20"></property>
   <!-- 設置連接池實例化時初始創建的連接數 -->
   <property name="initialSize" value="2"></property>
</bean> 

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <!-- 指定db連接參數 -->
    <property name="dataSource" ref="DataSource"></property>
    <!-- 指定hibernate框架參數 -->
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">
                org.hibernate.dialect.OracleDialect
            </prop>
            <prop key="hibernate.show_sql">
                true
            </prop>
            <prop key="hibernate.format_sql">
                true
            </prop>
        </props>
    </property>
    <!-- 指定hbm映射描述信息 -->
    <property name="mappingLocations">
        <list>
            <value>classpath:org/tarena/entity/Cost.hbm.xml</value>
        </list>
    </property>
</bean>

<!-- 開啟組件掃描,掃描Action,Service,Dao -->
<context:component-scan base-package="org.tarena"/>

<!-- 事務控制 -->
<!-- 定義事務管理bean -->
<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory">
    </property>
</bean>

<!-- 開啟事務注解@Transactional -->
<tx:annotation-driven transaction-manager="txManager"/>

 

package org.tarena.dao;

import java.sql.SQLException;
import java.util.List;

import javax.annotation.Resource;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.context.annotation.Scope;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.stereotype.Repository;
import org.tarena.entity.Cost;

@Repository
@Scope("prototype")
public class CostDaoImpl extends HibernateDaoSupport implements CostDao {
    
    //用注解才要這么寫,否則不用
    @Resource//注入sf
    public void setMySessionFactory(SessionFactory sf){
        super.setSessionFactory(sf);
    }

 

三、SSM配置文件的寫法(XML版本)

<util:properties id="jdbc" location="classpath:db.properties"/>
<bean id="dbcp" class="org.apache.commons.dbcp.BasicDataSource"
    destroy-method="close">
   <property name="driverClassName" value="#{jdbc.driverName}"></property>
   <property name="url" value="#{jdbc.url}"></property>
   <property name="username" value="#{jdbc.userName}"></property>
   <property name="password" value="#{jdbc.password}"></property>
   <!-- 設置連接最大數  -->
   <property name="maxActive" value="20"></property>
   <!-- 設置連接池實例化時初始創建的連接數 -->
   <property name="initialSize" value="2"></property>
</bean> 

<bean id="ssf" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dbcp"></property>
    <property name="mapperLocations" value="classpath:org/tarena/note/sql/*.xml"></property>
</bean>

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="sqlSessionFactory" ref="ssf"></property>
    <property name="basePackage" value="org.tarena.note.dao"></property>
</bean>

<!-- 開啟組件掃描,service,controller -->
<context:component-scan base-package="org.tarena.note"/> <!-- SpringMVC配置 --> <mvc:annotation-driven/> <!-- spring事務管理(xml版) --> <!-- 封裝事務的提交回滾 --> <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dbcp"></property> </bean> <!-- 指定txManager管理哪些方法 --> <tx:advice id="txAdvice" transaction-manager="txManager"> <!-- 可以指定目標對象中不同方法采用不同的事務機制 --> <tx:attributes> <tx:method name="checkLogin" read-only="true"/> <tx:method name="load*" read-only="true"/> <tx:method name="*"/> </tx:attributes> </tx:advice> <!-- 指定txManager作用在哪些組件上 --> <aop:config> <aop:pointcut id="servicePoint" expression="within(org.tarena.note.service.*)"/> <aop:advisor advice-ref="txAdvice" pointcut-ref="servicePoint"/> </aop:config> <!-- AOP實例(xml版) --> <!-- AOP記錄操作日志案例 --> <bean id="loggerBean" class="com.tarena.aop.LoggerBean"> </bean> <!-- AOP記錄Action拋出的異常信息 --> <bean id="exceptionBean" class="com.tarena.aop.ExceptionBean"> </bean> <aop:config> <!-- 公用同一個pointcut --> <aop:pointcut id="actionPointcut" expression="within(com.tarena.action..*)"/> <aop:aspect id="loggerAspect" ref="loggerBean"> <aop:around pointcut-ref="actionPointcut" method="logger"/> </aop:aspect> <aop:aspect id="exceptionAspect" ref="exceptionBean"> <aop:after-throwing pointcut-ref="actionPointcut" method="exec" throwing="ex"/> </aop:aspect> </aop:config>
 
        

 

 
        

 

四、SSM配置文件的寫法(注解版本)

<util:properties id="jdbc" location="classpath:db.properties"/>
<bean id="dbcp" class="org.apache.commons.dbcp.BasicDataSource"
    destroy-method="close">
   <property name="driverClassName" value="#{jdbc.driverName}"></property>
   <property name="url" value="#{jdbc.url}"></property>
   <property name="username" value="#{jdbc.userName}"></property>
   <property name="password" value="#{jdbc.password}"></property>
   <!-- 設置連接最大數  -->
   <property name="maxActive" value="20"></property>
   <!-- 設置連接池實例化時初始創建的連接數 -->
   <property name="initialSize" value="2"></property>
</bean> 

<bean id="ssf" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dbcp"></property>
    <property name="mapperLocations" value="classpath:org/tarena/note/sql/*.xml"></property>
</bean>

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="sqlSessionFactory" ref="ssf"></property>
    <property name="basePackage" value="org.tarena.note.dao"></property>
</bean>

<!-- 開啟組件掃描,service,controller -->
<context:component-scan base-package="org.tarena.note"/> <!-- SpringMVC配置 --> <mvc:annotation-driven/> <!-- spring事務管理(注解版) --> <!-- 封裝事務的提交回滾 --> <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dbcp"></property> </bean> <!-- 帶有@Transactional標記的方法會調用txManager組件追加的事務控制 --> <tx:annotation-driven transaction-manager="txManager"/> <!-- AOP實例(注解版) --> <!-- 開啟AOP注解@Aspect,@Before,@After --> <aop:aspectj-autoproxy />

 

@Component
@Aspect
public class ExceptionBean {
    
    Logger logger = Logger.getLogger(ExceptionBean.class);
    //ex代表目標方法拋出的異常
    @AfterThrowing(pointcut="within(com.tarena.action..*)",throwing="ex")
    public void exec(Exception ex){
        ......
@Component//將該組件掃描到Spring容器
@Aspect//將該組件定義為方面組件
public class LoggerBean {
    
    Logger logger = Logger.getLogger(LoggerBean.class);
    
    //采用環繞通知
    @Around("within(com.tarena.action..*)")
    public Object logger(ProceedingJoinPoint jp) throws Throwable{
        ......

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM