SpringBoot构建项目-01

1. 整合

用SpringBoot搭建一个web应用

流程:

  1. 在pom.xml中配置
    
        org.springframework.boot 
        spring-boot-starter-parent 
        2.0.5.RELEASE
    

    
        
            org.springframework.boot
            spring-boot-starter-web 
        
    

在此xml中需要说明:

标签:对子模块的一个收集,用于对集成的jar包管理,spring-boot-starter-parent管理springboot所需要的jar包及版本,在它以上还有一层父级项目,集成了springboot所有的依赖!

spring-boot-starter-web 整合了web层所需要的所有依赖!例如(spring-mvc、日志、tomcat、json等)

  1. 创建启动类
@RestController
@EnableAutoConfiguration
public class Example {
    @RequestMapping("/")
    String home() {
        return "Hello World!";
    }
    public static void main(String[] args) {
        SpringApplication.run(Example.class, args);
    }
}

@RestController:注解是一个组合标签包含@controller@responsbody

@EnableAutoConfiguration:注解启用自动配置

通过AutoConfigurationImportSelector导入选择器,在getCandidateConfigurations方法中加载META-INF/spring.factories下的配置类的全限定名来创建bean。

SpringApplication.run:加载当前配置类,启动springboot应用,先准备应用数据和环境,创建加载容器,加载容器,加载注册bean,解析配置类做自动配置,把项目打包到内嵌的tomcat,运行项目!

2. 分离

把控制层和启动配置类分开

@ComponentScan
@Configuration
@EnableAutoConfiguration
public class HelloConfig {
    public static void main(String[] args) {
        SpringApplication.run(HelloConfig.class,args);
    }
}
@RestController
public class HelloController {
    @RequestMapping("/hello")
    public String hello(){
        return "hello spring-boot";
    }
}

需要使用@ComponentScan注解去扫描带有@RestController注解的控制类,加载该类

简化的写法:

@SpringBootApplication
public class HelloConfig {
    public static void main(String[] args) {
        SpringApplication.run(HelloConfig.class,args);
    }
}

@SpringBootApplication:该注解集成了

@ComponentScan
@Configuration
@EnableAutoConfiguration

这三个注解!

3. SpringBoot打包、热部署

3.1 打包

  1. 导入打包插件
    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    
  1. idea右侧点击Maven Projects选择LifeCycle中的maven-package或者install,会自动在target目录下生成jar

  2. 在jar包目录下cmd执行命令

java -jar jar包名

3.2 热部署

  1. 导入热部署插件
 
     org.springframework.boot
     spring-boot-devtools
 
  1. 每次修改后重写编译项目即可

4. 项目结构

在resource下可以自定义springboot配置

例如在application.properties中修改端口号:

server.port=8181

或者新建一个application.yml

server:
  port: 8181

在resource下

static文件夹:存放静态资源:例如js、css...

templates文件夹:存放模板文件,不能使用浏览器直接访问,必须经过controller访问!

5. SpringBoot配置

5.1 yml语法

yml使用key:value 的形式来表示属性和值,用:相连,值与:之间有空格

name: zs

同一层级下需要缩进

user:
  username: ls
  age: 23
  sex: true

可以使用json格式,值与:之间有空格

user: {username: ww,age: 18,sex: false}

数组的表示

annimals: [cat,dog,fish]

或者:

animals:
  -cat
  -dog
  -fish

5.2 使用注解的方式读取yml

@Value 注解springboot在启动时读取配置文件会将其中的配置项加载到spring的环境中

@RestController
public class HelloController {
    @Value(value = "${name}")
    private String name;
    @RequestMapping("/hello")
    public String hello(){
        System.out.println(name);
        return "hello spring-boot";
    }
}

@ConfigurationProperties(prefix = "")注解springboot在启动时读取配置文件会根据前缀prefix把所有配置项读到配置类或实体类中,将配置项与字段做同名匹配,然后赋值!

例如:

将配置文件中的user配置项的值封装到实体类中!该实体类必须交给spring管理

user:
  username: ls
  age: 23
  sex: true
@ConfigurationProperties(prefix = "user")
@Component
public class People {
    private String username;
    private String age;
    private Boolean sex;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public Boolean getSex() {
        return sex;
    }

    public void setSex(Boolean sex) {
        this.sex = sex;
    }

    @Override
    public String toString() {
        return "People{" +
                "username='" + username + '\'' +
                ", age='" + age + '\'' +
                ", sex=" + sex +
                '}';
    }
}

5.3 profile多环境支持

有时候在开发环境和测试环境使用的配置是不一样的,此时可以配置profile来满足多种环境的需求!

方式1:把多种配置写在一个配置文件内,通过spring: profiles: active: dev,active来激活当前主要配置!

spring:
  profiles:
    active: dev
---

server:
  port: 8888
spring:
  profiles: dev
---
server:
  port: 7777
spring:
  profiles: test
---
server:
  port: 6666
spring:
  profiles: prod

方式2:配置多个不同的配置文件例如application-dev.yml 、application-test.yml,然后再主要的配置文件application.yml指定当前环境使用哪一种配置!

**application-dev.yml **

server:
  port: 5555

application-test.yml

server:
  port: 4444

application.yml

spring:
  profiles:
    active: dev

会根据文件名字匹配!

6. SpringBoot的测试

  1. 导包
        
            org.springframework.boot
            spring-boot-starter-test 
        
  1. 测试类
@RunWith(SpringRunner.class)
@SpringBootTest
public class MySpringBootTest {
    @Test
    public void test(){
        System.out.println("hello spring boot");
    }
}

@RunWith:与之前的Spring的测试不同,这里是使用SpringRunner的方式!

@ContextConfiguration:使用的配置类!

7. SpringBoot日志

1. 日志等级:

从小到大:error-warning-info-debug-trace

需要说明,日志等级配置的是什么,只会打印它及其它等级以下的信息,例如我配置了info,那么error、warning等级的信息也会打印出来,但是debug的就不会打印!

可以在yml中配置需要打印的日志等级

logging:
  level: 
    root: debug

2. SpringBoot日志框架logback

SpringBoot默认的logback配置文件:logback.xml、logback-spring.xml




    
    
    
    
    
    
        
        
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
        
    

      
    
        
        ${LOG_HOME}/${appName}.log
        
        
            
            ${LOG_HOME}/${appName}-%d{yyyy-MM-dd}-%i.log
            
            365
            
            
                100MB
            
        
             
        
            %d{yyyy-MM-dd HH:mm:ss.SSS} [ %thread ] - [ %-5level ] [ %logger{50} : %line ] - %msg%n
        
    

    
    
    
    
    



    
    
        
        
    
 

你可能感兴趣的:(SpringBoot构建项目-01)