如何将maven项目改造成springboot项目

资源存放规则

  • 静态资源放在resources下的static包内,跳转的页面放在resources下的templates包内
  • 直接替换掉以前maven项目把页面放在WEB-INF/views 的方式
  • 在static包下创建一个error的包存放异常跳转的自定义页面,404.html 用于访问发生404信息而显示的页面,其他错误信息代码以此类推
    在这里插入图片描述

pom.xml配置之springboot

  • 继承springboot父项目依赖
 <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.3.RELEASE</version>
    </parent>
  • springboot打包插件
<build>
        <plugins>
            <!--            springboot打包插件-->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>

            <!--            mybatis逆向工程插件-->
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.2</version>
                <configuration>
                    <verbose>true</verbose>
                    <overwrite>false</overwrite>
                </configuration>
            </plugin>
        </plugins>
    </build>
  • springboot提供的依赖
  • 插件依赖内就包含mybatis,无需配置mybatis依赖,配置了会冲突
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>

        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.3.0</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.21</version>
        </dependency>
        <!-- SpringBoot热部署插件 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>

      
  • 其他的一些依赖
 <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <!--        阿里巴巴的JSON方式-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.47</version>
        </dependency>
        <!--poi-->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>4.1.2</version>
        </dependency>
        <!--fileupload-->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.1</version>
        </dependency>
        <!--Hutool 生成流水号-->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.4.7</version>
        </dependency>

application.properties配置

  • 放在resources下
  • 配置了此springboot配置文件,以前maven项目用的applicationContext.xml直接被替代了
#指定要使用哪个环境配置文件 比如 application-pro.properties
#spring.profiles.active=pro

#设置端口
server.port=80
#连接数据库
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql:///car_business?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=19980220

#分页插件
pagehelper.reasonable=true
pagehelper.page-size-zero=true
#打印sql日志
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
#设置日志级别
logging.level.root=info

#mybatis 可使用别名
mybatis.type-aliases-package=com.edt.domain


#freemarker
#一般我们会做3个配置,其余默认即可
#暴露seesion对象属性,可以在页面上获取session对象
spring.freemarker.expose-session-attributes=true
#配置为传统模式,空值自动处理
spring.freemarker.settings.classic_compatible=true
#重新制定模板后缀,springboot 2.2.x后 默认后缀是.ftlh
spring.freemarker.suffix=.ftl


启动类配置

  • 启动类内部就配好tomcat,所以无需使用本地tomcat或者使用插件tomcat方式打开了,直接运行启动类即可启动项目
  • 放在项目的模块包根路径,因为会扫描此类所在包及其所在包内的所有,放外面一点扫描范围则大
  • 添加注解@MapperScan 扫描mapper,此方式也替代了maven项目的applicatonContext.xml中配置扫描的方式
@SpringBootApplication
@MapperScan("com.edt.mapper")
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class,args);
    }
}

springboot拦截器配置

  • springboot用java类作为配置,取代了maven项目的applicationContext.xml配置

  • java类作为配置类需要加上@Configuration注解

  • 目前有2个拦截器,登陆拦截器和权限拦截器,将这2个拦截器配置给springboot管理,不懂拦截器的请跳转至: 登陆拦截和权限拦截器如何编写?
    在这里插入图片描述
    分别将这些拦截器类上都加上@Component 注解给到spring管理,为了给下面拦截器配置注入

  • 实现WebMvcConfigurer接口,重写addInterceptors方法添加拦截器

  • 注入要被添加的拦截器,通过addInterceptor方法添加它们

  • registry对象中的.excludePathPatterns() 以后可以继续.excludePathPatterns(),一直累加不会被拦截的路径

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    public static final String[] excludePathPatterns ={
            "/css/**","/js/**","/login.html","/index","/systemDictionaryItem/selectByTypeSn",
            "/appointment/save","/userLogin","/img/**"
    };

    @Autowired
    private LoginInterceptor loginInterceptor;
    @Autowired
    private PermissionInterceptor permissionInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(loginInterceptor)
                .addPathPatterns("/**")
                .excludePathPatterns(excludePathPatterns);
        registry.addInterceptor(permissionInterceptor)
                .addPathPatterns("/**")
                .excludePathPatterns(excludePathPatterns);

    }
}

使用日志的方式

  • 直接在需要日志的类上添加@Slf4j注解即可,内部就帮你创建好log变量名的日志对象了
  • 然后直接log.xxx 就能调用此日志对象打印日志了
  • 可以在打印里面加{}作为占位符, 然后逗号后面再加需要填入的值进去,依顺序填入
    在这里插入图片描述

logback-spring.xml配置

  • 在resources下创建logback-spring.xml
  • 可以使日志信息生成出文件在项目的根目录下(这部分被我注释掉了,需要用解开注释即可)
<?xml version="1.0" encoding="UTF-8"?>
<!--
    scan:开启日志框架的热部署,默认值true表示开启
    scanPeriod:热部署的频率,默认值60 second
    debug:设置输出框架内部的日志,默认值false
-->
<configuration scan="true" scanPeriod="60 second" debug="false">
    <property name="appName" value="springboot demo" />
    <contextName>${appName}</contextName>

    <!-- appender:日志输出对象,配置不同的类拥有不同的功能
        ch.qos.logback.core.ConsoleAppender:日志输出到控制台
    -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd-HH:mm:ss} %level [%thread]-%logger{35} >> %msg %n</pattern>
                 </encoder>
           </appender>

<!--ch.qos.logback.core.FileAppender:日志输出到文件中-->
<!--    <appender name="fileAppender" class="ch.qos.logback.core.FileAppender">-->
<!--        <encoder>-->
<!--            <pattern>%-4relative [%thread] %level %logger{35} - %msg %n</pattern>-->
<!--       </encoder>-->
<!--        <append>true</append>-->
<!--        <file>mylog.log</file>-->
<!--   </appender>-->


    <!-- root是项目通用的logger,一般情况下都是使用root配置的日志输出
        level:按照级别输出日志,日志级别,级别越高,输出的内容越少
            trace < debug < info < warn < error
    -->
       <root level="info">
    <appender-ref ref="STDOUT" />  <!-- 如果要生成日志文件这里则改为fileAppender-->
</root>

    <!-- 自定义的logger,用于专门输出特定包中打印的日志
    <logger name="cn.wolfcode.crm.mapper" level="trace">
    </logger>
	-->
</configuration>

改变启动项目时会出现springboot的图标

将你想要显示的图案放入banner.txt文件,并把此文件放进springboot的resources下即可

  • 英文生成banner图案链接地址:http://patorjk.com/software/taag/#p=display&f=Graffiti&t=EDT
  • 上传图片生成banner图案链接地址一:https://www.fontke.com/tool/image2ascii
  • 网络图片生成banner图案链接地址:https://www.degraeve.com/img2txt.php

本人启动项目的控制台效果图

  • 此演示的banner.txt文件已放入我博客资源下
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值