Spring Boot教程

Spring Boot是一个Spring框架模块,它向Spring框架提供RAD(快速应用程序开发)功能。它高度依赖 Starter模板 功能,该功能非常强大且可以完美运行。

Spring Boot 模块
Spring Boot 模块

1.什么是 Starter模板 ?

Spring BootStarter是模板,其中包含启动特定功能所需的所有相关传递依赖项集合。例如,如果要创建Spring WebMVC应用程序,则在传统设置中,您自己会包含所有必需的依赖项。它留下了版本冲突的机会,最终导致更多的运行时异常

使用Spring Boot,要创建MVC应用程序,只需导入spring-boot-starter-web依赖项即可。

<!-- Parent pom is mandatory to control versions of child dependencies -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.6.RELEASE</version>
    <relativePath />
</parent>

<!-- Spring web brings all required dependencies to build web application。 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

spring-boot-starter-web依赖关系之上,内部导入所有给定的依赖关系并将其添加到您的项目中。请注意,某些依赖关系是直接的,某些依赖关系进一步引用了其他 Starter模板 ,这些模板可过渡地下载更多的依赖关系。

另外,请注意,您不需要在子依赖项中提供版本信息。所有版本都相对于父级Starter的版本进行了解析(在我们的示例中为2.0.4.RELEASE)。

<dependencies>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-json</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-tomcat</artifactId>
	</dependency>
	<dependency>
		<groupId>org.hibernate.validator</groupId>
		<artifactId>hibernate-validator</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-web</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-webmvc</artifactId>
	</dependency>
</dependencies>

阅读更多:Spring Boot Starter模板 列表

2。 Spring Boot自动配置

通过@EnableAutoConfiguration注解启用自动配置。Spring Boot自动配置扫描类路径,在类路径中找到库,然后尝试为它们猜测最佳配置,最后配置所有此类bean。

自动配置会尝试尽可能智能化,并且在您定义更多自己的配置时会自动退出。

自动配置始终在注册用户定义的bean之后应用。

Spring boot自动配置逻辑在spring-boot-autoconfigure.jar中实现。Yoy可以在此处验证软件包列表

Spring Boot自动配置软件包
Spring Boot自动配置软件包

例如,查看Spring AOP的自动配置。它执行以下操作

  1. 扫描类路径,看看EnableAspectJAutoProxyAspectAdviceAnnotatedElement类都存在。
  2. 如果不存在类,则不会为Spring AOP进行自动配置。
  3. 如果找到类,则使用Java config注解配置AOP @EnableAspectJAutoProxy
  4. 它检查spring.aop可以为true或的属性false
  5. 基于属性的值,proxyTargetClass设置属性。
@Configuration
@ConditionalOnClass({ EnableAspectJAutoProxy.class, Aspect.class, Advice.class,
		AnnotatedElement.class })
@ConditionalOnProperty(prefix = "spring.aop", name = "auto", havingValue = "true", matchIfMissing = true)
public class AopAutoConfiguration 
{

	@Configuration
	@EnableAspectJAutoProxy(proxyTargetClass = false)
	@ConditionalOnProperty(prefix = "spring.aop", name = "proxy-target-class", havingValue = "false", matchIfMissing = false)
	public static class JdkDynamicAutoProxyConfiguration {

	}

	@Configuration
	@EnableAspectJAutoProxy(proxyTargetClass = true)
	@ConditionalOnProperty(prefix = "spring.aop", name = "proxy-target-class", havingValue = "true", matchIfMissing = true)
	public static class CglibAutoProxyConfiguration {

	}

}

3.嵌入式服务器

Spring Boot应用程序始终将tomcat作为嵌入式服务器依赖项。这意味着您可以从命令提示符运行Spring Boot应用程序,而无需使用复杂的服务器基础结构。

您可以根据需要排除tomcat,并包括任何其他嵌入式服务器。或者,您可以完全排除服务器环境。全部基于配置。

例如,以下配置排除了tomcat,包括了jetty作为嵌入式服务器。

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

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

4.引导应用程序

运行该应用程序,我们需要使用@SpringBootApplication注解。在幕后,这相当于@Configuration@EnableAutoConfiguration@ComponentScan在一起。

它可以扫描配置类,文件并将其加载到spring上下文中。在下面的示例中,执行从main()方法开始。它开始加载所有配置文件,对其进行配置,并根据文件夹中application.properties文件中的应用程序属性引导应用程序/resources

@SpringBootApplication
public class MyApplication 
{
    public static void main(String[] args) 
    {
        SpringApplication.run(Application.class, args);
    }
}
### Server port #########
server.port=8080
 
### Context root ########
server.contextPath=/home

要执行该应用程序,可以从IDE诸如eclipse运行main()方法,或者可以构建jar文件并从命令提示符下执行。

$ java -jar spring-boot-demo.jar

5。 Spring Boot的优点

  • Spring Boot有助于解决依赖冲突。它标识所需的依赖项并为您导入它们。
  • 它具有所有依赖项的兼容版本信息。它最大程度地减少了运行时类加载器问题。
  • 它的“预设默认配置”方法可帮助您配置幕后最重要的部分。仅在需要时才覆盖它们。否则,一切都会完美地进行。它有助于避免样板代码,注解和XML配置。
  • 它提供了嵌入式HTTP服务器Tomcat,因此您可以快速进行开发和测试。
  • 它与eclipse和intelliJ idea等IDE具有出色的集成。

6。 Spring Boot配置

  1. Spring Boot注解
  2. Spring Boot登录指南
  3. Spring Boot – Spring Boot Starter模板
  4. Spring Boot –入门级家长依赖
  5. Spring Boot –获取所有已加载的bean
  6. Spring Boot – @SpringBootApplication和自动配置
  7. Spring Boot –更改应用程序根目录
  8. Spring Boot –配置Jetty服务器
  9. Spring Boot – Tomcat默认端口
  10. Spring Boot – WAR包装示例
  11. Spring Boot –记录yml Config
  12. Spring Boot –日志记录属性Config
  13. Spring Boot– SSL [https]
  14. Spring Boot– CommandLineRunner
  15. Spring Boot –开发人员工具模块教程
  16. Spring Boot –在@Bean和@Compoment中注入应用程序参数
  17. Spring Boot嵌入式服务器日志
  18. Spring Boot嵌入式tomcat配置

7.开发REST API和SOAP Web服务

  1. Spring Boot – REST API
  2. Spring Boot – Jersey
  3. Spring Boot – Spring HATEOAS示例
  4. Spring Boot –请求验证REST API
  5. Spring Boot –基于角色的安全性
  6. Spring Boot – SOAP Web服务
  7. Spring Boot – SOAP客户端
  8. Spring Boot 2和ehcache 3示例

8.其他有用的话题

  1. 启动时禁用横幅
  2. Spring Boot – JSP视图
  3. Spring Boot–自定义PropertyEditor
  4. Spring Boot– @EnableScheduling
  5. Spring Boot– JMSTemplate
  6. Spring Boot – RSS / ATOM提要
  7. Spring Boot从资源文件夹中读取文件
  8. Spring Boot面试问题

saigon has written 1445 articles