`
sanry
  • 浏览: 37104 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

现有web系统替换成Spring Boot2框架 之3 配置数据库驱动,事务控制

阅读更多

3.1 配置mysql驱动

 <dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

</dependency>

 

 3.2 配置数据源

具体配置参数后面补充application.properties添加如下基本配置:

 

spring.datasource.url=jdbc:mysql://127.0.0.1/databasename

spring.datasource.username=uname

spring.datasource.password=123

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

spring.datasource.hikari.autoCommit=false

 

3.3 pom.xml添加依赖:

 

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-jdbc</artifactId>

</dependency>

 

<!--springBoot 的aop-->

    <dependency>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-aop</artifactId>

</dependency>

 

3.4 事务管理

以*Service结尾的java类以update、add、del等开头的方法上面增加控制事务的提交与回滚,配置如下:

 

 

import java.util.Collections;

 

import org.aspectj.lang.annotation.Aspect;

import org.springframework.aop.Advisor;

import org.springframework.aop.aspectj.AspectJExpressionPointcut;

import org.springframework.aop.support.DefaultPointcutAdvisor;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import org.springframework.transaction.PlatformTransactionManager;

import org.springframework.transaction.TransactionDefinition;

import org.springframework.transaction.interceptor.DefaultTransactionAttribute;

import org.springframework.transaction.interceptor.NameMatchTransactionAttributeSource;

import org.springframework.transaction.interceptor.RollbackRuleAttribute;

import org.springframework.transaction.interceptor.RuleBasedTransactionAttribute;

import org.springframework.transaction.interceptor.TransactionInterceptor;

 

@Aspect

@Configuration

public class TransactionAdviceConfig {

 

private static final String AOP_POINTCUT_EXPRESSION = "execution(* bai.*..*Service.*(..)) || execution(* bai.*..*.*Service.*(..))";

@Autowired

private PlatformTransactionManager transactionManager;

@Bean

public TransactionInterceptor txAdvice() {

RuleBasedTransactionAttribute txAttr_REQUIRED =new RuleBasedTransactionAttribute();

txAttr_REQUIRED.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);

txAttr_REQUIRED.setRollbackRules(Collections.singletonList(new RollbackRuleAttribute(Exception.class)) );


DefaultTransactionAttribute txAttr_REQUIRED_READONLY = new DefaultTransactionAttribute();

txAttr_REQUIRED_READONLY.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);

        txAttr_REQUIRED_READONLY.setReadOnly(true);

        NameMatchTransactionAttributeSource source = new NameMatchTransactionAttributeSource();

        source.addTransactionalMethod("save*", txAttr_REQUIRED);

        source.addTransactionalMethod("del*", txAttr_REQUIRED);

        source.addTransactionalMethod("update*", txAttr_REQUIRED);

        source.addTransactionalMethod("exec*", txAttr_REQUIRED);

        source.addTransactionalMethod("set*", txAttr_REQUIRED);

        source.addTransactionalMethod("get*", txAttr_REQUIRED);

        source.addTransactionalMethod("remove*", txAttr_REQUIRED);

        source.addTransactionalMethod("save*", txAttr_REQUIRED);

        source.addTransactionalMethod("add*", txAttr_REQUIRED);

        source.addTransactionalMethod("create*", txAttr_REQUIRED);

        source.addTransactionalMethod("noTrans*", txAttr_REQUIRED);

        //read only

        source.addTransactionalMethod("query*", txAttr_REQUIRED_READONLY);

        source.addTransactionalMethod("find*", txAttr_REQUIRED_READONLY);

        source.addTransactionalMethod("list*", txAttr_REQUIRED_READONLY);

        source.addTransactionalMethod("count*", txAttr_REQUIRED_READONLY);

        source.addTransactionalMethod("is*", txAttr_REQUIRED_READONLY);

        return new TransactionInterceptor(transactionManager, source);

}


@Bean

public Advisor txAdviceAdvisor() {

        AspectJExpressionPointcut pointcut = new AspectJExpressionPointcut();

        pointcut.setExpression(AOP_POINTCUT_EXPRESSION);

        return new DefaultPointcutAdvisor(pointcut, txAdvice());

    }

}

 

 

分享到:
评论

相关推荐

    struts2+spring+mybatis整合所需jar包

    实际项目中,可能还需要根据具体需求进行调整,例如引入其他框架(如Hibernate或iBatis)替换MyBatis,或者使用Spring Boot来简化配置和启动流程。 总之,SSM整合是Java Web开发中常见的技术栈,熟练掌握这三者的...

    spring-boot 集成 tk mybatis

    Spring Boot 是一个由 Pivotal 团队创建的 Java 框架,旨在简化 Spring 应用程序的初始搭建以及开发过程。它提供了一种“开箱即用”的体验,集成了大量的常用库,如数据访问、安全、WebSocket 等,让开发者能够快速...

    start-spring-io

    Spring框架作为Java领域最流行的开源框架之一,以其强大的功能和灵活的设计赢得了广大开发者的心。Spring IO是Spring框架的一部分,主要关注于简化开发、提高可测试性和促进良好的编程实践。本文将从Spring的核心...

    Spring Boot JDBC 连接数据库示例

    Spring Boot JDBC 连接数据库是开发Java Web应用时常见的任务,它允许我们直接与数据库进行交互,执行SQL语句,并处理结果。在本示例中,我们将深入探讨如何使用Spring Boot与MySQL数据库建立连接,以及如何使用JDBC...

    ssh整合jar包(struts-2.3.16 + spring-4.0.0 + hibernate-4.2.8)

    2. **配置pom.xml**:在Maven项目中添加SSH框架及数据库驱动的依赖。 3. **配置struts2**:编写struts.xml配置文件,定义Action、结果类型、拦截器等。 4. **配置spring**:创建spring的配置文件(如...

    spring

    5. **Spring MVC**:Spring的模型-视图-控制器(MVC)框架,用于构建Web应用程序。它提供了处理HTTP请求、模型绑定、数据验证和视图渲染等功能,使得Web开发更加高效。 6. **Spring Boot**:为简化Spring应用的初始...

    Spring Boot整合MyBatis连接Oracle数据库的步骤全纪录

    首先,我们需要在Spring Boot项目中添加MyBatis和Oracle数据库驱动的依赖。在你的`pom.xml`文件中,你需要引入以下两个依赖: ```xml &lt;groupId&gt;org.mybatis.spring.boot &lt;artifactId&gt;mybatis-spring-boot-...

    初始化的单体流程引擎 camunda

    本篇文章将详细探讨如何在Spring Boot框架中集成并初始化Camunda流程引擎。 **Spring Boot集成Camunda** Spring Boot以其“开箱即用”的特性,简化了Java应用的开发过程。集成Camunda到Spring Boot项目中,可以...

    springboot demo 整合mybaits、已配置好

    -- 数据库驱动,这里以 MySQL 为例 --&gt; &lt;groupId&gt;mysql &lt;artifactId&gt;mysql-connector-java ``` 接着,创建 MyBatis 的配置文件 `mybatis-config.xml`,用于配置 MyBatis 的全局属性,比如日志、类型处理器等...

    SpringBoot集成MySQL和Mybatis

    Spring Boot以其简化配置、快速启动的优势,极大地提高了开发效率,而MyBatis作为轻量级的持久层框架,使得数据库操作更加灵活方便。本篇将详细介绍如何在Spring Boot项目中集成MySQL数据库和MyBatis框架,以及如何...

    将之前基于SSM实现的教务管理系统改成SpringBoot+Mybatis实现.zip

    传统的SSM(Spring、Struts2、Mybatis)框架组合在Java Web开发中曾广泛使用,但随着技术的发展,SpringBoot逐渐成为首选,因为它简化了项目配置,提高了开发效率。本项目旨在将原有的基于SSM的教务管理系统迁移到...

    SpringBoot整合MyBatis实现增删改查

    在IT行业中,Spring Boot和MyBatis是两个非常流行的开源框架,它们的结合使得开发Java Web应用程序变得更加便捷高效。Spring Boot简化了Spring框架的配置,提供了快速启动的应用程序开发方式,而MyBatis则是一个轻量...

    ssh登录注册 希望能给大家帮助

    SSH是三个开源框架Struts、Spring和Hibernate的缩写,它们分别是用于Web应用的MVC框架、依赖注入和面向切面编程框架以及对象关系映射框架。这篇文章主要介绍了如何在MyEclipse 6.5环境下进行SSH框架的整合实验。 ...

    SSM_jar.rar

    1. 引入依赖:在项目构建工具(如Maven或Gradle)的配置文件中添加SSM框架及数据库驱动的依赖。 2. 配置Spring:定义bean的实例化和依赖关系,配置数据源和事务管理器。 3. 配置SpringMVC:设置URL映射规则,定义...

    Struts2.0示例

    在Struts2与Spring整合时,Spring可以作为容器来管理和注入Action类,这样我们可以在不修改Action代码的情况下,轻松地替换或扩展服务实现。同时,Spring也可以管理Hibernate SessionFactory,实现数据访问层的事务...

    Java面试框架高频问题2019

    - 在Spring配置文件中通过`&lt;bean&gt;`标签定义DataSource,配置JDBC连接参数,并指定具体的数据库驱动类。 **问题十:Spring里面applicationContext.xml文件能不能改成其他文件名?** - 可以,只要在启动类中通过`@...

    如何创建一个SSH项目

    在IT行业中,SSH(Struts2、Spring、Hibernate)是一个常用的Java Web开发框架组合,它为开发者提供了构建高效、可扩展的企业级应用的能力。本文将详细介绍如何创建一个SSH项目,包括环境搭建、配置以及基本的项目...

    Springboot2 实现简单的增删改查

    在本文中,我们将深入探讨如何在Spring Boot 2框架中使用JDBC和MyBatis实现数据的简单增删改查操作。Spring Boot以其简洁的配置和快速开发特性,已经成为Java领域中非常流行的微服务框架。而MyBatis作为一款优秀的...

    SSH2020最新面试题

    -JavaServer Faces(JSF)是一个基于组件的Web开发框架,提供了一种模型-视图-控制器(MVC)架构,使得组件驱动开发(Component-based Development)变得可能。 8. **数据库索引与约束**: -索引是数据库中用于...

    2018年面试前一定要看的知识点,最全框架大全知识点,最新编写高质量代码秘籍

    1. Java框架:Spring Boot、Spring MVC、MyBatis,理解IoC/DI原理,AOP的使用,事务管理,以及Spring Cloud微服务架构。 2. 前端框架:React、Vue、Angular,组件化开发,虚拟DOM,状态管理(Redux、Vuex)等。 3....

Global site tag (gtag.js) - Google Analytics