zoukankan      html  css  js  c++  java
  • SpringBoot项目创建样例

    1.新建项目

     

     2.pom.xml文件

    <?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.test.xmmc</groupId>
    <artifactId>test20191204</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!--继承SpringBoot父类包-->
    <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-parent</artifactId>
    <version>2.0.1.RELEASE</version>
    </parent>
    <!--项目编码设定-->
    <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
    </properties>
    <dependencies>
    <!--spring boot:web启动加载-->
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
    <!--排除:自带的日志记录框架-->
    <exclusion>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-logging</artifactId>
    </exclusion>
    </exclusions>
    </dependency>
    <!--spring boot:aop模块-->
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-aop</artifactId>
    </dependency>
    <!--spring boot:热部署-->
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional>
    </dependency>
    <!--spring boot:资源文件的读取映射成实体-->
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    </dependency>
    <!--常用jar包-->
    <!--spring boot:log4j日志记录模块-->
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j</artifactId>
    <version>1.3.8.RELEASE</version>
    </dependency>
    <!--redis-->
    <dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.9.0</version>
    </dependency>
    <!--数据库:druid连接池-->
    <dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.6</version>
    </dependency>
    <!--数据库:postgresql驱动-->
    <dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>9.4.1208</version>
    </dependency>
    <!--数据库:mysql驱动-->
    <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.40</version>
    </dependency>
    <!--数据库:mybatis-->
    <dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.2</version>
    </dependency>
    <!--数据库:mapper-->
    <dependency>
    <groupId>tk.mybatis</groupId>
    <artifactId>mapper-spring-boot-starter</artifactId>
    <version>1.2.4</version>
    </dependency>
    <!--分页插件:pagehelper-->
    <dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.2.4</version>
    </dependency>
    <!--mybatis plus mybatis集成 与pagehelper冲突,因为集成有分页插件-->
    <!-- <dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.2.0</version>
    </dependency>-->
    <!--json处理-->
    <dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.46</version>
    </dependency>
    <!--数据库:逆向生成-->
    <dependency>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-core</artifactId>
    <version>1.3.2</version>
    <scope>compile</scope>
    <optional>true</optional>
    </dependency>
    <dependency>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-maven-plugin</artifactId>
    <version>1.3.6</version>
    </dependency>
    <!-- CSV -->
    <dependency>
    <groupId>net.sourceforge.javacsv</groupId>
    <artifactId>javacsv</artifactId>
    <version>2.0</version>
    </dependency>
    <dependency>
    <groupId>com.opencsv</groupId>
    <artifactId>opencsv</artifactId>
    <version>4.1</version>
    </dependency>
    <!-- swagger2 -->
    <dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.7.0</version>
    </dependency>
    <dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.7.0</version>
    </dependency>
    <!--辅助类:lombok-->
    <dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.16.20</version>
    </dependency>
    <!-- javamail -->
    <dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4.7</version>
    </dependency>
    <!-- httpclient -->
    <dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    </dependency>
    <dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpmime</artifactId>
    </dependency>
    <dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpcore</artifactId>
    </dependency>
    <!--jwt-->
    <dependency>
    <groupId>com.auth0</groupId>
    <artifactId>java-jwt</artifactId>
    <version>3.3.0</version>
    </dependency>
    <!--commons工具包-->
    <dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.7</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.directory.studio/org.apache.commons.io -->
    <dependency>
    <groupId>org.apache.directory.studio</groupId>
    <artifactId>org.apache.commons.io</artifactId>
    <version>2.4</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
    <dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3.3</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel -->
    <dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version>1.1.1</version>
    </dependency>
    <!--test测试-->
    <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <scope>test</scope>
    </dependency>

    </dependencies>

    <build>
    <plugins>
    <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
    <finalName>operate_oss</finalName>
    <mainClass>com.tzj.operate.oss.Application</mainClass>
    </configuration>
    <executions>
    <execution>
    <goals>
    <goal>repackage</goal>
    </goals>
    </execution>
    </executions>
    </plugin>
    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
    <source>1.8</source>
    <target>1.8</target>
    </configuration>
    </plugin>

    </plugins>
    </build>

    </project>

    3.Application启动类

    package com.test.xmmc;


    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.web.servlet.config.annotation.EnableWebMvc;
    import springfox.documentation.swagger2.annotations.EnableSwagger2;

    /**
    * @author silly
    * @create 2018-04-09 17:24
    * @desc 启动类
    **/

    @EnableWebMvc
    @EnableSwagger2
    @SpringBootApplication
    public class Application {

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


    }

    4.application文件


      可配置多个文件如下图:

    4.1application.yml

    spring:
    profiles:
    active: dev

    4.2 application-dev.yml

    #########################################################
    ##### 开发环境 #####
    #########################################################
    server:
    port: 10003

    #spring相关配置
    spring:
    mvc:
    throw-exception-if-no-handler-found: true #出现错误,直接抛出异常
    resources:
    add-mappings: false #不要为我们工程中的资源文件建立映射
    devtools:
    restart:
    additional-paths: src/main/java #监听目录
    enabled: true

    datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: org.postgresql.Driver
    url:
    username:
    password:
    #druid配置信息
    #初始化大小,最大,最小
    initialSize: 5
    minIdle: 5
    maxActive: 20
    #配置获取连接等待超时的时间
    maxWait: 60000
    #配置一个连接在池中的最小生存时间,单位是毫秒
    minEvictableIdleTimeMillis: 300000
    validationQuery: SELECT 1 FROM DUAL
    testWhileIdle: true
    testOnBorrow: false
    testOnReturn: false
    #打开PSCache,并且指定每个连接上PSCache的大小
    poolPreparedStatements: true
    maxPoolPreparedStatementPerConnectionSize: 20
    #配置监控统计拦截的filters,去掉后监控界面sql将无法统计,'wall'用于防火墙filters:stat,wall,log4j
    filters: stat,wall,log4j,config
    #通过connectProperties属性来打开mergeSql功能;慢SQL记录
    connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=3000
    #合并多个DruidDataSource的监控数据
    useGlobalDataSourceStat: true

    # mybatis 配置
    mybatis:
    mapper-locations: classpath:mapper/*/*.xml
    configuration:
    #控制台输出SQL操作语句
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    #通用Mapper配置
    mapper:
    mappers:com.test.xmmc.common.config.mybatis.MyMapper
      not-empty: false
    #分页插件配置
    pagehelper:
    helperDialect: postgresql
    reasonable: true
    support-methods-arguments: true
    params: count=countSql

    #自定义框架配置
    frame:
    #redis数据库
    redis:
    dataabase:
    host:
    port:
    password:
    timeout: 0
    #MYSQL数据库
    test1:
    type:
    driverClassName:
    url:
    password:
    username:

    initialPoolSize: 5
    minPoolSize: 5
    maxPoolSize: 100
    minIdleTime: 20000
    idleConnectionTestPeriod: 60000
    preferredTestQuery: select now()
    database: false
    test2:
    type:
    driver-class-name:
    url:
    password:
    username:

    5.logback-spring.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!--https://blog.csdn.net/tianyaleixiaowu/article/details/73321610-->
    <configuration debug="true">
    <!-- 项目名称 -->
    <property name="PROJECT_NAME" value="ReptileAllocation"/>

    <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
    <property name="LOG_HOME" value="logs"/>

    <!-- 控制台输出 -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
    <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
    <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %highlight([%-5level] %logger{50} - %msg%n)</pattern>
    <charset>UTF-8</charset>
    </encoder>
    </appender>

    <!-- 系统错误日志文件 -->
    <appender name="SYSTEM_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <!-- 过滤器,只打印ERROR级别的日志 -->
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
    <level>ERROR</level>
    <onMatch>ACCEPT</onMatch>
    <onMismatch>DENY</onMismatch>
    </filter>
    <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
    <!--日志文件输出的文件名-->
    <FileNamePattern>${LOG_HOME}/error.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
    <!--日志文件保留天数-->
    <MaxHistory>7</MaxHistory>
    <!--日志文件最大的大小-->
    <MaxFileSize>10MB</MaxFileSize>
    </rollingPolicy>

    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
    <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
    <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] - %msg%n</pattern>
    <charset>UTF-8</charset>
    </encoder>
    </appender>
    <logger name="system_error" additivity="true">
    <appender-ref ref="SYSTEM_ERROR"/>
    </logger>

    <!-- 自己打印的日志文件,用于记录重要日志信息 -->
    <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <!-- 过滤器,只打印INFO级别的日志 -->
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
    <level>INFO</level>
    <onMatch>ACCEPT</onMatch>
    <onMismatch>DENY</onMismatch>
    </filter>
    <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
    <!--日志文件输出的文件名-->
    <FileNamePattern>${LOG_HOME}/info.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
    <!--日志文件保留天数-->
    <MaxHistory>7</MaxHistory>
    <!--日志文件最大的大小-->
    <MaxFileSize>10MB</MaxFileSize>
    </rollingPolicy>

    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
    <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
    <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] - %msg%n</pattern>
    <charset>UTF-8</charset>
    </encoder>
    </appender>
    <logger name="info_file" additivity="true">
    <appender-ref ref="INFO_FILE"/>
    <appender-ref ref="CONSOLE"/>
    </logger>
    <root level="DEBUG">
    <appender-ref ref="CONSOLE"/>
    </root>
    </configuration>

    6.测试Controller类

    package com.test.xmmc.modules.controller;

    import com.test.xmmc.common.support.BaseResult;
    import io.swagger.annotations.Api;
    import io.swagger.annotations.ApiOperation;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;

    import javax.servlet.http.HttpServletRequest;


    @RestController
    @RequestMapping(value = "/test")
    @Api(value = "TestController", tags = "测试")
    public class TestController {
    @ApiOperation(value = "测试", notes = "test")
    @RequestMapping(value = "/test")
    public BaseResult test(HttpServletRequest request) {
    return BaseResult.getSuccess(0,"操作成功",null);
    }
    }

    7.结束

      

    
    
    


  • 相关阅读:
    json参数http post请求
    获取文本的节点数据
    mongodb robo3t 查询所有 更改固定的50一页
    mongdb 更新字段类型
    数据库表的统计表更新 解决Sql Timeout 时间已到的问题
    html背景图圆角图片设置方法
    abp.vnext vue 跨域设置
    Springboot结合ESAPI——配置XSS过滤
    centos docker安装rabbitmq
    JAVA byte[]转String 中文问题
  • 原文地址:https://www.cnblogs.com/CookiesBear/p/11984034.html
Copyright © 2011-2022 走看看