接着上一次说
多模块
在idea中存在多模块,而在eclipse中则可以多个项目;因为本人使用idea所以给大家说一下springboot的多模块:
idea中多模块开发,必须依赖于父亲模块,我们项目也必须是boot的parent,所以要在项目的父模块中管理boot的版本以来,我们只需要在父级模块pom.xml中引入
<dependencyManagement>
<dependencies>
<!--springboot版本管理,springboot相关模块引入是就不需要制定版本了-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.0.5.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
然后在子级模块就可以任意引入springboot的场景启动器了,比如web的
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
@SpringBootApplication
SpringBootApplication应用标注在某个类上说明这个类是SpringBoot的主配置类,SpringBoot就应该运行这个类的main方法来启动SpringBoot应用
springboot配置
SpringBoot使用一个全局的配置文件,配置文件名是固定的;
•application.properties -传统方式,不太优美
•application.yml-推荐使用
配置文件的作用:修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好;
YAML做配置一门语言:
以前的配置文件;大多都使用的是 xxxx.xml文件还有properties;
YAML:以数据为中心,比json、xml等更适合做配置文件;
在application.yml中改写端口
server:
port: 80
运行app后只需要访问80就行了,没有修改默认访问8080端口
在yml中还可以存放数据比如person
person:
name: zs
age: 1
brith: 2019/01/01
sex: true
hobby:
fly
eat
sleep
car:
name: audi
person.class
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
private String name;
private Integer age ;
private Car car;
private boolean sex;
private List<String> hobby;
private Date brith;
@ConfigurationProperties(prefix = “person”)可以将配置文件中的属性一一映射
也可以使用@value自己手动映射
@Component
public class Person {
@Value("${person.name}")
private String name;
@Value("${person.age}")
private Integer age ;
private Car car;
private boolean sex;
private List<String> hobby;
private Date brith;
Yml支持多文档块模式
server:
port: 8081
spring:
profiles:
active: prod
---
server:
port: 8083
spring:
profiles: dev
---
server:
port: 8084
spring:
profiles: prod #指定属于哪个环境
SpringBoot test
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
测试类
@RunWith(SpringRunner.class)
@SpringBootTest(classes = App.class)
public class SpringbootTest {
@Autowired
private Person person;
@Test
public void test() throws Exception {
System.out.println(person);
}
}
Spring boot日志支持
通过日志的方式记录系统运行的过程或错误以便定位问题。
因为不同的框架使用的是不同的日志框架,所以写了一个统一的接口层;日志门面(日志的一个抽象层);logging-abstract.jar;给项目中导入具体的日志实现就行了;我们之前的日志框架都是实现的抽象层;
每一个日志的实现框架都有自己的配置文件。使用slf4j以后,配置文件还是做成日志实现框架自己本身的配置文件;
如何让系统中所有的日志都统一到slf4j;
1、将系统中其他日志框架先排除出去;
2、用中间包来替换原有的日志框架;
3、我们导入slf4j其他的实现
当项目是使用多种日志API时,可以统一适配到SLF4J,中间使用SLF4J或者第三方提供的日志适配器适配到SLF4J,SLF4J再底层用开发者想用的一个日志框架来进行日志系统的实现,从而达到了多种日志的统一实现