SSH2搭建篇04——配置spring注解

来源:互联网 发布:linux启动过程详解 图 编辑:程序博客网 时间:2024/06/05 02:18

感觉使用spring注解相当方便,就对原来的项目做了下改变,主要是对spring配置文件的改变

1:applicationContext-hibernate.xml

<?xml version="1.0" encoding="UTF-8"?>  <beans xmlns="http://www.springframework.org/schema/beans"      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"      xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"      xsi:schemaLocation="http://www.springframework.org/schema/beans             http://www.springframework.org/schema/beans/spring-beans-3.0.xsd             http://www.springframework.org/schema/context             http://www.springframework.org/schema/context/spring-context-3.0.xsd             http://www.springframework.org/schema/tx             http://www.springframework.org/schema/tx/spring-tx-3.0.xsd             http://www.springframework.org/schema/aop             http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">             <bean id="configBean" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">          <property name="location">              <value>classpath:jdbc.properties</value>          </property>      </bean>      <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">          <property name="driverClassName" value="${db.driverClassName}" />          <property name="url" value="${db.url}" />          <property name="username" value="${db.username}" />          <property name="password" value="${db.password}" />          <property name="defaultAutoCommit" value="false" /><property name="maxActive" value="150" />        <property name="maxIdle" value="100" />        <property name="maxWait" value="60000" />        <property name="minIdle"  value="5" />        <property name="testOnBorrow" value="true"/>        <property name="testWhileIdle" value="true"/>         <property name="validationQuery" value="select 1 from dual" />    </bean>      <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">          <property name="dataSource" ref="dataSource" />          <property name="hibernateProperties">              <props>             <!--                  <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>   -->  <prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop>                              <prop key="hibernate.show_sql">true</prop>                  <prop key="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</prop>            </props>          </property>          <property name="mappingResources">              <list>                  <value>com/yeshun/bean/User.hbm.xml</value>              </list>          </property>      </bean>          <!--jdbcTemplate--><bean id="jdbcTemplate"class="org.springframework.jdbc.core.JdbcTemplate"><property name="dataSource" ref="dataSource" /></bean><!--transactionManager--><bean id="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager"><property name="sessionFactory" ref="sessionFactory" /></bean> <!-- 配置hibernateTemplate模板 -->      <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">          <property name="sessionFactory" ref="sessionFactory"></property>      </bean>  </beans>

2:applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"      xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"      xsi:schemaLocation="http://www.springframework.org/schema/beans             http://www.springframework.org/schema/beans/spring-beans-3.0.xsd             http://www.springframework.org/schema/context             http://www.springframework.org/schema/context/spring-context-3.0.xsd             http://www.springframework.org/schema/tx             http://www.springframework.org/schema/tx/spring-tx-3.0.xsd             http://www.springframework.org/schema/aop             http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">  <!-- Hibernate configuration --><import resource="classpath:applicationContext-hibernate.xml" /> <!-- 采用注释的方式配置bean -->      <context:annotation-config />      <context:component-scan base-package="com.yeshun" />            <!-- 采用注释的方式配置 aop -->      <aop:aspectj-autoproxy />          <!-- 采用annotation的方式配置事务 -->      <tx:annotation-driven transaction-manager="transactionManager" />        <!--采用配置文件的方式配置事务 -->        <!-- 配置一个事务切面 -->      <aop:config>          <aop:pointcut expression="execution(* com.yeshun.service.impl.*Impl.*(..))"               id="txManager" />          <aop:advisor advice-ref="txAdvice" pointcut-ref="txManager" />      </aop:config>        <!-- 配置事务的具体使用方式 -->      <tx:advice id="txAdvice" transaction-manager="transactionManager">          <tx:attributes>            <tx:method name="get*" propagation="REQUIRED" read-only="true" />            <tx:method name="find*" propagation="REQUIRED" read-only="true" />            <tx:method name="list*" propagation="REQUIRED" read-only="true" />            <tx:method name="load*" propagation="REQUIRED" read-only="true" />            <tx:method name="save*" propagation="REQUIRED" rollback-for="Exception"/>            <tx:method name="add*" propagation="REQUIRED" rollback-for="Exception"/>            <tx:method name="update*" propagation="REQUIRED" rollback-for="Exception"/>            <tx:method name="delete*" propagation="REQUIRED" rollback-for="Exception"/>        <!-- 其他方法使用默认的事务设置 -->            <tx:method name="*" propagation="REQUIRED"/>        </tx:attributes>     </tx:advice> </beans>  

还有就是BaseDaoImpl 有了些改变

package com.yeshun.dao.impl;import java.io.Serializable;import java.sql.SQLException;import java.util.List;import javax.annotation.Resource;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.orm.hibernate3.HibernateTemplate;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import com.yeshun.dao.BaseDao;/** * @author yeshun */public class BaseDaoImpl extends HibernateDaoSupport implements BaseDao {protected @Resource(name = "jdbcTemplate") JdbcTemplate jdbcTemplate;@Resource(name = "hibernateTemplate")public void setSupperHibernateTemplate(HibernateTemplate hibernateTemplate) {super.setHibernateTemplate(hibernateTemplate);}public Object getObject(Class clazz, Serializable id) {return getHibernateTemplate().load(clazz.getName(), id);}public Object saveObject(Object obj) throws RuntimeException, SQLException{return getHibernateTemplate().save(obj);}public void updateObject(Object obj) throws RuntimeException, SQLException{getHibernateTemplate().update(obj);}    public void saveOrUpdate(Object obj) throws RuntimeException, SQLException{    getHibernateTemplate().saveOrUpdate(obj);}public void deleteObject(Object obj) throws RuntimeException, SQLException{this.getHibernateTemplate().delete(obj);}public Object removeObject(Class clazz, Serializable id) throws RuntimeException, SQLException{// TODO Auto-generated method stubObject obj = this.getObject(clazz, id);if(obj!=null)deleteObject(obj);return obj;}public java.util.List getAll(Class clazz) {List list=getHibernateTemplate().loadAll(clazz);return list;}}

别的,基本是在DaoImpl 的类上面加上@Repository("UserDaoImpl")  (UserDaoImpl 相当于spring  bean的名字)

package com.yeshun.service.impl;import java.util.List;import javax.annotation.Resource;import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Transactional;import com.yeshun.bean.User;import com.yeshun.dao.UserDao;import com.yeshun.service.UserService;@Transactional@Service("UserServiceImpl")public class UserServiceImpl implements UserService{private @Resource(name = "UserDaoImpl")UserDao userDao;public List<User> findAllUser() {// TODO Auto-generated method stubreturn userDao.findAllUser();}}


也附上源码的下载地址点击打开链接