springboot实战——总结

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

springboot的功能主要包括:

1、起步依赖

2、自动配置

3、命令行界面

4、Actuator

5、spring initialize

 

一、启动引导Spring

@SpringBootApplication开启了Spring的组件扫描和Spring Boot的自动配置功能。实际上,@SpringBootApplication将三个有用的注解组合在了一起。

1、Spring的@Configuration:标明该类使用Spring基于Java的配置。虽然本书不会写太多 配置,但我们会更倾向于使用基于Java而不是XML的配置。

2、Spring的@ComponentScan:启用组件扫描,这样你写的Web控制器类和其他组件才能被自动发现并注册为Spring应用程序上下文里的Bean。SpringMVC 控制器,使用@Controller进行注解,这样组件扫描才能找到它。

3、Spring Boot的@EnableAutoConfiguration:就是这一行配置开启了Spring Boot自动配置的魔力,让你不用再写成篇的配置了。

在Spring Boot的早期版本中,你需要在Application类上同时标上这三个注解,但从Spring Boot 1.2.0开始,有@SpringBootApplication就行了。

4、Application还是一个启动引导类。要运行Spring Boot应用程序有几种方式,其中包含传统的WAR文件部署。但这里的main()方法让你可以在命令行里把该应用程序当作一个可执行

JAR文件来运行。这里向SpringApplication.run()传递了一个 Application类的引用,还有命令行参数,通过这些东西启动应用程序。

5、如果你的应用程序需要Spring Boot自动配置以外的其他Spring配置,一般来说,最好把它写到一个单独的@Configuration标注的类里。(组件扫描会发现并使用这些类的。)

6、@SpringApplicationConfiguration(classes = Application.class)

7、application.properties文件可以很方便地帮你细粒度地调整SpringBoot的自动配置。你完全不用告诉SpringBoot为你加载application.properties,只要它存在就会被加载,Spring和应用程序代码都能获取其中的属性。

二、起步依赖

1、Spring Boot通过提供众多起步依赖降低项目依赖的复杂度。我们并不需要指定版本号,起步依赖本身的版本是由正在使用的SpringBoot的版本来决定的,而起步依赖则会决定它们引入的传递依赖的版本。你要有信心,相信SpringBoot经过了足够的测试,确保引入的全部依赖都能相互兼容。

这是一种解脱,只需指定起步依赖,不用担心自己需要维护哪些库,也不必担心它们的版本。

2、覆盖依赖:Maven总是会用最近的依赖,也就是说,你在项目的构建说明文件里增加的这个依赖,会覆盖传递依赖引入的另一个依赖。

3、排除依赖:在Maven里,可以用<exclusions>元素来排除传递依赖。

三、自动配置

1、含义:简而言之,SpringBoot的自动配置是一个运行时(更准确地说,是应用程序启动时)的过程,考虑了众多因素,才决定Spring配置应该用哪个,不该用哪个。判断classpath里是否有某个组件,有的话则自动添加其配置。每当应用程序启动的时候,Spring Boot的自动配置都要做将近200个这样的决定,涵盖安全、 集成、持久化、Web开发等诸多方面。所有这些自动配置就是为了尽量不让你自己写配置。

2、原理:在向应用程序加入SpringBoot时,有个名为spring-boot-autoconfigure的JAR文件,其中包含了很多配置类。每个配置类都在应用程序的Classpath里,都有机会为应用程序的配置添砖加瓦。所有这些配置如此与众不同,原因在于它们利用了Spring的条件化配置,这是Spring4.0引入的新特性。条件化配置允许配置存在于应用程序中,但在满足某些特定条件之前都忽略这个配置。Spring Boot运用条件化配置的方法是,定义 多个特殊的条件化注解,并将它们用到配置类上。SpringBoot自动配置承担起了配置Spring的重任,把你从样板式的配置中解放了出来。这些配置在没有SpringBoot的Spring应用程序里非常常见。

3、demo:Security起步依赖在应用程序的Classpath里添加了Spring Secuirty(和其他一些东西)。Classpath里有Spring Security后,自动配置就能介入其中创建一个基本的Spring Security配置。

四、自定义配置

1、方法:覆盖自动配置很简单,就当自动配置不存在,直接显式地写一段配置,Spring Boot会发现你的配置,随后降低自动配置的优先级,以你的配置为准。形式 不限,Spring支持的XML和Groovy形式配置都可以以及Java Bean。通过这个自定义的安全配置类,我们让Spring Boot跳过了安全自动配置,转而使用我们的安全配置。
2、原理:通过@ConditionalOnMissingBean注解实现。Spring Boot的设计是加载应用级配置,随后再考虑自动配置类。因此,如果你已经配置了一个JdbcTemplate Bean,那么在执行自动配置时就已经存在一个JdbcOperations类型的Bean了,于是忽略自动配置的JdbcTemplate Bean。
3、通过属性文件微调配置:

(1) 命令行参数
(2) java:comp/env里的JNDI属性
(3) JVM系统属性
(4) 操作系统环境变量
(5) 随机生成的带random.*前缀的属性(在设置其他属性时,可以引用它们,比如${random. long})
(6) 应用程序以外的application.properties或者appliaction.yml文件
(7) 打包在应用程序内的application.properties或者appliaction.yml文件
(8) 通过@PropertySource标注的属性源
(9) 默认属性
这个列表按照优先级排序,也就是说,任何在高优先级属性源里设置的属性都会覆盖低优先级的相同属性。例如,命令行参数会覆盖其他属性源里的属性。

application.properties和application.yml文件能放在以下四个位置。

(1) 外置,在相对于应用程序运行目录的/config子目录里。
(2) 外置,在应用程序运行的目录里。
(3) 内置,在config包内。
(4) 内置,在Classpath根目录。 同样,这个列表按照优先级排序。也就是说,/config子目录里的application.properties会覆盖
应用程序Classpath里的application.properties中的相同属性。

同一优先级位置同时有application.properties和application.yml,那么application.yml里的属性会覆盖application.properties里的属性。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: Spring