springboot初始教程之项目结构(代码片段)

夜宿山寺 夜宿山寺     2022-12-08     732

关键词:

SpringBoot初始教程之项目结构

1 简介

Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can “just run”. We take an opinionated view of the Spring platform and third-party libraries so you can get started with minimum fuss. Most Spring Boot applications need very little Spring configuration.

Features

  1. Create stand-alone Spring applications
  2. Embed Tomcat, Jetty or Undertow directly (no need to deploy WAR files)
  3. Provide opinionated ‘starter’ POMs to simplify your Maven configuration
  4. Automatically configure Spring whenever possible
  5. Provide production-ready features such as metrics, health checks and externalized configuration
  6. Absolutely no code generation and no requirement for XML configuration

上述是官方的英文讲解、大概翻译后如下:

SpringBoot在建立生产中的独立程序上非常简便、只需要一些简便的配置就能运行起来。大致有如下特点:

  1. 创建独立的Spring applications
  2. 能够使用内嵌的Tomcat, Jetty or Undertow,不需要部署war
  3. 提供starter pom来简化maven配置
  4. 自动配置Spring
  5. 提供一些生产环境的特性,比如metrics, health checks and externalized configuration
  6. 绝对没有代码生成和XML配置要求

2. 快速开始


<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.4.1.RELEASE</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>springboot-1</artifactId>


    <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>
                <version>1.4.1.RELEASE</version>
            </plugin>
        </plugins>
    </build>
</project>

这块统一用spring-boot-starter-parent做为parent 所以spring-boot-starter-web不用填写版本号


<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.4.1.RELEASE</version>
 </parent>

下面这个插件是用来运行Springboot的,通常有两种方式可以运行SpringBoot,一种是通过直接运行main方法,另外一种是通过使用下面的插件运行。
两种方式有差别,一旦项目中需要访问资源的时候就需要通过插件运行,否则无法访问到资源


<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>1.4.1.RELEASE</version>
</plugin>

上面是maven配置,接下来需要配置整个程序的入口,AppApplication


@SpringBootApplication
public class AppApplication 
    public static void main(String[] args) throws Exception 
        SpringApplication.run(AppApplication.class, args);
    

下面写了一个简易的controller,只要运行main方法或者插件,就能够正常访问了。这块需要注意,controller跟AppApplication放在一个包下面,
如果不再一个下面需要配置扫描的包


@RestController
public class IndexController 
    @GetMapping("/index")
    public ResponseEntity helloWord() 
        return ResponseEntity.ok("hello word");
    

3.配置详解

@SpringBootApplication 这个注解是一个组合注解,聚合了多个注解的功能,具体源码如下


@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class))
public @interface SpringBootApplication 

    //排除自启动项
    Class<?>[] exclude() default ;

    //排除自动启动的beanName
    String[] excludeName() default ;

       //扫描包
    @AliasFor(annotation = ComponentScan.class, attribute = "basePackages")
    String[] scanBasePackages() default ;

    //扫描类
    @AliasFor(annotation = ComponentScan.class, attribute = "basePackageClasses")
    Class<?>[] scanBasePackageClasses() default ;


@EnableAutoConfiguration这个注解是用来启动SpringBoot中的自动配置项目,这个注解是必须加上的,否则无法正常使用因为SpringBoot
默认配置了很多配置项,如下图所示配置在这里面的配置项都会自动进行配置,一部分需要引用其他jar包配置才会生效

application.yaml 文件详解

application.yaml是整个应用程序的配置文件,SpringBoot自动加载,SpringBoot提供针对各种组件的都可以通过application.yaml进行配置,后续再进行详解。

springboot初始教程之测试(代码片段)

SpringBoot初始教程之测试(八)1.介绍在为参加工作之前也写过测试用例,当时主要是针对外包项目的,其实总的来说主要是用来跑数据当做main方法使用,但基本不经常写,随着工作年限的增长。渐渐的写了很多测试... 查看详情

springboot初始教程之测试(代码片段)

SpringBoot初始教程之测试(八)1.介绍在为参加工作之前也写过测试用例,当时主要是针对外包项目的,其实总的来说主要是用来跑数据当做main方法使用,但基本不经常写,随着工作年限的增长。渐渐的写了很多测试... 查看详情

springboot初始教程之热部署(代码片段)

SpringBoot初始教程之热部署(五)1.介绍SpringBoot提供了一个maven插件来支持热部署spring-boot-devtools,仅仅是在开发环境中使用,如果已经打包了就无法使用。<dependencies><dependency><groupId>org.springframework.boot</groupId>& 查看详情

springboot初始教程之热部署(代码片段)

SpringBoot初始教程之热部署(五)1.介绍SpringBoot提供了一个maven插件来支持热部署spring-boot-devtools,仅仅是在开发环境中使用,如果已经打包了就无法使用。<dependencies><dependency><groupId>org.springframework.boot</groupId>& 查看详情

springboot初始教程之日志处理(代码片段)

