通用开发
配置端口和项目前缀
server:
port: 8080
servlet:
context-path: /mahe666
yaml给实体类赋值的几种方式
类模板获取默认值的三种方式
@Data
@AllArgsConstructor
@NoArgsConstructor
//注册为组件
@Component
public class Dog {
@Value("旺财")
private String name;
@Value("3")
private Integer age;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
@Component
// 获取SpringBoot配置文件中person属性下dog属性的值
@ConfigurationProperties(prefix = "person.dog")
public class Dog {
private String name;
private Integer age;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
@Component
//加载resources文件夹下指定的配置文件
@PropertySource(value = "classpath:dog.properties")
public class Dog {
private String name;
private Integer age;
}
SpringBoot配置文件示例
person:
name: mahe666${random.uuid}
# 这里也可以使用占位符和表达式
age: ${random.int}
happy: true
birth: 2019/12/12
maps: {k1: v1,k2: v2}
list:
- code
- music
- girl
dog:
# 如果dog有giaogiao属性,就选择dog里面giaogiao的值
# 如果没有,就选择冒号后面的值
# 括号外面的值是拼接字符串
name: ${dog.giaogiao:hello}_旺财
age: 3
异步任务,邮件任务,定时任务
异步任务
- 在主启动类或配置类上加
@EnableAsync
注解,开启异步功能 - 在对应的方法上添加
@Async
注解,使方法异步执行
异步方法不需要返回值
邮件任务
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
配置文件代码
#发送邮件的邮箱账号
spring.mail.username=m13234666930@qq.com
#邮箱的授权码
spring.mail.password=123
#主机
spring.mail.host=smtp.qq.com
测试代码
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import javax.annotation.Resource;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
@SpringBootTest
class TesttasksApplicationTests {
@Resource
private JavaMailSenderImpl mailSender;
@Test
void easyMail(){
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
//主题
simpleMailMessage.setSubject("mahe666");
//文本
simpleMailMessage.setText("马赫好帅啊");
//目标邮箱
simpleMailMessage.setTo("");
//发送的邮箱
simpleMailMessage.setFrom("");
mailSender.send(simpleMailMessage);
}
@Test
void complexMail() throws MessagingException {
MimeMessage mimeMessage = mailSender.createMimeMessage();
//组装
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage,true,"utf-8");
mimeMessageHelper.setSubject("mahe666");
//正文,true为支持解析html标签
mimeMessageHelper.setText("<h1>马赫好帅啊</h1>",true);
//附件
mimeMessageHelper.addAttachment("文件名.后缀",new File("路径"));
mailSender.send(mimeMessage);
}
}
定时任务
在主启动类或配置类上加
@EnableScheduling
注解,开启定时功能在对应方法上添加
@Scheduled
注解,需要cron
表达式cron表达式,相关博客:
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
@Service
public class ScheduledService {
//@Scheduled注解使用cron表达式
//秒 分 时 日 月 星期几
//应的位置可以写数组,用英文逗号隔开
//每隔多少时间执行一次使用/分割 比如每五分钟执行一次 0/5
@Scheduled(cron = "0 * * * * 0-7")
//在一个特定的时间执行这个方法
public void hello(){
System.out.println("hello被执行了");
}
}
项目启动后执行方法
相关博客:
配置响应结构
配置统一响应结构,相关博客:
配置特殊响应结构,相关博客:
SpringBoot整合Mybatis
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.49</version>
</dependency>
配置示例
spring:
datasource:
# 驱动
driver-class-name: com.mysql.jdbc.Driver
# 连接
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false
# 用户名
username: root
# 密码
password: root
mybatis:
# 配置实体类报名,方便在xml中直接引用
type-aliases-package: com.example.pojo
# xml 文件存放地址
mapper-locations: classpath:mybatis/mapper/*.xml
# mybatis配置文件 存放地址
config-location: classpath:mybatis/mybatis-config.xml
configuration:
# 日志
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
整合Druid数据源
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.15</version>
</dependency>
配置示例
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.jdbc.Driver
druid:
# 主库数据源
master:
url: jdbc:mysql://localhost:3306/testDB?useUnicode=true&characterEncoding=utf8useSSL=false
username: root
password:
# 从库数据源
slave:
# 从数据源开关/默认关闭
enabled: false
url:
username:
password:
# 初始连接数
initialSize: 5
# 最小连接池数量
minIdle: 10
# 最大连接池数量
maxActive: 20
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
# 配置一个连接在池中最大生存的时间,单位是毫秒
maxEvictableIdleTimeMillis: 900000
# 配置检测连接是否有效
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
webStatFilter:
enabled: true
statViewServlet:
enabled: true
# 设置白名单,不填则允许所有访问
allow:
url-pattern: /druid/*
# 控制台管理用户名和密码
login-username:
login-password:
filter:
stat:
enabled: true
# 慢SQL记录
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: true
wall:
config:
multi-statement-allow: true
声明式事务
相关博客: