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

 

posted @ 2016-05-26 11:12  DarrenChan陈驰  阅读(1978)  评论(0编辑  收藏  举报
Live2D