>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>欢迎转载,转载请注明出处-VirgoArt,www.cnblogs.com

一、环境

  JDK:1.8.0

  IDEA:2018.3.4

  Maven:3.3.9

  SpringBoot-Start-Parten:2.1.3.RELEASE

二、步骤

  1.新建Maven项目,编辑pom.xml:由于本机pom无法正确识别lombok依赖,无奈使用system方式管理,需要在项目中建立lib文件夹,添加lombok.jar依赖

<?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>cn.study</groupId>
<artifactId>springboot</artifactId>
<version>1.0-SNAPSHOT</version> <name>springboot</name>
<description>Demo project for spring boot</description> <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
<relativePath/>
</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 Web 相关依赖-->
<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>
<scope>test</scope>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
<!--数据源-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.35</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.19</version>
</dependency>
<!--JSR3.0,校验-->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.13.Final</version>
</dependency> <!--POJO简化-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.2</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/static/lib/lombok-1.18.2.jar</systemPath>
</dependency> <!--第三方工具-->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency> </dependencies> <build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.study.App</mainClass>
<layout>JAR</layout>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

  2.建立三级包结构,并在二级目录下建立项目启动主类:App.java:app中,添加了过滤器的扫描路径,添加了全局配置类ProjectBaseInfo的注入,同时初始化数据库连接池

package com.study;

import com.alibaba.druid.pool.DruidDataSource;
import com.study.domain.ProjectBaseInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.context.annotation.Bean;
import org.springframework.core.env.Environment; import javax.sql.DataSource; @SpringBootApplication
@EnableConfigurationProperties({ProjectBaseInfo.class})
@ServletComponentScan("com.study.filter")
public class App { public static void main(String[] args) {
SpringApplication.run(App.class, args);
} @Autowired
private Environment env; @Bean()
public DataSource dataSource() {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setUrl(env.getProperty("spring.datasource.url"));
dataSource.setUsername(env.getProperty("spring.datasource.username"));
dataSource.setPassword(env.getProperty("spring.datasource.password"));
dataSource.setDriverClassName(env.getProperty("spring.datasource.driver-class-name"));
//初始化时建立物理连接的个数
dataSource.setInitialSize(2);
//最大连接池数量
dataSource.setMaxActive(20);
//最小连接池数量
dataSource.setMinIdle(0);
//获取连接时最大等待时间,单位毫秒。
dataSource.setMaxWait(60000);
//用来检测连接是否有效的sql
dataSource.setValidationQuery("SELECT 1");
//申请连接时执行validationQuery检测连接是否有效
dataSource.setTestOnBorrow(false);
//建议配置为true,不影响性能,并且保证安全性。
dataSource.setTestWhileIdle(true);
//是否缓存preparedStatement,也就是PSCache
dataSource.setPoolPreparedStatements(false);
return dataSource;
}
}

  3.在类路径下建立application.properties配置文件,建立static资源存放目录,建立templates模板文件存放目录

#全局项目信息
#project.baseInfo.name = studySpringBoot
#project.baseInfo.author = virgo
#project.baseInfo.aim = CRM System #服务器配置信息
server.port=9090
server.session-timeout=30
server.tomcat.uri-encoding=UTF-8 #数据源配置信息
spring.datasource.url = jdbc:mysql://localhost:3306/spring?useUnicode=true&characterEncoding=utf-8
spring.datasource.username = root
spring.datasource.password = 123456
spring.datasource.driver-class-name = com.mysql.jdbc.Driver # THYMELEAF配置
#开启模板缓存(默认值:true)
spring.thymeleaf.cache=false
spring.thymeleaf.check-template=true
#检查模板位置是否正确(默认值:true)
spring.thymeleaf.check-template-location=true
#Content-Type的值(默认值:text/html)
spring.thymeleaf.content-type=text/html
#开启MVC Thymeleaf视图解析(默认值:true)
spring.thymeleaf.enabled=true
#模板编码
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.mode=HTML5
#在构建URL时添加到视图名称前的前缀(默认值:classpath:/templates/)
spring.thymeleaf.prefix=classpath:/templates/
#在构建URL时添加到视图名称后的后缀(默认值:.html)
spring.thymeleaf.suffix=.html #静态资源路径配置
spring.mvc.static-path-pattern=/**
spring.resources.static-locations = classpath:/static/

  4.开始实现项目业务代码,填充controller(@Controller)、domain(@Data)、filter(implements Filter)、service(@Service)、dao(@Repository)

三、注意点  

  1.关于DaoImpl使用Spring jdbcTemplate,IDEA会报无法加载Bean问题,解决方法:调整IDEA报错级别设置,关闭Spring Bean依赖检查

  2.关于使用自定义Fileter后导致静态资源被拦截的情况,建议使用资源路径限定的方式,在Fileter中判断:/static/res/css(/js/font/image...),url.indexOf("/res/css/")!=-1。如果使用后缀法,如果项目上线,浏览器在第一次无Cookie加载时,会在URL后拼接jsessionid字段,导致URL.endsWith(".js")判断为false

  3.使用 ModelAndView 时,在构造中处理返回的模板地址时,前面不要添加“/”,原因是当Maven install打成JAR后,页面后端请求默认路径为templates,如果加上“/”,会导致进入项目根目录查找。

  4.关于使用Thymeleaf的自动对象绑定时,需要在渲染模板时,传入空的交互对象,然后使用Form表单中的th:object="${bean}"进行绑定。

最新文章

  1. Redis初级介绍
  2. Git分布式版本控制学习
  3. window.location.href的用法
  4. Java基础之扩展GUI——使用字体对话框(Sketcher 5 displaying a font dialog)
  5. 打包ane之后在FB上生成ipa的阶段错误
  6. C++中类的前向声明的用法
  7. POJ 3982 序列(JAVA,简单,大数)
  8. OpenShare新功能@2014年10月
  9. O-c中类的继承与派生的概念
  10. 寻找链表中倒数第K个结点的位置
  11. Axure 快捷方式
  12. G - 好老师
  13. mapreduce新旧api对比
  14. Python内置函数(32)——input
  15. jenkins持续集成原理
  16. mybatis执行批量更新数据
  17. layui---form表单模块
  18. 详解HTTP协议
  19. springboot中定时任务
  20. Jmeter如何保持cookie,让所有请求都能用同一个cookie,免去提取JSESSIONID

热门文章

  1. python之路day08--文件的操作
  2. [BJOI2019]奥术神杖(分数规划+AC自动机+DP)
  3. 快速掌握Nginx(三) —— Nginx+Systemd托管netcore应用
  4. JS基础-第5天
  5. C++常见问题解答博客合集
  6. 3DMAX中坐标解析
  7. Luogu CF451E Devu and Flowers 题解报告
  8. 红警大战JAVA简单版
  9. 解决微信小程序wepy真机预览跟本地表现不一样,数据变化了视图没变化
  10. Ansible-----include