1、项目结构
src
--main
--java
--resources
--static //静态资源目录
--templates //模板页面目录,如:jsp ,ftl
--application.properties/application.yml //默认配置文件
2、package打包
2.1、导入插件pom.xml
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
2.2、打包
打包命令会把jar打包到target目录
结果如下:
2.3、运行
java -jar xxx.jar
3、热部署
3.1、导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
3.2、设置idea自动编译
4、热部署读取配置
4.1、使用@Value标签
配置文件application.yml
user:
username: huahua
age: 22
sex: 0
绑定配置文件的配置类
@Component
public class User {
//@Value :从配置文件中取值
@Value("${user.username}")
private String username ;
@Value("${user.age}")
private String age;
4.2、使用@ConfigurationProperties
这个标签会自动的根据前缀从配置中过滤出配置项目,然后根据当前对象的列名进行匹配,自动赋值。
配置文件application.yml
user:
username: huahua
age: 22
sex: 0
绑定配置的对象
@Component
@ConfigurationProperties(prefix = "user")
public class User {
private String username;
private int age;
5 、多环境切换
5.1、方式一
单个application.yml配置文件
spring:
profiles:
active: test #激活(选择)环境test
---
spring:
profiles: dev #指定环境名字dev
server:
port: 9999
---
spring:
profiles: test #指定环境名字test
server:
port: 8888
5.2、方式二
通过配置文件的名字来识别环境,主配置中,active中激活的哪个名字,就使用哪个配置
主配置
application.yml
spring:
profiles:
active: test
#根据文件名字配置 application-dev.properties
多环境1:application-dev.yml
server:
port: 9999
多环境2:application-test.yml
server:
port: 8888
6 、日志
6.1、基本使用
private Logger logger = LoggerFactory.getLogger(MySpringBootTest.class);
...
logger.error("我是一个error日志.....");
logger.warn("我是一个warn日志.....");
logger.info("我是一个info日志.....");
logger.debug("我是一个debug日志.....");
logger.trace("我是一个trace日志.....");
6.2、配置日志
#logging.level.cn.itsource=error
#logging.file=my.txt
#logging.file.max-size=1KB
#logging.pattern.console="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n"
6.3、指定配置文件配置logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<!--
debug="true" :开启系统内部调试信息
scan="true" scanPeriod="1 seconds" :每隔1秒扫描配置文件,重新加载
-->
<configuration debug="false" scan="true" scanPeriod="100 seconds">
<!-- 日志格式
定义一个变量
-->
<property name="CONSOLE_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} ----> [%thread] ---> %-5level %logger{50} - %msg%n"/>
<!--ConsoleAppender 用于在屏幕上输出日志-->
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<!--定义控制台输出格式-->
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<!-- 设置字符集 -->
<charset>UTF-8</charset>
</encoder>
</appender>
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/springboot.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--
springboot-2020年2月11日-0.log.gz
springboot-2020年2月11日-1.log.gz
springboot-2020年2月11日-2.log.gz
springboot-2020年2月12日-0.log.gz
springboot-2020年2月12日-1.log.gz
springboot-2020年2月12日-2.log.gz
-->
<fileNamePattern>logs/springboot-%d{yyyyMMdd}-%i.log.gz</fileNamePattern>
<maxFileSize>1KB</maxFileSize>
<maxHistory>30</maxHistory>
<!--总上限大小-->
<totalSizeCap>5GB</totalSizeCap>
</rollingPolicy>
<!--定义控制台输出格式-->
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<!-- 设置字符集 -->
<charset>UTF-8</charset>
</encoder>
</appender>
<!--root是默认的logger 这里设定输出级别是debug-->
<root level="info">
<!--定义了两个appender,日志会通过往这两个appender里面写-->
<appender-ref ref="stdout"/>
<!-- <appender-ref ref="file"/>-->
</root>
<!--如果没有设置 additivity="false" ,就会导致一条日志在控制台输出两次的情况-->
<!--additivity表示要不要使用rootLogger配置的appender进行输出-->
<logger name="vivi.com" level="trace" additivity="false">
<appender-ref ref="stdout"/>
<!-- <appender-ref ref="file"/>-->
</logger>
</configuration>
7、集成Thymeleaf
7.1、导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
7.2、创建模板 resources/templates/hello.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>
7.3、controller
@Controller
public class HelloController {
@RequestMapping("/index")
public String hello(Model model){
model.addAttribute("msg","c测试" );
return "hello";
}
}
8、集成Mybatis
8.1、导入依赖
<!-- 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>
8.2、配置application.yml
spring:
profiles:
active: test
#配置DataSource
datasource:
username: root
password: 123456
url: jdbc:mysql:///test
driver-class-name: com.mysql.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource #使用哪个连接池
#配置Mybatis
mybatis:
mapper-locations: classpath:com/vivi/mapper/*Mapper.xml
#type-aliases-package: com.vivi.domain别名,可配置
#mapeer映射器在配置类
8.3、开启事物@Transactional
@Service
@Transactional
public class DepartmentServiceImpl implements DepartmentService {
@Autowired
private DepartmentMapper departmentMapper;
@Override
@Transactional(readOnly = true)
public List<Department> findAll() {
return departmentMapper.findAll();
}
}