Spring boot 的项目结构

本文详细介绍了SpringBoot项目的结构组成,包括pom文件、启动类、启动器及配置文件等内容,深入解析了各部分的功能与使用方法,帮助开发者快速掌握SpringBoot项目搭建与配置技巧。

1 .pom文件

1.1继承

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

Spring Boot 的父级依赖,只有继承它项目次才时Spring Boot项目,没有它是不能做springboot的开发的。

spring-boot-starter-parent是一个特殊的starter,它用来提供相关的Maven依赖。使用它之后,常用的包依赖可以省去version标签。

1.2依赖

       <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

启动器依赖

这个是一个web启动器包含的一个web全栈的jar包

1.3 插件

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

spring-boot-maven-plugin插件是将springboot的应用程序打包成jar包。将所有的应用启动运行所需要的jar包都包含进来,从逻辑上将具备了独立运行的条件。当运行“mvnpackage”进行打包后,使用“java-jar”命令就可以直接运行。

2.启动类

  • 作用:
    • 启动spring boot 项目 ,是基于Main方法来运行的
  • 注意点:
    • 启动类在启动的时候做注解扫描(@Controller、@Service…),扫描位置为同包或子包下的注解,所以启动类的位置应放于包的根下。

2.1启动类与启动器的区别

  • 启动类表示项目的入口
  • 启动器表示项目的坐标

2.2创建何启动类

@SpringBootApplication
public class BageApplication {

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

}

需要:

  • @SpringBootApplication
  • SpringApplication.run(BageApplication.class, args);

3.启动器

Spring Boot 将所有的功能场景都抽取出来,做成一个个的stater(启动器),只需要在项目里面引入这些stater相关场景的依赖都会导入进来,使我们开发更加的方便,不在成为SSM的配置地狱。

spring-boot-starter

核心启动器,包括自动配置支持,日志记录和YAML

地址

spring-boot-starter-activemq

使用Apache ActiveMQ进行JMS消息传递的入门者

地址

spring-boot-starter-amqp

使用Spring AMQP和Rabbit MQ的入门者

地址

spring-boot-starter-aop

使用Spring AOP和AspectJ进行面向方面编程的入门者

地址

spring-boot-starter-artemis

使用Apache Artemis进行JMS消息传递的入门者

地址

spring-boot-starter-batch

使用Spring批处理的初学者

地址

spring-boot-starter-cache

使用Spring Framework的缓存支持的初学者

地址

spring-boot-starter-cloud-connectors

使用Spring云连接器的初学者简化了与Cloud Foundry和Heroku等云平台中的服务的连接

地址

spring-boot-starter-data-cassandra

使用Cassandra分布式数据库和Spring数据的初学者Cassandra

地址

spring-boot-starter-data-cassandra-reactive

使用Cassandra分布式数据库和Spring数据Cassandra Reactive的入门者

地址

spring-boot-starter-data-couchbase

使用Couchbase面向文档的数据库和Spring Data Couchbase的入门者

地址

spring-boot-starter-data-couchbase-reactive

使用Couchbase面向文档的数据库和Spring Data Couchbase Reactive的入门者

地址

spring-boot-starter-data-elasticsearch

使用Elasticsearch搜索和分析引擎以及Spring Data Elasticsearch的初学者

地址

spring-boot-starter-data-jdbc

使用Spring数据JDBC的入门者

地址

spring-boot-starter-data-jpa

使用Spring Data JPA和Hibernate的初学者

地址

spring-boot-starter-data-ldap

使用Spring数据LDAP的入门者

地址

spring-boot-starter-data-mongodb

使用MongoDB面向文档的数据库和Spring Data MongoDB的初学者

地址

spring-boot-starter-data-mongodb-reactive

使用MongoDB面向文档的数据库和Spring Data MongoDB Reactive的入门者

地址

spring-boot-starter-data-neo4j

使用Neo4j图形数据库和Spring数据Neo4j的入门者

地址

spring-boot-starter-data-redis

使用Spring数据Redis和Lettuce客户端使用Redis键值数据存储的入门者

地址

spring-boot-starter-data-redis-reactive

使用Redis数据Redis被动和Lettuce客户端的Redis键值数据存储的入门者

地址

spring-boot-starter-data-rest

使用Spring Data REST通过REST公开Spring数据存储库的入门者

地址

spring-boot-starter-data-solr

使用带有Spring Data Solr的Apache Solr搜索平台的初学者

地址

spring-boot-starter-freemarker

使用FreeMarker视图构建MVC Web应用程序的入门者

地址

spring-boot-starter-groovy-templates

使用Groovy模板视图构建MVC Web应用程序的入门者

地址

spring-boot-starter-hateoas

使用Spring MVC和Spring HATEOAS构建基于超媒体的RESTful Web应用程序的入门者

地址

spring-boot-starter-integration

使用Spring Integration的入门者

地址

spring-boot-starter-jdbc

将JDBC与HikariCP连接池一起使用的入门者

地址

spring-boot-starter-jersey

使用JAX-RS和Jersey构建RESTful Web应用程序的入门者。替代spring-boot-starter-web

地址

spring-boot-starter-jooq

使用jOOQ访问SQL数据库的初学者。替代spring-boot-starter-data-jpaspring-boot-starter-jdbc

地址

spring-boot-starter-json

阅读和写作json的初学者

地址

spring-boot-starter-jta-atomikos

使用Atomikos进行JTA交易的入门者

地址

spring-boot-starter-jta-bitronix

使用Bitronix进行JTA事务的入门者

地址

spring-boot-starter-mail

使用Java Mail和Spring Framework的电子邮件发送支持的入门者

地址

spring-boot-starter-mustache

使用Mustache视图构建Web应用程序的入门者

地址

spring-boot-starter-oauth2-client

