Spring-boot汇总

Spring-boot汇总

 

 

       Spring-boot的目的是帮助开发者快速搭建Spring框架,帮助开发者快速启动web容器,Spring-boot继承了原有Spring框架的优秀基因,Spring-boot化简了使用Spring的过程。

 

 

核心功能

 

1. 从大量XML配置改成JavaConfig,看起来更清晰,因为分开了一个个类,不需要配置web.xml,javaConfig时,要将信息注入到bean,如:拦截器、过滤器、DispatcherServlet配置

 

2. 内嵌Tomcat(默认)和Jetty,只要有JDK就能启动web服务

 

3. 提供starter简化Maven配置,只要用了spring-boot-starter-web,就能自动加入很多依赖包,如:webmvc、core、tomcat、annotation

 

4. 开发支持热部署,spring loaded

 

5. 只有一个全局的application.properties文件,这里放整个项目的总体配置

 

6. 日志记录默认使用logback,可以根据配置文件激活不同的loging.level,logback可以有自己的xml,用于配置激活,还有log的格式化,还有日志文件大小,压缩打包。

 

 

 

 

Spring-boot 自动配置原理

 

       这里还是要看@SpringBootApplication这个注释,他里面实现是一个组合注释,其核心是由@EnableAutoConfiguration提供,里面有个SpringFactoriesLoader.loadFactoryNames方法,扫描spring.factories中要自动配置哪些类。

 

       所以,在pom中选择spring-boot-starter-web,是挺重要的,加入这个依赖,就相当于加入了很多spring的常用依赖。

 

 

 

 

Spring-boot-starter的工作原理

 

1. Spring-boot启动时,扫描所有依赖的jar包,寻找包含spring.factories文件的jar

2. 根据spring.factories配置,加载自动加载的类

3. 根据 @Conditional注解的条件,进行自动配置并将Bean注入Spring Context

 

 

 

 

自定义Spring-boot-starter注意事项

 

1. springboot默认scan的包名是其main类所在的包名。如果引入的starter包名不一样,需要自己添加scan。

@ComponentScan(basePackages = {"com.xixicat.demo","com.xixicat.sms"})

 

 

2. 对于starter中有feign的,需要额外指定

@EnableFeignClients(basePackages = {"com.xixicat.sms"})

 

 

3. 对于exclude一些autoConfig

@EnableAutoConfiguration(exclude = {MetricFilterAutoConfiguration.class})

 

 

 

 

 

对Spring-boot的认识

 

       spring Boot是一个开源框架,它可用于创建可执行的Spring应用程序,采用了习惯优于配置的方法。此框架的神奇之处在于@EnableAutoConfiguration注解,此注释自动载入应用程序所需的所有Bean——这依赖于Spring Boot在类路径中的查找。

 

 

@Enable*注释

 

@Enable*注释并不是新发明的注释,早在Spring 3框架就引入了这些注释,用这些注释替代XML配置文件。

 

  • @EnableTransactionManagement:它能够声明事务管理
  • @EnableWebMvc:它能启用Spring MVC
  • @EnableScheduling:它可以初始化一个调度器。 

 

 

属性映射

 

下面看MongoProperties类,它是一个Spring Boot属性映射的例子:

 

@ConfigurationProperties(prefix = "spring.data.mongodb")
public class MongoProperties {

    private String host;
    private int port = DBPort.PORT;
    private String uri = "mongodb://localhost/test";
    private String database;

    // ... getters/ setters omitted
}

 

 @ConfigurationProperties注释将POJO关联到指定前缀的每一个属性。例如,spring.data.mongodb.port属性将映射到这个类的端口属性。 

 

强烈建议Spring Boot开发者使用这种方式来删除与配置属性相关的瓶颈代码。

 

 

 

@Conditional注释

 

Spring Boot的强大之处在于使用了Spring 4框架的新特性:@Conditional注释,此注释使得只有在特定条件满足时才启用一些配置。 

 

在Spring Boot的org.springframework.boot.autoconfigure.condition包中说明了使用@Conditional注释能给我们带来什么,下面对这些注释做一个概述:

 

  • @ConditionalOnBean
  • @ConditionalOnClass
  • @ConditionalOnExpression
  • @ConditionalOnMissingBean
  • @ConditionalOnMissingClass
  • @ConditionalOnNotWebApplication
  • @ConditionalOnResource
  • @ConditionalOnWebApplication

 

 

应用程序上下文初始化器

 

       spring.factories还提供了第二种可能性,即定义应用程序的初始化。这使得我们可以在应用程序载入前操纵Spring的应用程序上下文ApplicationContext。 

 

       特别是,可以在上下文创建监听器,使用ConfigurableApplicationContext类的addApplicationListener()方法。 

 

       AutoConfigurationReportLoggingInitializer监听到系统事件时,比如上下文刷新或应用程序启动故障之类的事件,Spring Boot可以执行一些工作。这有助于我们以调试模式启动应用程序时创建自动配置的报告。 

 

      要以调试模式启动应用程序,可以使用-Ddebug标识,或者在application.properties文件这添加属性debug= true。

 

 

 

 

学习

http://tengj.top/2017/04/24/springboot0/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用: "Failed to resolve imported Maven boms: Could not find org.springframework.cloud:spring-cloud-dependencies:2022.0.0-RC2." 这个错误提示是由于无法解析导入的Maven依赖所致。它说明在所搜索的位置中找不到org.springframework.cloud:spring-cloud-dependencies:2022.0.0-RC2的POM文件。你可以尝试通过指定其他可用的仓库来解决这个问题。 引用: 在你新建的spring模块的build.gradle中,添加compile(project(":spring-instrument")),这样可以解决报错"没有target相关的问题"。 引用: 另外,在build.gradle中,你还可以添加如下配置来解决问题:compile(project(":spring-context"))和compile(project(":spring-instrument"))。 对于你的问题 "Could not resolve org.springframework.boot:spring-boot-gradle-plugin:3.1.3",根据提供的信息,你遇到了无法解析org.springframework.boot:spring-boot-gradle-plugin:3.1.3的问题。这可能是因为该版本的插件在你所使用的仓库中不可用。 为了解决这个问题,你可以尝试以下几种方法: 1. 首先,确认你的项目的Gradle配置文件中是否正确指定了仓库地址,并且该仓库中包含了所需的插件。你可以查看你的build.gradle文件,并确保仓库地址正确。 2. 如果确认仓库地址正确无误,你可以尝试更新Gradle版本或者切换到其他可用版本的插件,以查看是否有可用的spring-boot-gradle-plugin插件。 3. 如果以上方法都没有解决问题,你可以尝试手动下载并安装所需的插件。你可以在Maven仓库或其他可靠的资源库中搜索并下载org.springframework.boot:spring-boot-gradle-plugin:3.1.3,然后使用本地路径指定插件位置。 希望这些方法能够帮助你解决问题。如果问题仍然存在,请提供更多详细的错误信息或上下文,以便我们能够更好地帮助你解决。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Gradle编译失败问题汇总](https://blog.csdn.net/u010363836/article/details/128351899)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Spring源码搭建教程](https://blog.csdn.net/shark_chili3007/article/details/111414731)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值