腾讯云做网站需要报备/泰安百度推广代理
使用Spring Initializr开始搭建
项目请点击
注意红框标识出来这几栏一定要选择自己对应的环境
说明:
-
Group:项目组名(可以乱写)
-
Artifact:项目名
-
java version:java的版本
-
Package:生成的包目录结构
之后点击next
这里按照自己的需求进行选择(这里是选择starter场景启动器,也就是你选了啥,你的pom文件就会有生成对应依赖配置),之后点击next
之后他会生成如下图所示这些目录
编写配置
这里不对springboot的配置文件做详细说明,本文旨在快速搭建一个SpringBoot的项目
引入pom文件依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.4.1</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.edu</groupId><artifactId>studentdemo01</artifactId><version>0.0.1-SNAPSHOT</version><name>studentdemo01</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version><pagehelper.version>5.1.10</pagehelper.version><conmmonsLang.version>2.6</conmmonsLang.version><hutoolCore.version>5.0.7</hutoolCore.version><swagger.version>2.9.2</swagger.version><dubbo.version>2.7.3</dubbo.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><!--把logback日志丢了--><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions></dependency><!--mybatis场景启动器--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.4</version></dependency><!--mysql的连接--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--分页插件--><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>${pagehelper.version}</version></dependency><!--druid数据库--><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.22</version></dependency><dependency><groupId>commons-lang</groupId><artifactId>commons-lang</artifactId><version>${conmmonsLang.version}</version></dependency><!--hutool工具包--><dependency><groupId>cn.hutool</groupId><artifactId>hutool-core</artifactId><version>${hutoolCore.version}</version></dependency><!-- 引入servlet依赖. --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><scope>provided</scope></dependency><!-- 引入servlet-jstl依赖. --><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId></dependency><!--SpringBoot默认不支持JSP,需要在项目中添加相关的依赖--><dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-jasper</artifactId></dependency><!--模板引擎--><!--thymeleaf 模板依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><!--swagger 2.9.2会有一个莫名其妙的错误信息,无伤大雅--><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>${swagger.version}</version><exclusions><exclusion><groupId>io.swagger</groupId><artifactId>swagger-annotations</artifactId></exclusion><exclusion><groupId>io.swagger</groupId><artifactId>swagger-models</artifactId></exclusion></exclusions></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>${swagger.version}</version></dependency><dependency><groupId>io.swagger</groupId><artifactId>swagger-annotations</artifactId><version>1.5.21</version></dependency><dependency><groupId>io.swagger</groupId><artifactId>swagger-models</artifactId><version>1.5.21</version></dependency><!--redis场景启动器--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><!--aop场景启动器--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency><!--AspectJ--><dependency><groupId>org.aspectj</groupId><artifactId>aspectjrt</artifactId></dependency><!--织入要用--><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId></dependency><!--CGLIB动态代理--><dependency><groupId>cglib</groupId><artifactId>cglib</artifactId><version>3.1</version></dependency><!-- file upload --><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.1</version></dependency><!-- httpclient begin --><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.3.5</version></dependency><!-- ftp相关依赖 --><dependency><groupId>commons-net</groupId><artifactId>commons-net</artifactId><version>3.5</version></dependency><!--log4j场景启动器--><!-- <dependency>--><!-- <groupId>org.springframework.boot</groupId>--><!-- <artifactId>spring-boot-starter-log4j</artifactId>--><!-- <version>1.3.8.RELEASE</version>--><!-- </dependency>--><!--配置文件场景启动器,用于你写yml--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency><!-- 引入log4j2依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-log4j2</artifactId></dependency><dependency><!--整合Dubbo--><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>${dubbo.version}</version><exclusions><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo</artifactId><version>${dubbo.version}</version></dependency><!--curator依赖--><dependency><groupId>org.apache.curator</groupId><artifactId>curator-framework</artifactId><version>4.0.1</version></dependency><dependency><groupId>org.apache.curator</groupId><artifactId>curator-recipes</artifactId><version>2.8.0</version></dependency><!--zookeeper依赖--><dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.4.13</version><type>pom</type><exclusions><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId></exclusion></exclusions></dependency><dependency><groupId>com.101tec</groupId><artifactId>zkclient</artifactId><version>0.10</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
编写application.properties/application.xml(我的习惯是编写yml文件)
注意如果没有生成如下图的文件可以自己新建(注意直接在resources
目录下建)
spring:datasource:name: druidurl: jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&autoReconnect=true&useSSL=false&useAffectedRows=trueusername: rootpassword: admin123# 使用druid数据源type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: com.mysql.jdbc.Driverdruid:#初始化、最小、最大连接数initial-size: 5min-idle: 5max-active: 20# 配置获取连接等待超时的时间max-wait: 60000# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒time-between-eviction-runs-millis: 60000# 配置一个连接在池中最小生存的时间,单位是毫秒min-evictable-idle-time-millis: 300000validation-query: select 'x'test-while-idle: truetest-on-borrow: falsetest-on-return: false# 打开PSCache,并且指定每个连接上PSCache的大小pool-prepared-statements: truemax-pool-prepared-statement-per-connection-size: 20# 配置监控统计拦截的filtersfilters: stat# 通过connectProperties属性来打开mergeSql功能;慢SQL记录connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000#关闭模板引擎的缓存thymeleaf:cache: false#redis连接配置redis:host: 127.0.0.1port: 6379jedis:pool:max-idle: 20max-wait: 3000servlet:multipart:#单个文件最大max-file-size: 50MB#单次请求的文件总大小max-request-size: 500MB#开启多文件上传enabled: true#不设置延迟解析resolve-lazily: false
#视图解析器
# mvc:
# view:
# suffix: .html
# mybatis_config
mybatis:mapper-locations: classpath:mapper/*.xmlconfig-location: classpath:mybatis/config.xml
# 写了配置文件就不用下面的
# configuration:#org.apache.ibatis.logging.stdout.StdOutImpl #控制台打印sql语句方便调试sql语句执行错误#org.apache.ibatis.logging.log4j2.Log4j2Impl #这个不在控制台打印查询结果,但是在log4j中打印
# #开启缓存
# cache-enabled: true
# #开启懒加载
# lazy-loading-enabled: true
# #将other转为null,解决某些数据库识别不来null
# jdbc-type-for-null: null
# aggressive-lazy-loading: true
# type-aliases-package: com.edu.pojo
# 访问时就是localhost:8080/stu/v1
server:servlet:context-path: /stu/v1#解决看着swagger不爽的bug
logging:
# config: classpath:logback.xmlconfig: classpath:log4j2.xmllevel:#日志的打印root: infoorg.springframework.web: info
# org.hibernate: error#解决Swagger报错(掩耳盗铃)io.swagger.models.parameters.AbstractSerializableParameter: error#log4j2的打印(指定自己的dao包)com.edu.mapper: debug#logback日志保存路径
# file:
# path: log
mybatiesconfig.xml配置文件的编写(现在主流是使用配置类来代替xml配置,本文使用的xml配置)
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><!-- 开启懒加载 --><settings><setting name="lazyLoadingEnabled" value="true"/><setting name="aggressiveLazyLoading" value="false" /><setting name="jdbcTypeForNull" value="NULL" /><!-- 不设置这个参数的话有一些数据库不能识别null,如oracle数据库 -->
<!-- org.apache.ibatis.logging.stdout.StdOutImpl 控制台打印sql语句以及结果集方便调试sql语句执行错误-->
<!-- org.apache.ibatis.logging.log4j2.Log4j2Impl 这个不在控制台打印查询结果,但是在log4j中打印--><setting name="logImpl" value="org.apache.ibatis.logging.log4j2.Log4j2Impl" /></settings>
<!-- <typeAliases>-->
<!-- <package name="com.edu.bean"/>-->
<!-- </typeAliases>--><!-- 配置分页插件 5之后的版本:com.github.pagehelper.PageInterceptor --><plugins><!--分页插件--><plugin interceptor="com.github.pagehelper.PageInterceptor"><property name="reasonable" value="true"/></plugin></plugins>
</configuration>
日志文件(本文使用的是log4j2),下面把log4j2和log4j的配置都弄出来了
log4j.properties
### set log levels 指定日志的级别 ,推荐开发的时候使用debug 上线之后使用INFO###
log4j.rootLogger=debug , stdout , D , E
### 输出到控制台 ###
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=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
#### 输出到日志文件 ###
log4j.appender.D=org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File=logs/log.log
log4j.appender.D.Append=true
log4j.appender.D.Threshold=DEBUG ## 输出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
#
#### 保存异常信息到单独文件 ###
#log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
#log4j.appender.D.File = logs/error.log ## 异常日志文件名
#log4j.appender.D.Append = true
#log4j.appender.D.Threshold = ERROR ## 只输出ERROR级别以上的日志!!!
#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
log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出-->
<!--monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数-->
<configuration monitorInterval="5"><!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL --><!--变量配置--><Properties><!-- 格式化输出:%date表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %msg:日志消息,%n是换行符--><!-- %logger{36} 表示 Logger 名字最长36个字符 --><property name="LOG_PATTERN" value="%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" /><!-- 定义日志存储的路径,不要配置相对路径 --><property name="FILE_PATH" value="logs/" /><property name="FILE_NAME" value="studentdemo01" /></Properties><appenders><console name="Console" target="SYSTEM_OUT"><!--输出日志的格式--><PatternLayout pattern="${LOG_PATTERN}"/><!--控制台只输出level及其以上级别的信息(onMatch),其他的直接拒绝(onMismatch)--><ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/></console><!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,适合临时测试用--><File name="Filelog" fileName="${FILE_PATH}/test.log" append="false"><PatternLayout pattern="${LOG_PATTERN}"/></File><!-- 这个会打印出所有的info及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档--><RollingFile name="RollingFileInfo" fileName="${FILE_PATH}/info.log" filePattern="${FILE_PATH}/${FILE_NAME}-INFO-%d{yyyy-MM-dd}_%i.log.gz"><!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)--><ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/><PatternLayout pattern="${LOG_PATTERN}"/><Policies><!--interval属性用来指定多久滚动一次,默认是1 hour--><TimeBasedTriggeringPolicy interval="1"/><SizeBasedTriggeringPolicy size="10MB"/></Policies><!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件开始覆盖--><DefaultRolloverStrategy max="15"/></RollingFile><!-- 这个会打印出所有的warn及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档--><RollingFile name="RollingFileWarn" fileName="${FILE_PATH}/warn.log" filePattern="${FILE_PATH}/${FILE_NAME}-WARN-%d{yyyy-MM-dd}_%i.log.gz"><!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)--><ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/><PatternLayout pattern="${LOG_PATTERN}"/><Policies><!--interval属性用来指定多久滚动一次,默认是1 hour--><TimeBasedTriggeringPolicy interval="1"/><SizeBasedTriggeringPolicy size="10MB"/></Policies><!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件开始覆盖--><DefaultRolloverStrategy max="15"/></RollingFile><!-- 这个会打印出所有的error及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档--><RollingFile name="RollingFileError" fileName="${FILE_PATH}/error.log" filePattern="${FILE_PATH}/${FILE_NAME}-ERROR-%d{yyyy-MM-dd}_%i.log.gz"><!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)--><ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/><PatternLayout pattern="${LOG_PATTERN}"/><Policies><!--interval属性用来指定多久滚动一次,默认是1 hour--><TimeBasedTriggeringPolicy interval="1"/><SizeBasedTriggeringPolicy size="10MB"/></Policies><!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件开始覆盖--><DefaultRolloverStrategy max="15"/></RollingFile></appenders><!--Logger节点用来单独指定日志的形式,比如要为指定包下的class指定不同的日志级别等。--><!--然后定义loggers,只有定义了logger并引入的appender,appender才会生效--><loggers><!--过滤掉spring和mybatis的一些无用的DEBUG信息--><logger name="org.mybatis" level="debug" additivity="false"><AppenderRef ref="Console"/></logger><!--监控系统信息--><!--若是additivity设为false,则 子Logger 只会在自己的appender里输出,而不会在 父Logger 的appender里输出。--><Logger name="org.springframework" level="info" additivity="false"><AppenderRef ref="Console"/></Logger><!--配置输出sql语句--><logger name="org.apache.ibatis" level="TRANCE"/><logger name="java.sql.Connection" level="TRANCE"/><logger name="java.sql.Statement" level="TRANCE"/><logger name="java.sql.PreparedStatement" level="TRANCE"/><root level="info"><appender-ref ref="Console"/><appender-ref ref="Filelog"/><appender-ref ref="RollingFileInfo"/><appender-ref ref="RollingFileWarn"/><appender-ref ref="RollingFileError"/></root></loggers>
</configuration>
一些来连接参数配置文件的编写
daoController.properties文件(主要用来登录druid的监视页面)
#Druid后台访问配置
druid_loginUsername=admin
druid_loginPassword=123456
druid_allow=127.0.0.1
ftpconn.properties(ftp文件服务器连接日志)
host = 127.0.0.1
port = 21
ftp_user = ftpuser
ftp_password = ftpuser
ftp_basePath = /home/ftpuser/img
ftp_pic_base_url = http://127.0.0.1:9001/img
配置类的内容(主要是Swagger以及一些插件如ftp等的配置)
DaoComponetConfig.java(Druid监视页面的配置)
package com.edu.config;import com.alibaba.druid.support.http.StatViewServlet;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;import java.util.HashMap;/*** @作者 five-five* @创建时间 2021/1/13*/
@Configuration
@PropertySource(value = {"classpath:/daoController.properties"})
public class DaoComponentConfig {//Druid后台界面访问参数@Value("${druid_loginUsername}")private final String DRUID_LOGING_USERNAME = null;@Value("${druid_loginPassword}")private final String DRUID_LOGING_PASSWORD = null;@Value("${druid_allow}")private final String DRUID_LOGING_ALLOW = null;/*** 用于处理Druid监视见面的servlet** @return*/@Bean//有这个servlet的话就不注入了@ConditionalOnMissingBeanpublic ServletRegistrationBean statViewServlet() {//拦截路径ServletRegistrationBean<StatViewServlet> bean = new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*");HashMap<String, String> initParameters = new HashMap<>();// 增加配置项initParameters.put("loginUsername", DRUID_LOGING_USERNAME);initParameters.put("loginPassword", DRUID_LOGING_PASSWORD);initParameters.put("allow", DRUID_LOGING_ALLOW); //如果为空所有人都可以访问,如果localhost本机可以访问,如果具体的ip值则具体的值// 关于其他配置可以在类ResourceServlet下查看// 禁止xu访问 initParameters.put("xu","192.168.1.**");// 后台需要有人登陆bean.setInitParameters(initParameters);return bean;}
}
WebAppConfig .java关于所有页面的整合都在这(你把它想像成SpringMVC的配置)
package com.edu.config;import com.alibaba.druid.support.http.StatViewServlet;
import com.edu.filter.LogingFilter;
import com.edu.servlet.MyServlet;
import com.edu.servlet.WebServletFilter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.context.annotation.PropertySource;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;/*** 所有关于页面的整合都在这里** @作者 five-five* @创建时间 2021/1/11*/
@PropertySource(value = {"classpath:/ftp/ftpconn.properties", "classpath:/front.properties"})
//@ServletComponentScan(value = {"com.edu.servlet"})
@Configuration
//@EnableWebMvc//全面接管SpringBoot(写了这个注解,就相当于ssm开发了)
public class WebAppConfig implements WebMvcConfigurer {/*** 视图解析器,不想写后缀.html** @return*/
// @Bean
// @Primary
// @ConditionalOnMissingBeanpublic InternalResourceViewResolver defaultViewResolver() {InternalResourceViewResolver resolver = new InternalResourceViewResolver();resolver.setPrefix("/");resolver.setSuffix("html");return resolver;}/*** 整合Swagger文档** @return*/@Beanpublic Docket createRestApi() {return new Docket(DocumentationType.SWAGGER_2)//配置了Swagger的Docket的bean实例.pathMapping("/").enable(true).select().apis(RequestHandlerSelectors.basePackage("com.edu.controller"))//配置扫描那个包.paths(PathSelectors.any()).build().apiInfo(new ApiInfoBuilder().title("欢迎来到Swagger调试界面").description("SpringBoot整合Swagger,详细信息......").version("1.0").contact(new Contact("fivefive", "http://www.cnblogs.com/five-five", "1571379055@qq.com")).license("The Apache License").licenseUrl("http://www.cnblogs.com/five-five").termsOfServiceUrl("fivefive的散人协会").extensions(new ArrayList<>()).build());}}
SpringBoot主启动类的编写(一般自动生成就行)
package com.edu;import org.mybatis.spring.annotation.MapperScan;
import org.mybatis.spring.annotation.MapperScans;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.ImportResource;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import springfox.documentation.swagger2.annotations.EnableSwagger2;@SpringBootApplication
@MapperScan("com.edu.mapper")
@EnableSwagger2//打开Swagger
@ImportResource(value = {"classpath:spring/*.xml"})
public class Studentdemo01Application {public static void main(String[] args) {SpringApplication.run(Studentdemo01Application.class, args);}}
最后直接启动运行主配置类就行