zoukankan      html  css  js  c++  java
  • 使用SpringBoot

    使用SpringBoot

    1.构建系统

    依赖项管理:Springboot 的每个版本都提供了它所支持的经过精心策划的依赖项列表。

    在Maven中使用SPringBoot,

    SpringBoot中的starter表格:Using Spring Boot

    2.构建你的代码

    使用默认包

    当一个类不包含一个包声明时,它被认为是在 “默认包” 中。我们建议您遵循 Java 推荐的包命名约定,并使用反向域名 (例com.example.project).

    定位主要应用程序类

    建议您将主应用程序类定位在根包中,位于其他类之上。@SpringBootApplication注释通常放在您的主类上,它隐式地为某些项定义一个基本的 “搜索包”。

    如果你不想使用@SpringBootApplication,@EnableAutoConfiguration@ComponentScan导入的注释定义了同样的行为,可以使用这些替代。

    3.配置类

    Spring Boot 支持基于 java 的配置。虽然可以将 SpringApplication 与 XML 源一起使用,但是我们通常建议您的主要源是一个 @configuration 类

    导入额外的配置类

    您不必将所有@Configuration放在一个类中。可以使用 @import 注释导入其他配置类。或者,您可以使用 @ComponentScan自动拾取所有 Spring 组件,包括 @Configuration类。

    导入 XML 配置

    如果您必须使用基于 XML 的配置,我们建议您仍然从@Configuration类开始。然后可以使用 @ImportResource注释来加载 XML 配置文件.

    4.自动配置

    Spring Boot 自动配置尝试根据添加的 jar 依赖项自动配置 Spring 应用程序。例如,如果 HSQLDB 位于类路径上,而您没有手动配置任何数据库连接 Bean,那么 Spring Boot 将自动配置一个内存数据库。

    您需要通过向@Configuration类中添加 @EnableAutoConfiguration@SpringBootApplication注释来选择自动配置。

    逐渐取代自动配置

    自动配置是非侵入性的。在任何时候,您都可以开始定义自己的配置,以替换自动配置的特定部分。例如,如果您添加自己的 DataSource bean,则默认的嵌入式数据库支持将退回。

    如果您需要了解当前应用的自动配置是什么,以及为什么,那么可以使用 -- debug 开关启动应用程序。这样做可以为选择的核心日志记录器启用调试日志,并将条件报告记录到控制台。

    禁用特定的自动配置类

    如果你发现你不想要的特定的自动配置类被应用,你可以使用 @SpringBootApplication的 exclude 属性来禁用它们:

    import org.springframework.boot.autoconfigure.*;
    import org.springframework.boot.autoconfigure.jdbc.*;
    
    @SpringBootApplication(exclude={DataSourceAutoConfiguration.class})
    public class MyApplication {
    }
    

    如果类不在类路径上,则可以使用注释的 excludeName属性并指定完全限定名。如果您更喜欢使用 @excludeName而不是 @SpringBootApplication,那么 exclude 和 excludeName也是可用的。最后,还可以使用 spring.autoconfigure.exclude 属性控制要排除的自动配置类列表。

    可以在注释级别和通过使用属性定义排除.

    5.Spring Beans和依赖注入

    您可以自由地使用任何标准 Spring Framework 技术来定义 bean 及其注入的依赖项。我们经常发现,使用 @ComponentScan(查找 bean) 和 @Autowired(执行构造函数注入) 工作得很好。

    如果按照上面的建议构造代码 (将应用程序类定位在根包中) ,则可以添加 @ComponentScan,而不需要任何参数。您的所有应用程序组件 (@Component、@Service、@Repository、@Controller等) 都自动注册为 Spring Beans。

    注入方式

    • @Autowired

      @Autowired
          public DatabaseAccountService(RiskAssessor riskAssessor) {
              this.riskAssessor = riskAssessor;
          }
      
    • 使用构造函数注入

      @Service
      public class DatabaseAccountService implements AccountService {
      	// final关键字表示其后不能更改
          private final RiskAssessor riskAssessor;
      
          public DatabaseAccountService(RiskAssessor riskAssessor) {
              this.riskAssessor = riskAssessor;
          }
      
          // ...
      
      }
      

    6、使用 @SpringBootApplication 注释

    许多 Spring Boot 开发者喜欢他们的应用程序使用自动配置,组件扫描,并能够定义额外的配置在他们的 “应用程序类”。一个 @SpringBootApplication注释可以用来启用这三个特性

    1. @EnableAutoConfiguration: 启用 Spring Boot 的自动配置机制;
    2. @ComponentScan: 在应用程序所在的包上启用 @Component 扫描(参见最佳实践)
    3. @Configuration: 允许在上下文中注册额外的 Bean 或者导入额外的配置类
    package com.example.myapplication;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication // same as @Configuration @EnableAutoConfiguration @ComponentScan
    public class Application {
    
        public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
    
    }
    

    这些特性都不是强制性的,您可以选择用它所支持的任何特性替换这个单独的注释。例如,您可能不希望在应用程序中使用组件扫描或配置属性扫描.

    7. 运行你的程序

    将应用程序打包为 jar 并使用嵌入式 HTTP 服务器的最大优点之一是,您可以像运行其他应用程序一样运行应用程序。此示例应用于调试 Spring Boot 应用程序。您不需要任何特殊的 IDE 插件或扩展。

    在ide上运行

    您可以将 Spring Boot 应用程序作为 Java 应用程序从 IDE 中运行。

    如果不能直接将项目导入 IDE,则可以使用构建插件生成 IDE 元数据。Maven 包括 Eclipse 和 IDEA 的插件。为各种 ide 提供插件。

    作为打包应用程序运行

    如果你使用 Spring Boot Maven 或 Gradle 插件创建一个可执行 jar,你可以使用 java-jar 运行你的应用程序,

    java -jar target/myapplication-0.0.1-SNAPSHOT.jar
    

    使用 Maven 插件

    pring Boot Maven 插件包含一个运行目标,可用于快速编译和运行应用程序。应用程序以分解形式运行,就像在 IDE 中那样。下面的例子展示了一个典型的 Maven 命令来运行 Spring Boot 应用程序:

    mvn spring-boot:run
    

    热交换

    Spring-boot-devtools 模块还包括对快速应用程序重启的支持。请参阅本章后面的开发工具部分和热交换 “How-to” 以获得详细信息

    8. 开发工具

    Spring Boot 包括一组额外的工具,可以使应用程序开发体验更加愉快。Spring-boot-devtools 模块可以包含在任何项目中,以提供额外的开发时特性。要包含 devtools 支持,在你的构建中添加模块依赖项:

    maven:

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>
    </dependencies>
    

    属性默认值

    Spring Boot 支持的一些库使用缓存来提高性能。例如,模板引擎缓存已编译的模板,以避免重复解析模板文件。此外,springmvc 还可以在服务静态资源时向响应添加 HTTP 缓存头。

    尽管缓存在生产环境中非常有益,但是在开发过程中,它可能会适得其反,使您无法看到刚刚在应用程序中所做的更改。因此,spring-boot-devtools 默认情况下禁用缓存选项。

    缓存选项通常由 application.properties 文件中的设置来配置。例如,Thymeleaf 提供了 spring.thymeleaf.cache 属性。Spring-boot-devtools 模块不需要手动设置这些属性,而是自动应用合理的开发时配置。

    因为在开发 Spring MVC 和 Spring WebFlux 应用程序时,您需要更多关于 web 请求的信息,开发工具将为 web 日志组启用 DEBUG 日志记录。这将向您提供有关传入请求、处理请求的处理程序、响应结果等信息。如果希望记录所有请求详细信息 (包括潜在的敏感信息) ,可以打开 spring.mvc.log-request-details 或 spring.codec.log-request-details 配置属性。

    自动重启

    使用 spring-boot-devtools 的应用程序在类路径上的文件发生更改时自动重新启动。在 IDE 中工作时,这可能是一个有用的特性,因为它为代码更改提供了一个非常快速的反馈循环。默认情况下,对类路径中指向目录的任何条目进行监视,以查看是否发生了更改。请注意,某些资源 (如静态资产和视图模板) 不需要重新启动应用程序。

    触发重启

    当 DevTools 监视类路径资源时,触发重新启动的唯一方法是更新类路径。更新类路径的方式取决于您使用的 IDE:

    • 在 IntelliJ IDEA 中,构建项目 (Build + → + Build Project) 具有同样的效果。
    • 如果使用构建插件,为 Maven 运行 mvn 编译或为 Gradle 运行 Gradle 构建将触发重启。
    Restart vs Reload

    Spring Boot 提供的重新启动技术使用了两个类加载器。不更改的类 (例如,那些来自第三方 jar 的类) 被装载到基本类加载器中。您正在积极开发的类装载到重新启动的类加载器中。当应用程序重新启动时,重新启动的类加载器将被丢弃,并创建一个新的类加载器。这种方法意味着应用程序重新启动通常比 “冷启动” 快得多,因为基本类加载器已经可用并且已经填充了。

    状态评估中的日志变化

    默认情况下,每次应用程序重新启动时,都会记录一个显示条件评估增量的报告。该报告显示了在您进行更改 (如添加或删除 bean 和设置配置属性) 时对应用程序的自动配置的更改。

    若要禁用报表的日志记录,请设置以下属性:

    spring.devtools.restart.log-condition-evaluation-delta=false
    

    不包括资源

    某些资源在更改时不一定需要触发重新启动。例如,Thymeleaf 模板可以就地编辑。默认情况下,更改 / META-INF/maven、/META-INF/resources、/resources、/static、/public 或 /templates 中的资源不会触发重新启动,但会触发实时重新加载。如果希望自定义这些排除项,可以使用 spring.devtools.restart.exclude 属性。

    其他内容详见

    9.打包生产应用程序

    可执行的jar包可以用于生产部署,因为它们是自包含的,所以也非常适合基于云的部署。

    10.接下来要读什么

    现在您应该了解如何使用 Spring Boot 以及应该遵循的一些最佳实践。您现在可以深入了解特定的 Spring Boot(Spring Boot features ) 特性,或者您可以跳过前面的内容,阅读 Spring Boot 的 “生产就绪” 方面。

  • 相关阅读:
    CentOS6.10下yum安装MySQL5.7
    Nginx1.16+Tomcat8.5实现动静分离和负载均衡
    Nginx1.16下HTML页面POST请求静态JSON数据返回405状态
    Nginx1.16对图片进行防盗链
    使用Psi Probe监控Tomcat8.5
    CentOS6.10部署的Tomcat8.5启动后,浏览器访问不到的解决方法
    CentOS7.5搭建Rsync,实现文件同步
    错误 Unable to connect to a repository at URL 'svn://ip地址' 和 No repository found in 'svn://ip地址'
    CentOS7.5搭建NFS(Network File System)
    《浏览器工作原理与实践》<05>渲染流程(上):HTML、CSS和JavaScript,是如何变成页面的?
  • 原文地址:https://www.cnblogs.com/hnxbp/p/14855531.html
Copyright © 2011-2022 走看看