SpringBoot基本使用
一、SptingBoot的项目结构
src
--main
--java
--resources
--static //静态资源目录
--templates //模板页面目录,如:jsp ,ftl
-- application.properties/application.yml //默认配置文件
二、独立运行简单的web项目
1、导入打包插件
<build>
<plugins>
<plugin> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId> </plugin>
</plugins>
</build>
2、打包
打包命令(package)会把jar打包到target目录
3、运行
java -jar xxx.jar
=======================================================================================================================
三、SpringBoot读取配置
首先我们来认识一下yml脚本语言:
因为SpringBoot使用一个全局的配置文件,而yml文件是一种脚本语言,它的作用就是会修改SpringBoot自动配置的默认值,比如端口号之类的
yml语法:
k:(空格)v:表示一对键值对(必须有空格)
以空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的
一、使用@Value注解的方式
配置文件(application.yml):
获取 username的值(yymq)
itsource:
username: yymq
测试:从application.yml文件获取到值
成功获取到了 itsource 下面的 username的值
@Controller
public class HelloController {
@Value("${itsource.username}")
private String username;
System.out.println(username);
}
二、使用@ConfigurationProperties注解的方式
@ConfigurationProperties : 自动的根据前缀从配置中过滤出配置项目,然后根据当前对象的列名进行匹配,自动赋值
配置文件内容:
employee:
username: ls
password: 456
age: 99
绑定配置的对象:
@Component @ConfigurationProperties(prefix = “employee”)
public class Employee {
private String username = “zs”;
private String password = “123”;
private int age = 18;
四、 SpringBoot的多环境配置
为什么要有多环境配置呢?
因为一套代码要在多种环境运行(开发,测试,上线),所以我们的配置文件要支持多种环境
一、:在同一个配置文件中
#主环境配置
spring:
profiles:
active: dev #激活(选择)环境test
---
spring:
profiles: dev
server:
port: 8080 #指定开发环境名字dev
---
spring:
profiles: test
server:
port: 8888 #指定测试环境名字testmapper
二、:在多个配置文件
开发环境的配置文件
application-dev.yml:
server: port: 9999
测试环境的配置文件
application-test.yml:
server: port: 8888
//下面这个是主配置文件,根据文件名字配置
application.yml
spring: profiles: active: test #根据文件名字配置 application-dev.properties
==--------------------------------------------------------------------------------------------------------------------------------------
五、模板引擎Thymeleaf
Thymeleaf简介:
thymeleaf就是一个模板引擎,实现页面内容动态化的技术思想
本质:jsp+jstl的替代方案
其他的模板引擎还有JSP、Freemarker等
=====下面我们重点看看SpringBoot推荐的Thymeleaf模板引擎入门:
1、导入依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
2、创建模板 resources/templates/thy.html
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>成功!</h1>
<!--使用语法th:text 将div里面的文本内容设置为 -->
<div th:text="${msg}">这是显示欢迎信息</div>
</body>
</html>
3、编写controller测试运行
@RequestMapping("/thy")
public String thy(Model model){
model.addAttribute("msg", "我是thymeleaf模板引擎");
return "thy";
}
Thymeleaf的自动配置原理(重点)
@EnableAutoConfiguration 开启自动配置功能 -> 通过一个AutoConfigurationImportSelector导 入选择器去扫描 -> spring-boot-autoconfigure-2.0.5.RELEASE.jar -> 自动配置包下面的 spring.factories 文件中的很多很多的自动配置的类 而:ThymeleafAutoConfiguration 是的Thymeleaf的自动配置 ,在这个自动配置类里面通过一个 ThymeleafProperties去读取配置文件中的配置(也有默认配置) ,来自动配置Thymeleaf。 比如 Thymeleaf的视图解析器的自动配置如下: @Bean @ConditionalOnMissingBean(name = "thymeleafViewResolver") public ThymeleafViewResolver thymeleafViewResolver() { ThymeleafViewResolver resolver = new ThymeleafViewResolver(); ... return resolver; }
``
六、配置拦截器
之前我们的Springmvc里面都有一个拦截器,用来做登录拦截,那我们来实现一下
一、首先自定义一个拦截器:并且来继承HandlerInterceptorAdapter
@Component
public class MyHandlerInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.err.println("执行了拦截器:我被拦截了"+request.getRequestURI());
return super.preHandle(request, response, handler);
}
}
**二、我们需要在主配置类中注册拦截器:并且实现WebMvcConfigurer **
@SpringBootApplication
@MapperScan("cn.itsource.hello.mapper")
public class ApplicationConfig implements WebMvcConfigurer {
//注册拦截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(myHandlerInterceptor).addPathPatterns("/**").excludePathPatterns("/login");
}
}
七、集成DataSource
1、导入依赖
<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.20</version>
</dependency>
<!-- mysql 数据库驱动. -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
2、在application.yml中自动配置四大金刚
#配置JDBC
datasource:
username: root
password: 123456
url: jdbc:mysql:///test
driver-class-name: com.mysql.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
八、集成mybatis
1、导入依赖
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId
<version>1.1.1</version>
</dependency>
2、配置mybatis:在application.yml文件中进行
注意:在主配置类中要打@MapperScan注解!!!!
并且里面填写mapper包的的全限定名
#配置Mybatis
mybatis:
mapper-locations: mapper/*Mapper.xml
九、集成事务
1、使用注解的方式开启事务
在主配置类中只需要打上@EnableTransactionManagement注解即可