SpringBoot2.x学习-工程介绍

一、目录结构

在传统的基于maven的java web项目中,工程目录结构是这样的:

my-app
|-- pom.xml
`-- src
    |-- main
    |   |-- java  存放Java源文件
    |   |-- resources  存放框架工程配置文件
    |   |-- webapp  存放静态文件页面等
    |        -- WEB-INF
    |              --web.xml
    |-- test  存放测试程序
        |-- java
        |-- resources

而基于Maven构建的SpringBoot工程的目录结构如下:

springboot-app
|-- pom.xml
`-- src
    |-- main
    |   |-- java  存放Java源文件
    |   |   --groupId
    |   |      --artifactId
    |   |         --XXXApplication.java  启动类
    |   |-- resources  
    |        |-- static  存放各类静态文件 css、js、image等
    |        |-- templates  存放页面模板文件 html、jsp等
    |        |-- application.properties  全局配置文件
    |-- test  存放测试程序
        |-- java
二、启动器依赖

1、Spring Boot Starters(启动器)
Starters可以理解为启动器,它包含了一系列可以集成到应用里面的依赖包,可以一站式集成Spring及其他技术,而不需要到处找示例代码和依赖包。Starters包含了许多项目中需要用到的依赖,它们能快速持续的运行,都是一系列得到支持的管理传递性依赖。更多参考
2、spring-boot-starter-web依赖模块

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

这个是官方提供的 对web支持的依赖模块。Spring Boot会自动关联Web开发相关的依赖,例如Tomcat以及Spring-webmvc等,进而对Web开发进行支持,同时相关技术的配置也将实现自动配置。
打开maven仓库spring-boot-starter-web目录下相关版本的pom文件,可以看到web依赖关系。例如打开spring-boot-starter-web-2.0.7.RELEASE.pom文件


    org.springframework.boot
    spring-boot-starters
    2.0.7.RELEASE

  org.springframework.boot
  spring-boot-starter-web
  2.0.7.RELEASE
  Spring Boot Web Starter

    
      org.springframework.boot
      spring-boot-starter
      2.0.7.RELEASE
      compile
    
    
      org.springframework.boot
      spring-boot-starter-json
      2.0.7.RELEASE
      compile
    
    
      org.springframework.boot
      spring-boot-starter-tomcat
      2.0.7.RELEASE
      compile
    
    
      org.hibernate.validator
      hibernate-validator
      6.0.13.Final
      compile
    
    
      org.springframework
      spring-web
      5.0.11.RELEASE
      compile
    
    
      org.springframework
      spring-webmvc
      5.0.11.RELEASE
      compile
    
  

可以看到spring-boot-starter-web关联依赖了对json、tomcat、validator、mvc支持。Spring boot 默认使用Tomcat作为嵌入式Servlet容器,只需要引入spring-boot-start-web依赖,默认采用的Tomcat作为容器。
3、spring-boot-starters这个是Spring Boot的核心启动器,包括自动配置、日志、和YAML文件的支持。
4、spring-boot-starter-json依赖模块:打开spring-boot-starter-json-2.0.7.RELEASE.pom文件依赖如下:


    
      org.springframework.boot
      spring-boot-starter
      2.0.7.RELEASE
      compile
    
    
      org.springframework
      spring-web
      5.0.11.RELEASE
      compile
    
    
      com.fasterxml.jackson.core
      jackson-databind
      2.9.7
      compile
    
    
      com.fasterxml.jackson.datatype
      jackson-datatype-jdk8
      2.9.7
      compile
    
    
      com.fasterxml.jackson.datatype
      jackson-datatype-jsr310
      2.9.7
      compile
    
    
      com.fasterxml.jackson.module
      jackson-module-parameter-names
      2.9.7
      compile
    
  

