package com.epeer.dao;
public interface UserDao ...{
public void insertUserIp(String startip, String endip);
}
package com.epeer.dao;
import java.text.MessageFormat;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
public class UserDaoImpl extends JdbcDaoSupport implements UserDao ...{
private static final String INSERT = "insert into ipsegment(is_id, endip, startip) values(ipsegment_seq.nextval,''{0}'',''{1}'')";
public void insertUserIp(String startip, String endip) ...{
getJdbcTemplate().execute(MessageFormat.format(INSERT, new Object[]...{startip, endip}));
}
}
package com.epeer.service;
public interface UserService ...{
public void insertUserIp(String startip, String endip);
}
package com.epeer.service;
import org.springframework.transaction.annotation.Transactional;
import com.epeer.dao.UserDao;
public class UserServiceImpl implements UserService ...{
private UserDao userDao;
public UserDao getUserDao() ...{
return userDao;
}
public void setUserDao(UserDao userDao) ...{
this.userDao = userDao;
}
public void insertUserIp(String startip, String endip) ...{
userDao.insertUserIp("192.168.0.3", "0.0.0.0");
}
}
<?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:util="http://www.springframework.org/schema/util"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd"
default-autowire="byName">
<!-- =========================================================================================== -->
<!-- 加载属性文件 -->
<!-- =========================================================================================== -->
<bean id="jdbcConfiguration"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:jdbc-config.properties</value>
</list>
</property>
</bean>
<!-- =========================================================================================== -->
<!-- 配置数据源 -->
<!-- =========================================================================================== -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close" p:driverClassName="${jdbc_driver}"
p:url="${jdbc_url}" p:username="${username}" p:password="${password}"/>
<!-- =========================================================================================== -->
<!-- 事务配置 -->
<!-- =========================================================================================== -->
<!-- Transaction manager for a single JDBC DataSource -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager"/>
<!-- 如果采用XML配置则用下面的配置 -->
<aop:config proxy-target-class="true">
<aop:advisor pointcut="execution(* com.epeer.service.*Impl.*(..))"
advice-ref="txAdvice"/>
</aop:config>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="insert*" no-rollback-for="java.lang.Throwable"/>
<tx:method name="remove*"/>
<tx:method name="add*" no-rollback-for="java.lang.Throwable"/>
<tx:method name="*" read-only="true"/>
</tx:attributes>
</tx:advice>
<!-- 如果采用XML配置则用上面的配置 -->
<!-- 如果采用标注则去掉上面的配置,同时加入下面一行 -->
<!--
<tx:annotation-driven transaction-manager="transactionManager"/>
<!-- =========================================================================================== -->
<!-- 事务配置 -->
<!-- =========================================================================================== -->
<!-- Transaction manager for a single JDBC DataSource -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager"/>
<tx:annotation-driven transaction-manager="transactionManager"/>
<!-- =========================================================================================== -->
<!-- DAO配置 -->
<!-- =========================================================================================== -->
<bean id="userDao" class="com.epeer.dao.UserDaoImpl"/>
<!-- =========================================================================================== -->
<!-- Service配置 -->
<!-- =========================================================================================== -->
<bean id="userService" class="com.epeer.service.UserServiceImpl"/>
采用标注的话UserServiceImpl如下
package com.epeer.service;
import org.springframework.transaction.annotation.Transactional;
import com.epeer.dao.UserDao;
@Transactional
public class UserServiceImpl implements UserService ...{
private UserDao userDao;
public UserDao getUserDao() ...{
return userDao;
}
public void setUserDao(UserDao userDao) ...{
this.userDao = userDao;
}
@Transactional(noRollbackForClassName = "java.lang.Throwable")
public void insertUserIp(String startip, String endip) ...{
userDao.insertUserIp("192.168.0.3", "0.0.0.0");
}
}
分享到:
相关推荐
Spring 3.0 提供了两种事务管理配置方法:基于 XML 的事务管理和基于 @Transactional 的事务管理,这两种方法都是为了实现事务管理的目标,分别具有不同的配置方式和优缺点。 基于 XML 的事务管理 这种方法不需要...
在Spring框架中,事务管理是核心功能之一,它为应用程序提供了强大的事务控制能力,确保了数据的一致性和完整性。本文将深入探讨Spring中的几种事务配置方式,帮助开发者更好地理解和运用。 1. **编程式事务管理** ...
Spring支持两种类型的事务管理:编程式事务管理和声明式事务管理。其中声明式事务管理因其易于使用和维护而被广泛采用。 ##### 1.1 Spring声明式事务介绍 Spring的声明式事务管理是通过配置文件或注解的方式来实现...
综上所述,Spring 2.x的声明式事务配置模板主要由`applicationContext.xml`中的事务管理器配置和注解驱动的事务管理两部分组成,结合`@Transactional`注解在业务逻辑中的使用,可以实现自动化、高效且易于维护的事务...
声明式事务管理主要有两种实现方式:基于XML的配置和基于注解的方式。基于XML的配置,可以在`<tx:advice>`标签中定义事务规则,并通过`<aop:config>`或`<aop:aspectj-autoproxy>`来关联到业务逻辑。而基于注解的方式...
在Spring框架中,事务管理是核心功能之一,它为开发者提供了强大的事务控制能力,确保了数据的...在`springboot.tx`文件中,你可以找到这两种事务管理方式的具体实现,这对于理解和学习Spring事务管理是非常有价值的。
Spring的配置主要分为XML配置和注解配置两种方式。XML配置文件中,开发者可以定义bean的实例化、依赖关系、属性值等。注解配置则允许开发者在类或方法上直接标注元数据,简化了配置过程。此外,Spring还提供了一个...
Spring配置文件是XML格式的文件,用于定义对象及其依赖关系,通过配置文件,Spring IoC容器可以管理这些对象的生命周期。 7、Spring应用程序有哪些不同组件? Spring应用程序的组件主要包括: - Beans:在Spring ...
注解式事务是通过在Spring配置文件中定义一个事务管理对象,然后加入节点,引用该事务管理对象,然后即可在需要进行事务处理的类和方法使用@Transactional进行标注。 在使用注解式事务时,我们需要在Spring配置文件...
7. **XML配置与Java配置**:Spring支持两种配置方式,一种是传统的XML配置,另一种是基于Java的@Configuration类和@Bean注解的配置。Java配置方式更符合Java编程习惯,且可读性更强。 8. **bean的生命周期**:...
总的来说,Spring 3.2提供了强大的IoC和DI功能,支持XML和注解两种配置方式,方便地处理集合注入,以及与Struts2和Hibernate的无缝集成。这些特性使得Spring成为开发复杂企业级应用的理想选择,降低了代码的耦合度,...
配置Bean的方式有两种:XML配置和注解配置。XML配置文件中,我们定义Bean的ID、类以及依赖关系;而注解配置则允许我们在类或方法上直接标注,使代码更加简洁。 接下来,我们要讨论的是Spring的AOP模块。AOP允许我们...
**Spring** 是一个全面的企业级应用开发框架,不仅包含了IOC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)两大核心特性,还提供了数据访问、事务管理、邮件服务、远程调用...
1. **实现方式**:Spring提供了声明式和编程式两种事务管理方式。声明式事务管理通过`@Transactional`注解实现;编程式事务管理通过`PlatformTransactionManager`接口实现。 ### Spring MVC 1. **概念**:Spring ...
手册会详细介绍如何配置和使用这两种事务管理方式。 容器和上下文也是Spring框架的重要组成部分。Spring 2.0的容器负责管理Bean的生命周期和装配。手册会详细讲解Bean的生命周期回调方法、作用域以及如何使用...
##### 2.3 Spring事务管理 - **声明式事务管理**:通过XML或注解的方式进行事务管理,降低了代码的耦合度。 - **编程式事务管理**:通过编程的方式来管理事务,适用于更复杂的情况。 #### 三、Spring注解开发详解 ...
4. 整合Spring和Hibernate:在Spring配置中声明DAO实现,并启用Hibernate事务管理。 5. 编写业务逻辑:在服务层中注入DAO,调用其方法完成业务处理。 6. 测试:编写单元测试,确保各个组件协同工作。 在给定的...
可以将配置文件写成两个文件,application-dev.yml 和 application-prod.yml,在 application.yml 中指定调用的配置文件。这样可以根据不同的环境来切换配置文件。 注解的使用 @Component 和 @...