SSM升级为SpringBoot

SSM升级为SpringBoot

前段时间把原来的JavaWeb项目架构升级为了Maven项目。技术栈则是从原生的Jdbc+Servlet升级到了SSM,现在准备把项目升级为SpringBoot。

目前项目架构:

image-20201029172218532

升级步骤

  • 改POM
  • 改项目结构
  • 主启动类
  • 合并配置文件

改POM

POM文件导入的jar包非常的多,使用SpringBoot的场景启动器来简化。

image-20201029172425062

目前是一个单体项目,所有的功能都写在一个模块里面。所以我们可以使用<parent>标签来做jar包版本的仲裁。然后根据需要添加starter,这里我主要是SSM架构,所以添加如下几个即可。

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-parent</artifactId>
    <version>2.0.2.RELEASE</version>
</parent>

<dependencies>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>
    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjweaver</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.1.3</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
    </dependency>
</dependencies>

改项目结构

目前的项目长这样,其中我们的页面要从webapp转移到resources里面,然后其他的基本上差别不大。

image-20201029172759612

如图,我们的SpringBoot项目应该是这个结构,其中resources里面默认自带两个文件夹,一个是templates,一个是static。templates是个特殊的目录,不能直接访问,一般存放着是一些模板引擎,比如JSP,themeleaf这类的。由于我目前的项目都是HTML页面发送Ajax请求来完成的,所以我们可以不必创建templates这个目录,创建一个static即可,然后把我们的webapp的文件都转移过去。

image-20201029172914139

改造完毕,其实SpringBoot这是在Maven的基础上添加了一些东西,并没有修改已有的。

image-20201029173458388

主启动类

在我们的com.kaikeba.express目录右键创建主启动类,对于大家而言,只要保证这个类的路径和我们的各个文件夹同一层即可。

image-20201029173612038

创建主启动类

@SpringBootApplication
public class ExpressMainApplication {
    public static void main(String[] args) {
        SpringApplication.run(ExpressMainApplication.class, args);
    }
}

保证和我们创建的各个文件夹同一目录即可。

image-20201029174021513

合并配置文件

目前我们主要有:数据库配置文件,log4j配置文件,spring配置文件,springmvc配置文件。

image-20201029174132108

首先我们先创建一个springboot的配置文件,我比较喜欢yml,这里以yml作为演示:

如果变成一个树叶,说明我们的主启动类的配置是正确的。

image-20201029174535334

jdbc.properties

这个好改

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///express?useUnicode=true&characterEncoding=utf-8&useSSL=false
jdbc.username=root
jdbc.password=123456

yml

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/express?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
    username: root
    password: 123456

log4j

其实有点复杂,这里我们主要为了打印SQL和BUG

### 设置###
log4j.rootLogger = debug,stdout,D

### 输出信息到控制抬 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

## 输出DEBUG 级别以上的日志到=E://logs/error.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = E://logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

## 输出ERROR 级别以上的日志到=E://logs/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =E://logs/error.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

yml

这里我们可以如下组合,这里我先不配置日志文件了

mybatis:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    
logging:
  level:
    com.kaikeba.express.dao: debug  

spring-config.xml

大概分为如下部分。其中注解扫描就不用了,@SpringBootApplication这个注解自带注解扫描,加载配置文件来配置数据源也不用了,这里我们上面已经配好了。接下来是mybatis,这些对象的创建过程都交给自动配置类了我们等下进行对应的配置接口。事物的话,使用纯注解配置。

image-20201029175513705

为了简化目录结构,我把mapper.xml都放进resources的mapper目录下。

image-20201029175930888

配置mybatis的mapper扫描路径和别名管理器

image-20201029175857246

然而,我们的mybaits的starter并不是springboot写的,而是mybatis团队去适配springboot而写的。所以我们的@SpringBootApplication只会扫描自己的组件,不会扫描mybatis的组件,所以这里我们只是找到了xml的配置文件,并不知道我们的接口类在哪个目录。

这里我们添加一个注解@MapperScan,和@ComponentScan一个意思,扫描指定的包。

image-20201029180250209

接口推荐使用@Mapper注解,其实@@Repository也行,不过Mapper是适配MapperScan注解,肯定会有更好的容错效果,不要太纠结用哪个。

image-20201029180356234

springmvc.xml

其中注解扫描也是不用配置了,注解支持,静态资源过滤也不用了,static目录下的资源,Springboot都会视为静态资源处理。关于视图解析器,这里我们可以用springboot的配置文件进行配置,拦截器则是使用纯注解配置。

image-20201029180546671

配置视图解析器

image-20201029180801632

除了不能删的都删了。

image-20201029180850017

接下来,把之前的拦截器给加上,使用注解的方式来完成。

主启动类添加两注解。

image-20201029181514825

已经有了一个拦截器了,这里使用如下方式进行配置。

@Configuration
public class SpringBootConfig extends WebMvcConfigurerAdapter {
    @Bean
    public LoginInterceptor securityInterceptor() {
        return new LoginInterceptor();
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(securityInterceptor()).excludePathPatterns("/static/*")
                .excludePathPatterns("/error").addPathPatterns("/**");
    }
}

我们的Springboot改造好了。

image-20201029182245981

启动没有报错
image-20201029182323110
页面也升起来了

image-20201029182612407

总结

springboot和spring本来就是一家人,spring系列框架都是低侵入性的,所以我们写好的代码不要动,基本上就是改改文件即可。

  • 27
    点赞
  • 138
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
答:SSM框架是指Spring+SpringMVC+MyBatis,而SpringBootSpring家族的一个轻量级框架,使用起来更加方便快捷。SSM框架更关注于业务处理,而SpringBoot则更关注于快速搭建应用程序。 答:SSM框架Spring + Struts + MyBatis的缩写,是一种把Spring、Struts、MyBatis这三个框架结合在一起的开发模式,而Spring Boot是一个框架,可以用来快速构建项目,它提供了一种简洁而又全面的构建模式,可以更快地实现应用的开发,但它不能完全取代SSM框架SSM框架Spring+SpringMVC+MyBatis)是一种传统的Java Web开发框架,它基于三个流行的开源框架构建而成,其中Spring作为应用程序的基本框架SpringMVC负责Web层的处理,MyBatis则是一个优秀的持久层框架,提供了方便的数据库访问。 Spring Boot是一个基于Spring框架的快速开发的框架,它将许多常用的功能(如Web应用程序、数据访问、消息传递、安全性等)打包在一起,使得开发人员可以更快速地构建、测试和部署应用程序。 总的来说,SSM框架相对来说比较传统,需要手动配置各种组件和依赖,需要一定的Java Web开发经验和技能;而Spring Boot则是一种快速开发框架,提供了大量的自动化配置和优秀的开发体验,同时也提供了许多快速开发的工具,减轻了开发人员的工作量。但是,Spring Boot也可能会使得初学者在框架的使用上过于依赖自动化配置,缺乏对底层原理的深入理解,所以在使用时需要根据实际情况选择合适的框架

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值