SpringBoot初始教程之日志处理(二)1.介绍SpringBoot默认是采用logback进行日志处理、Logback是由log4j创始人设计的又一个开源日志组件。Logback是由log4j创始人设计的又一个开源日志组件。logback当前分成三个模块:logback-core,logback-class... 查看详情

springboot初始教程之日志处理(代码片段)

SpringBoot初始教程之日志处理(二)1.介绍SpringBoot默认是采用logback进行日志处理、Logback是由log4j创始人设计的又一个开源日志组件。Logback是由log4j创始人设计的又一个开源日志组件。logback当前分成三个模块:logback-core,logback-class... 查看详情

springboot初始教程之统一异常处理(代码片段)

SpringBoot初始教程之统一异常处理(三)1.介绍在日常开发中发生了异常,往往是需要通过一个统一的异常处理处理所有异常,来保证客户端能够收到友好的提示。SpringBoot在页面发生异常的时候会自动把请求转到/error,Spr... 查看详情

springboot初始教程之统一异常处理(代码片段)

SpringBoot初始教程之统一异常处理(三)1.介绍在日常开发中发生了异常,往往是需要通过一个统一的异常处理处理所有异常,来保证客户端能够收到友好的提示。SpringBoot在页面发生异常的时候会自动把请求转到/error,Spr... 查看详情

springboot初始教程之servletfilterlistener配置(代码片段)

SpringBoot初始教程之Servlet、Filter、Listener配置(七)1.介绍通过之前的文章来看,SpringBoot涵盖了很多配置,但是往往一些配置是采用原生的Servlet进行的,但是在SpringBoot中不需要配置web.xml的因为有可能打包之后是一个jar包... 查看详情

springboot初始教程之springboot-metrics监控(代码片段)

SpringBoot初始教程之SpringBoot-Metrics监控(十)1.介绍Metrics基本上是成熟公司里面必须做的一件事情,简单点来说就是对应用的监控,之前在一些技术不成熟的公司其实是不了解这种概念,因为业务跟技术是相关的当业务庞... 查看详情

springboot初始教程之springboot-metrics监控(代码片段)

SpringBoot初始教程之SpringBoot-Metrics监控(十)1.介绍Metrics基本上是成熟公司里面必须做的一件事情,简单点来说就是对应用的监控,之前在一些技术不成熟的公司其实是不了解这种概念,因为业务跟技术是相关的当业务庞... 查看详情

springboot初始教程之数据库连接池(druid)(代码片段)

SpringBoot初始教程之数据库连接池(druid)(六)1.介绍Druid是一个JDBC组件库,包括数据库连接池、SQLParser等组件。DruidDataSource是最好的数据库连接池。SpringBoot支持任何一种数据库链接池的配置,在这里用druid作为例子进行讲解2.... 查看详情

springboot初始教程之数据库连接池(druid)(代码片段)

SpringBoot初始教程之数据库连接池(druid)(六)1.介绍Druid是一个JDBC组件库,包括数据库连接池、SQLParser等组件。DruidDataSource是最好的数据库连接池。SpringBoot支持任何一种数据库链接池的配置,在这里用druid作为例子进行讲解2.... 查看详情

springboot初始教程之测试(代码片段)

SpringBoot初始教程之测试(八)1.介绍在为参加工作之前也写过测试用例,当时主要是针对外包项目的,其实总的来说主要是用来跑数据当做main方法使用,但基本不经常写,随着工作年限的增长。渐渐的写了很多测试... 查看详情

springboot初始教程之redis集中式session管理(代码片段)

SpringBoot初始教程之Redis集中式Session管理(四)1.介绍有关Session的管理方式这里就不再进行讨论,目前无非就是三种单机Session(基于单机内存,无法部署多台机器)、基于Cookie(安全性差)、基于全局的统一Session管理(redis、mysql)... 查看详情

springboot初始教程之redis集中式session管理(代码片段)

SpringBoot初始教程之Redis集中式Session管理(四)1.介绍有关Session的管理方式这里就不再进行讨论,目前无非就是三种单机Session(基于单机内存,无法部署多台机器)、基于Cookie(安全性差)、基于全局的统一Session管理(redis、mysql)... 查看详情

重学springboot系列之基础知识回顾(代码片段)

重学SpringBoot系列之基础知识回顾SpringBoot项目结构SpringBoot、SpringMVC、Spring对比SpringBoot自动配置什么是SpringBootStarter?什么是SpringBootStarterParent嵌入式web容器SpringDataspringboot2.x新特性基础环境升级依赖组件升级默认软件替换新技... 查看详情

springboot中级教程之springboot自定义配置(代码片段)

SpringBoot中级教程之SpringBoot自定义配置(十一)前言首先力推下我的开源项目http://git.oschina.net/wangkang_daydayup/swagger-doc这是一个完全利用springboot开发的项目,拯救了springfox-swagger污染代码的问题,完全利用java-doc来实现,... 查看详情