第一部分
创建项目地址:https://start.spring.io/
选择好需要的jar包开始创建工程,然后将工程放到开发目录,解压,使用开发工具导入。开发工具首先要配置好maven
导入工程之后直接启动会报错,原因是新创建的项目没有配置数据源 所以在项目启动的时候回去查找项目的数据源,但是发现找不到所以报错。
解决方法
配置属性: @SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
这样就可以启动成功了!!!!!!
第二部分
使用Druid数据源#
Apache Druid(Incubating) - 面向列的分布式数据存储,非常适合为交互式应用程序提供动力
虽然HikariDataSource性能非常高,但是阿里的druid数据源配有成套的数据源管理软件,开发中使用的更多。
以往我们都是直接引入Druid的依赖:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.12</version>
</dependency>
但是面对这么火爆的springboot并没有直接对Druid的启动器而是需要我们自己整合,apache中4个月前已经出了一套完美支持springboot的方案所以说我们不使用上面的依赖而是使用:
源码下载:https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
配置properties文件,具体的参数配置可以去官网看看,这里只是简单的配置:
###本地地址
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/accumulatepoints?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8&useSSL=false&useInformationSchema=true
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=root
server.port=8080
#使用druid数据源
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
#如果template没有文件控制台会有一条警告信息,加上这个配置便不会看到警告信息
spring.thymeleaf.check-template-location=false
#这个配置可让外部直接访问static里面的文件
spring.mvc.static-path-pattern=/static/**
虽然我们配置了druid连接池的其它属性,但是不会生效。因为默认是使用的java.sql.Datasource的类来获取属性的,有些属性datasource没有。如果我们想让配置生效,需要手动创建Druid的配置文件。
@ConfigurationProperties(prefix = "spring.datasource")
@Bean
public DruidDataSource druidDataSource(){
return new DruidDataSource();
}
Druid的最强大之处在于它有着强大的监控,可以监控我们发送到数据库的所有sql语句。方便我们后期排插错误。
我们接着在DruidDataSource里面配置监控中心:
/**
* 配置druid数据源
*/
@Configuration
public class DruidConfig {
@ConfigurationProperties(prefix = "spring.datasource")
@Bean
public DataSource druid(){
return new DruidDataSource();
}
/**
* 配置监控服务器
* @return 返回监控注册的servlet对象
* @author liwenfei
*/
@Bean
public ServletRegistrationBean statViewServlet(){
ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
Map<String,String> initParams = new HashMap<>();
// 添加IP白名单
initParams.put("allow","");//默认就是允许所有访问
// 添加IP黑名单,当白名单和黑名单重复时,黑名单优先级更高
//initParams.put("deny","127.0.0.0");
// 是否能够重置数据
//initParams.put("resetEnable","false");
// 添加控制台管理用户
// initParams.put("loginUsername","admin");
// initParams.put("loginPassword","123456");
bean.setInitParameters(initParams);
return bean;
}
/**
* 配置服务过滤器
* @return 返回过滤器配置对象
* @author liwenfei
*/
@Bean
public FilterRegistrationBean webStatFilter(){
FilterRegistrationBean bean = new FilterRegistrationBean();
bean.setFilter(new WebStatFilter());
bean.addUrlPatterns("/*"); // 添加过滤规则
bean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,*.txt,/druid/*"); // 忽略过滤格式
bean.addInitParameter("profileEnable", "true");
bean.addInitParameter("principalCookieName","USER_COOKIE");
bean.addInitParameter("principalSessionName","USER_SESSION");
bean.addInitParameter("DruidWebStatFilter","/*");
return bean;
}
}
/**
* 注:如果这里配置druid数据源,那么启动类可以不用配置exclude = DataSourceAutoConfiguration.class
*
*/
注:配置spring拦截器详见
https://blog.csdn.net/qq_35071164/article/details/89738355
第三部分
引入thymeleaf依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
在thymeleaf3.0以前对页面标签语法要求比较严格,开始标签必须有对应的结束标签。
如果希望页面语法不严谨,但是也能够运行成功,可以把thymeleaf升级为3.0或以上版本。