1.idea spring多模块
1.parent: 管理版本
在父模块的pom添加以下代码
<dependencyManagement>
<dependencies>
<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>
2.子模块
1.指定父模块
其实如果是直接在父模块下面创建的模块的话,指定父模块是自动生成的
<parent>
<artifactId>springboot-parent</artifactId>
<groupId>com.sx</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
2.导入自己需要的场景启动器
<dependencies>
<!-- 导入相关的场景启动器,就会把相关的依赖一起导入进来-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
</dependencies>
3.多模块的打包需要添加以下的代码
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!-- 如果依赖父亲是spring-boot-starter-parent(不是多模块),就不需要添加,在里面已经配置了-->
<configuration>
<mainClass>com.sx.App</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
2.入门探究
1.pom文件:非多模块项目
一
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.RELEASE</version>
</parent>
父亲模块spring-boot-dependencies,版本仲裁中心
二 导入场景启动器
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
三 打包
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
2.@SpringApplication
一 是一个配置类
二 导入当前类所在包及子子孙包加了注解的类
三 加入一大堆配置类
四 一大堆的配置类被加载后会进行自动配置,以至于我们使用时不用做配置
3.springboot配置
1.配置文件
SpringBoot使用一个全局的配置文件,配置文件名是固定的
1.application.properties -传统方式,不推荐
2.application.yml-推荐使用
使用配置文件要加入以下代码
<!--导入配置文件处理器,配置文件进行绑定就会有提示-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
2.yml
1.yml的书写规范
1.名字必须是application.yml
2.换行空格表示层级
3.冒号后面必须要隔一个空格 如:
person:
lastName: admin
age: 20
boss: false
maps: {k1: v1,k2: 12}
lists:
- one
- tow
dog:
name: 秋田
age: 22
2.获取yml的内容
1.先写一个文件准备好yml里面的属性比如:
写一个person.java
private String lastName;
private Integer age;
private Boolean boss;
private Map<String,Object> maps;
private List<Object> lists;
private Dog dog;
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Boolean getBoss() {
return boss;
}
public void setBoss(Boolean boss) {
this.boss = boss;
}
public Map<String, Object> getMaps() {
return maps;
}
public void setMaps(Map<String, Object> maps) {
this.maps = maps;
}
public List<Object> getLists() {
return lists;
}
public void setLists(List<Object> lists) {
this.lists = lists;
}
public Dog getDog() {
return dog;
}
public void setDog(Dog dog) {
this.dog = dog;
}
@Override
public String toString() {
return "Person{" +
"lastName='" + lastName + '\'' +
", age=" + age +
", boss=" + boss +
", maps=" + maps +
", lists=" + lists +
", dog=" + dog +
'}';
}
2.获取yml值的两种方式
1.方式一 获取值 @value("${xxx.yyy}")
这个只能单个的获取,如果要每个属性都获取的话就每个属性上面都要加
@Value("${person.lastName}")
2.方式二
@ConfigurationProperties(prefix = "bean名")
@PropertySource(value = {"classpath:application.yml"})
3.profile多环境支持
1.为什么需要多场景支持
因为在开发中可能会有开发环境的实现,还有测试环境和上线后的环境的不同
2.多场景支持的方法
在配置文件yml中进行配置
spring:
profiles:
active: test
---
server:
port: 8080
spring:
profiles: dev
---
server:
port: 8081
spring:
profiles: test
---
server:
port: 8082
spring:
profiles: prod
active表示默认激活的那一套
4.springboot测试
1.在pom中导入
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
2.创建一个SpringBoot启动类:
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class,args);
}
}
2.做测试的时候可以创一个service,方便测试,并将它交给spring管理:
@Service
public class MyService {
public void test(){
System.out.println("test");
}
}
3…最后写一个测试类,自动注入service,来调用service的方法
这里重要的有两个注解才能实现springboot的测试
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Spring启动类的名字.class)
@RunWith(SpringRunner.class)
@SpringBootTest(classes = App.class)
public class SpringBootTestTest {
//注入类就可以了
@Autowired
private MyService myService;
@Test
public void test(){
myService.test();
}
}
5.springboot日志
把其他框架的日志替换为我们的实现
移出其他框架日志jar
替换为自己的实现
统一一个日志框架