SpringBoot2
yml配置文件
Spring Boot使用一个全局的配置文件(配置文件名是固定的)
application.properties 属性文件格式,内容为键值对
application.yml:
yml是YAML(YAML Ain’t Markup Language)语言的文件,以数据为中心
yml基本语法:
语法结构:key:空格 value
以此来表示一对键值对(空格不能省略);以空格的缩进来控制层级关系,
只要是左边对齐的一列数据都是同一个层级的。
值的写法:
字面量:普通的值[数字,布尔值,字符串]
K: V
字面量直接写在后面就可以,字符串默认不用加上双引号或者单引号;
user:
name: "马振强"
age: 21
hobby:
-睡觉
-吃饭
数组(List,Set)(用-值表示数组中的一个元素)语法示例如下:
animal:
- cat
- dog
- pig
行内写法:
animal: [cat,dog,pig]
使用@ConfigurationProperties注解标签将配置文件中的内容映射到类中的属性.
@ConfigurationProperties(prefix = "user" )
springBoot自动配置
Springboot实现自动装配的核心仍然是使用注解标签,
@SpringBootApplication是springboot
核心注解,其中包含
@SpringBootConfiguration,
@EnableAutoConfiguration,
@ComponentScan.
@ComponentScan
它默认扫描的是与该类同级的类或者同级包下的所有类.
@SpringBootConfiguration
通过源码得知它是一个@Configuration,相当于之前的配置文件功能.
@EnableAutoConfiguration
是这里最重要的注解,它实现了对Spring Boot应用自动装配的功能。
@EnableAutoConfiguration
是利用SpringFactoriesLoader机制加载自动装配配置的,它的配置数据在META-INF/spring.factories中,我们打开spring-boot-autoconfigure jar中的该文件,发现对应着许多个XXXAutoConfiguration配置类.
@Configuration
加入@Configuration 注解,表明这就是一个配置类。有一个myBean()的方法并用@Bean 进行注释,返回一个MyBean()的实例,表明这个方法是需要被Spring进行管理的bean。@Bean 如果不指定名称的话,默认使用myBean名称,也就是小写的名称。
@Bean
相当于XML中的,放在方法的上面,而不是类,意思是产生一个bean,并交给spring管理。
SpringBoot集成JDBC
数据源配置:
在我们访问数据库的时候,需要先配置一个数据源,下面分别介绍一下几种不同的数据库配置方式。
首先,为了连接数据库需要引入jdbc支持,在pom.xml中引入如下配置:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
在application.yml中配置数据源信息
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/team?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: wang666
type: com.alibaba.druid.pool.DruidDataSource
initialSize: 5
minIdle: 5
maxActive: 20
filters: stat
Spring的JdbcTemplate是自动配置的,你可以直接使用@Autowired来注入到你自己的bean中来使用。
SpringBoot整合阿里数据源
导入阿里数据源jar
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
在yml文件中注册阿里数据库连接池
type: com.alibaba.druid.pool.DruidDataSource
filters: stat
initialSize: 5 初始化时建立物理连接的个数
minIdle: 1 最小连接池数量
maxActive: 20最大连接池数量
添加工具类
Sql监控
http://localhost:9999/druid/login.html
SpringBoot集成mybatis
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>
在application.yml中配置数据源信息
#mybatis
mybatis:
type-aliases-package: com.ffyc.springBoot.demo.model
mapper-locations: classpath:mapper/*Mapper.xml
configuration:
map-underscore-to-camel-case: true
cache-enabled: true
日志打印
#日志打印
logging:
level:
com.ffyc.springBoot.demo.dao: trace
file:
name: E:\\log\\log.log
效果
然后就可以写代码来测试
model类的User:
public class User {
private Integer id;
private String name;
private Integer operatePerson;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getOperatePerson() {
return operatePerson;
}
public void setOperatePerson(Integer operatePerson) {
this.operatePerson = operatePerson;
}
}
dao类
@Repository
public interface UserDao {
void insertSave();
}
service类
@Service
@Transactional
public class UserService {
@Autowired
UserDao userDao;
public void saveNew(){
userDao.insertSave();
}
}
controller类(两条sql,验证事务完整性)
@RestController
@RequestMapping(path = "/hello")
public class HelloWorldController {
@Autowired
UserService userService;
@RequestMapping(path = "/test")
public String test(){
System.out.println("helloWord");
return "hello world";
}
@RequestMapping(path = "/save")
public String save(){
userService.saveNew();
return "保存成功";
}
}
config类,添加sql监控
import javax.sql.DataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.alibaba.druid.pool.DruidDataSource;
@Configuration
public class DruidDataSourceConfig {
@Bean
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource druid() {
return new DruidDataSource();
}
@Bean
public ServletRegistrationBean druidStatViewServlet() {
//ServletRegistrationBean提供类的进行注册
ServletRegistrationBean servletRegistrationBean =
new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
//添加初始化参数:initParams
//白名单:
servletRegistrationBean.addInitParameter("allow", "127.0.0.1");
//IP黑名单(同时存在时,deny优先于allow)
//如果满足deny,就提示:sorry,you are not permitted to view this page
servletRegistrationBean.addInitParameter("deny", "192.168.1.73");
//登录查看信息的账号和密码
servletRegistrationBean.addInitParameter("loginUsername", "admin");
servletRegistrationBean.addInitParameter("loginPassword", "123456");
servletRegistrationBean.addInitParameter("resetEnable", "false");
return servletRegistrationBean;
}
@Bean
public FilterRegistrationBean druidStatFilter() {
FilterRegistrationBean filterRegistrationBean =
new FilterRegistrationBean(new WebStatFilter());
//添加过滤规则
filterRegistrationBean.addUrlPatterns("/*");
//添加需要忽略的格式信息
filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif," +
"*.jpg,*.png, *.css,*.ico,/druid/*");
return filterRegistrationBean;
}
}
然后可以测试 点击链接,输入账号密码(admin,111)可以修改
链接:http://localhost:9999/druid/login.html