Spring默认使用Jackson开源框架作为JSON解析框架。更多参考
5、spring-boot-starter依赖继承自spring-boot-starters,打开spring-boot-starter-2.0.7.RELEASE.pom文件如下:


    
      org.springframework.boot
      spring-boot
      2.0.7.RELEASE
      compile
    
    
      org.springframework.boot
      spring-boot-autoconfigure
      2.0.7.RELEASE
      compile
    
    
      org.springframework.boot
      spring-boot-starter-logging
      2.0.7.RELEASE
      compile
    
    
      javax.annotation
      javax.annotation-api
      1.3.2
      compile
    
    
      org.springframework
      spring-core
      5.0.11.RELEASE
      compile
    
    
      org.yaml
      snakeyaml
      1.19
      runtime
    
  

spring-boot-starter-logging(默认的日志启动器)依赖的spring-boot-starter-logging-2.0.7.RELEASE.pom文件依赖关系如下:


    
      ch.qos.logback
      logback-classic
      1.2.3
      compile
    
    
      org.apache.logging.log4j
      log4j-to-slf4j
      2.10.0
      compile
    
    
      org.slf4j
      jul-to-slf4j
      1.7.25
      compile
    
  

默认使用Logback。

三、全局配置文件

1.可以在Spring Boot项目的 src/main/resources目录下或者类路径的/config目录下创建一个全局文件application.properties或者是.yml的application.yml文件,用于修改Spring Boot项目的默认配置值。例如修改项目的端口和Spring MVC处理的url。application.properties内容如下:

server.port=8888
server.servlet.context-path=/

server.tomcat.uri-encoding=utf-8

2.多环境配置
通过配置多份不同配置文件来区分开发、测试、生产环境。
在Spring Boot中多环境配置文件名需要满足application-{profile}.properties的格式,其中{profile}对应你的环境标识,
例如:

  • application-dev.properties 开发环境配置文件
  • application-test.properties 测试环境配置文件
  • application-prod.properties 生产环境配置文件

然后在application.properties里面指定使用哪个环境的配置文件.
通过spring.profiles.active属性来设置,其值对应{profile}值。
spring.profiles.active=test 则是使用测试环境配置文件

四、XXXApplication启动类与核心注解

Spring Boot项目一般都会有注解*Application标注的入口类,入口类会有一个main方法,main方法是一个标准的Java应用程序的入口方法,可以直接启动。
如下所示:

package com.soft.fire;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class FireApplication {

    public static void main(String[] args) {

        SpringApplication.run(FireApplication.class, args);
    }

}

@SpringBootApplication注解是Spring Boot的核心注解,用此注解标注的入口类是应用的启动类。@SpringBootApplication是一个组合注解,源码如下:


@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
    excludeFilters = {@Filter(
    type = FilterType.CUSTOM,
    classes = {TypeExcludeFilter.class}
), @Filter(
    type = FilterType.CUSTOM,
    classes = {AutoConfigurationExcludeFilter.class}
)}
)
public @interface SpringBootApplication {
    @AliasFor(
        annotation = EnableAutoConfiguration.class
    )
    Class[] exclude() default {};

    @AliasFor(
        annotation = EnableAutoConfiguration.class
    )
    String[] excludeName() default {};

    @AliasFor(
        annotation = ComponentScan.class,
        attribute = "basePackages"
    )
    String[] scanBasePackages() default {};

    @AliasFor(
        annotation = ComponentScan.class,
        attribute = "basePackageClasses"
    )
    Class[] scanBasePackageClasses() default {};
}

1、@SpringBootConfiguration:这是Spring Boot项目的配置注解。由@Configuration和其他注解一起组合成。
2、@EnableAutoConfiguration:启动自动配置,这个注解会让Spring Boot根据当前项目所依赖的jar包自动配置项目的相关配置项。
3、@ComponentScan:扫描配置,Spring Boot默认会扫描@SpringBootConfiguration所在类的同级包以及它的子包,所以建议将@SpringBootConfiguration标注的启动类放置在项目包下(Group Id/Artifact Id),这样就可以保证Spring Boot项目可以自动扫描到所有的包。这个组件扫描注解相当于Spring XML配置文件中的元素。

你可能感兴趣的:(Spring,Boot)