[转] Spring Boot入门(一) - Spring Boot介绍

原文参见: Spring Boot入门(一) - Spring Boot介绍

Spring Boot是Spring框架用于提供RAD(快速应用程序开发)功能的模块。Spring Boot基于强大、稳定的starter templates构建。

1.什么是starter templates?

Spring Boot starter把启动特定功能所需的所有依赖打包成到一起形成模板。例如,创建Spring WebMVC应用程序的时候,传统的项目里开发人员需要自己配置所有必需的依赖项,这种手工配置方式潜在存在依赖项版本冲突问题,最终有可能会导致很多的运行时异常。

如果使用Spring Boot来创建MVC应用程序就方便很多,只需要导入spring-boot-starter-web这一个依赖项就可以了。



    org.springframework.boot
    spring-boot-starter-parent
    2.1.6.RELEASE
    

 


    org.springframework.boot
    spring-boot-starter-web

引入的spring-boot-starter-web内部会自动引入所需的依赖关系。此处需注意,某些依赖是直接依赖,某些依赖进一步引入了更多starter template,所有这些引入的starter templater传递性地引入更多的jar依赖。

另请注意,不需要在子依赖项中提供版本信息。与spring-boot-starter-parent版本相匹配的子依赖版本会被使用(上述示例中我们使用到的版本是2.0.4.RELEASE)。

spring-boot-starter-web引入的依赖项


    
        org.springframework.boot
        spring-boot-starter
    
    
        org.springframework.boot
        spring-boot-starter-json
    
    
        org.springframework.boot
        spring-boot-starter-tomcat
    
    
        org.hibernate.validator
        hibernate-validator
    
    
        org.springframework
        spring-web
    
    
        org.springframework
        spring-webmvc
    

2. Spring Boot自动配置

使用@EnableAutoConfiguration注释可启用Spring Boot的自动配置。自动配置打开时,Spring Boot自动扫描类路径,从类路径中找到依赖库,尝试为这些依赖库设置最佳配置。

自动配置会尽可能智能化地进行配置,但如果开发人员手动配置的话自动配置会失效。

自动配置需在注册了用户定义的bean之后应用

Spring Boot自动配置的实现逻辑在spring-boot-autoconfigure.jar中。可在此处找到自动配置的package包列表

比如,查看Spring AOP的自动配置,可看到以下操作:

  1. 扫描类路径,检查EnableAspectJAutoProxy,Aspect,Advice和AnnotatedElement这些类是否存在
  2. 如这些类不存在,不会进行Spring AOP的自动配置
  3. 如找到了这些类,使用Java config annotation @EnableAspectJAutoProxy来配置AOP
  4. 这个类将检查spring.aop的值(其值可能是true或false)
  5. 基于此属性的值来设置proxyTargetClass的值

AopAutoConfiguration.java

@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作为内嵌服务器。

pom.xml


    org.springframework.boot
    spring-boot-starter-web
    
        
            org.springframework.boot
            spring-boot-starter-tomcat
        
    

 

    org.springframework.boot
    spring-boot-starter-jetty

4.引导应用程序

要运行应用程序,可配置@SpringBootApplication annotation,其实质是配置了@Configuration,@EnableAutoConfiguration和@ComponentScan的组合。

@SpringBootApplication annotation将扫描配置类、文件并将其加载到spring上下文。下面的示例中,代码从main()方法开始执行,接着加载所有配置文件并进行配置,读取文件夹/resources中的application.properties文件,根据其中的application properties属性引导应用程序

MyApplication.java

@SpringBootApplication
public class MyApplication 
{
    public static void main(String[] args) 
    {
        SpringApplication.run(Application.class, args);
    }
}

application.properties

### 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自动识别、导入所需的依赖项,有助于解决依赖冲突
  • Spring Boot维护所有依赖项的兼容版本信息,最大程度减少运行时类加载器问题
  • “预设默认配置”方法可帮助开发人员透明地对核心部件进行配置,开发人员仅在需要时才覆盖其默认配置而使用所需的配置。默认情况下,不需要额外配置,Spring Boot应用也会运行得很好。这种“预设默认配置”有助于避免样板代码、annotation和XML配置
  • 提供了内嵌的HTTP服务器Tomcat,可以快速进行开发和测试
  • 与eclipse和intelliJ idea等IDE完美集成

6. Spring Boot配置

  1. Spring Boot annotation
  2. Spring Boot中的登录管理
  3. Spring Boot – Spring Boot starter template
  4. Spring Boot –Starter Parent依赖
  5. Spring Boot –获取所有已加载的bean
  6. Spring Boot – @SpringBootApplication和自动配置
  7. Spring Boot –更改Application Root
  8. Spring Boot –配置Jetty服务器
  9. Spring Boot – Tomcat默认端口
  10. Spring Boot – WAR打包示例
  11. Spring Boot –Logging的yml Config
  12. Spring Boot –Logging的属性Config
  13. Spring Boot – SSL [https]
  14. Spring Boot – CommandLineRunner
  15. Spring Boot –Developer Tools Module教程
  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 – Jetty
  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. 启动时禁用banner
  2. Spring Boot – JSP视图
  3. Spring Boot –自定义PropertyEditor
  4. Spring Boot – @EnableScheduling
  5. Spring Boot – JMSTemplate
  6. Spring Boot – RSS / ATOM Feed
  7. Spring Boot从资源文件夹中读取文件
  8. Spring Boot面试问题

你可能感兴趣的:(spring,java)