使用Spring安全性OAuth2 / OpenID Connect客户端功能的入门级产品

地址

spring-boot-starter-oauth2-resource-server

使用Spring安全性OAuth2资源服务器功能的入门者

地址

spring-boot-starter-quartz

使用Quartz调度程序的入门者

地址

spring-boot-starter-security

使用Spring安全性的入门者

地址

spring-boot-starter-test

用于测试包含JUnit,Hamcrest和Mockito等库的Spring Boot应用程序的入门者

地址

spring-boot-starter-thymeleaf

使用Thymeleaf视图构建MVC Web应用程序的入门者

地址

spring-boot-starter-validation

使用Java Bean验证与Hibernate Validator的初学者

地址

spring-boot-starter-web

使用Spring MVC构建Web(包括RESTful)应用程序的入门者。使用Tomcat作为默认嵌入式容器

地址

spring-boot-starter-web-services

使用Spring Web服务的入门者

地址

spring-boot-starter-webflux

使用Spring Framework的Reactive Web支持构建WebFlux应用程序的初学者

地址

spring-boot-starter-websocket

使用Spring Framework的WebSocket支持构建WebSocket应用程序的入门者

地址

4.配置文件

名称为:application

格式有两种:

  • properties
  • YAML

注意点:他是由spring-boot-starter(核心启动器,包括自动配置支持,日志记录和YAML)解析的

4.1 properties

格式是“键=值”的格式,文本注释信息可以用"#"来注释。

#修改toncat的端口号
server.port=8888

4.2YAML

YAML 格式的配置文件的扩展名可以为yaml或者yml

4.2.1基本语法
  • 大小写敏感
  • 使用缩进表示层级关系
  • 缩进不允许使用tab,只允许空格
  • 缩进的空格数不重要,只要相同层级的元素左对齐即可
  • '#'表示注释
4.2.2 支持的数据类型:
  • 对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
key: 
    child-key: value
    child-key2: value2
  • 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)

以 - 开头的行表示构成一个数组

- A
  • 纯量(scalars):单个的、不可再分的值

4.3 使用

server:
  port: 8888
  host:xxxx

4.4配置文件存放位置

  • 当前项目的根目录中
  • 当前项目根目录下的一个/config子目录中
  • 项目的resources即classpath路径中
  • 项目的resources即classpath路径中下的/config子目录中

4.5配置文件的优先级

  • 在同一个目录下,有application.properties和application.yml文件,优先读取application.properties

    注意点:默认使用第一个读取到的

  • 在不同目录下

    1. 当前项目根目录下的一个/config子目录中(最高)
    2. 当前项目的根目录中
    3. 项目的resources即classpath路径中下的/config子目录中
    4. 项目的resources即classpath路径中

4.6配置文件中的占位符

语法:

${}
4.6.1作用
  • ${}中可以获取框架提供的方法中的值如:random.int等。
  • 占位符可以获取配置文件中的一个键的值赋给另一个键为值
zoo:
    age: 18
    dog: ${zoo.age}
4.6.2生成随机数
# 随机字符串
${random.value}
# 随机int
${random.int}
# 随机long
${random.long}
# 10以内的随机数
${random.int(10)}
# 10-20的随机数
${random.int[10,20]}
#生成一个uuid,有短杠连接
${random.uuid}

生成一个随机的端口:

server:
  port: ${random.int(8000,9000)}

4.7 bootstrap配置文件

Spring Boot 中有两个上下文对象,一种事 bootstrap,另一种是application。它俩是继承的关系,application继承与bootstrap。bootstrap是应用程序的父上下文,bootstrap优先于application。bootstrap主要用于从额外的资源来加载配置信息,含可以在本地外部配置文件中的解密属性。这两耳光上下文共用一个环境,它是任何Spring应用程序的外部属性的来源。bootstrap里面的属性会优先加载,他们默认页不能被本地相同配置覆盖。

4.7.1特征
  • bootstrap由父类applicationContext 加载,比application优先加载。
  • bootstrap中的属性不能被覆盖
4.7.2应用场景
  • 使用 spring cloud config 配置中心时,这时需要在bootstrap 配置文件中添加连接到配置中心的配置属性来加载外部配置中心的配置信息。
  • 一些固定不能被覆盖的属性
  • 一些加密/解密的常景

5.Spring Boot 核心注解

5.1@SpringBootApplication

  • 是Spring Boot 的启动类
  • 相当于声明 @Configuration, @EnableAutoConfiguration and @ComponentScan.

5.2@SpringBootConfiguration

@SpringBootConfiguration注解是@Configuration注解的一个派生注解,根@Configuration注解的功能一致标注这个类是一个配置类,只不过@SpringBootConfiguration是 Spring Boot的注解 。

5.3@Configuration

通过bean对象代替spring中的 xml文件

5.4@EnableAutoConfiguration

  • Spring Boot 自动配置(auto-configuration):尝试根据你添加的jar依赖自动配置你的Spring的应用
  • 相当于声明 @AutoConfigurationPackage,@Import({AutoConfigurationImportSelrtor.class})

5.5@AutoConfigurationPackage

@AutoConfigurationPackage注解,自动注入主类下所在包下所有的加了注解的类(@Controller @service等),以及配置类(@Configurtion)

5.6@Import({AutoConfigurationImportSelrtor.class})

  • 直接导入普通的类
  • 导入实现了ImportSelrctor接口的类
  • 导入实现了ImportBeanDefinitionRegistrar接口的类

5.7ComponentScan

组件扫描,可以自动装配一些Bean。

5.8@ConfigurationPropertiesScan

  • @ConfigurationPropertiesScan扫描配置属性。
  • @EnableConfigurationProperties注解的作用使用@ConfigurationPropertiesScan注解的类生效
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值