当前位置: 首页 > news >正文

哈尔滨网站排名公司谷歌手机版下载安装

哈尔滨网站排名公司,谷歌手机版下载安装,无锡网络营销推广,网站建设相关关键词目录 微服务架构时代 快速入门 入门详解 SpringBoot的自动配置 石器时代:XML配置bean 青铜时代:SpringConfig 铁器时代:AutoConfigurationImportSelector 手写简单Starter SpringApplication启动原理 微服务架构时代 Spring Boot的…

目录

微服务架构时代

快速入门

入门详解

SpringBoot的自动配置

石器时代:XML配置bean

青铜时代:SpringConfig

铁器时代:AutoConfigurationImportSelector

手写简单Starter

SpringApplication启动原理


微服务架构时代

Spring Boot的出现与微服务架构有关,它是Spring Framework的一部分,旨在简化开发独立的、可执行的Java应用程序。Spring Boot解决了传统Java应用程序开发中的繁琐配置问题,使开发人员能够更快速地构建微服务和独立应用程序。

快速入门

如果要快速入门,这个传送门一定很有帮助------->Spring | Quickstart

入门详解

Spring入门详解的部分诸君可以看一下这篇文章:

SpringBoot入门详解-CSDN博客

SpringBoot的自动配置
石器时代:XML配置bean
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd">
​<!-- 声明一个名为 myBean 的 Bean --><bean id="myBean" class="com.elaine.MyBean"><property name="name" value="elaine"/></bean>
​
</beans>
青铜时代:SpringConfig
@Configuration
public class MyConfiguration {
​@Beanpublic MyBean myBean() {MyBean bean = new MyBean();bean.setName("Elaine");return bean;}
}
铁器时代:AutoConfigurationImportSelector

SpringBoot开启自动配置的注解是@EnableAutoConfiguration,但是自动配置的核心功能是通过AutoConfigurationImportSelector实现的。

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import({AutoConfigurationImportSelector.class})
public @interface EnableAutoConfiguration {String ENABLED_OVERRIDE_PROPERTY = "spring.boot.enableautoconfiguration";
​Class<?>[] exclude() default {};
​String[] excludeName() default {};
}
  • AutoConfigurationImportSelector实现ImportSelector接口,收集需要导入的配置类,配合@Import将相应的类导入到Spring容器中。

  • 获取注⼊类的⽅法是 selectImports(),它实际调⽤的是 getAutoConfigurationEntry ,这个⽅法是获取⾃动装配类的关键,主要流程可以分为这么⼏步:

    1. 获取注解的属性,用于后面的排除

    2. 获取所有需要⾃动装配的配置类的路径:这⼀步是最关键的,从 META-INF/spring.factories 获取⾃动 配置类的路径

    3. 去掉重复的配置类和需要排除的重复类,把需要⾃动加载的配置类的路径存储起来

    public String[] selectImports(AnnotationMetadata annotationMetadata) {if (!this.isEnabled(annotationMetadata)) {return NO_IMPORTS;} else {AutoConfigurationEntry autoConfigurationEntry = this.getAutoConfigurationEntry(annotationMetadata);return StringUtils.toStringArray(autoConfigurationEntry.getConfigurations());}}
​protected AutoConfigurationEntry getAutoConfigurationEntry(AnnotationMetadata annotationMetadata) {if (!this.isEnabled(annotationMetadata)) {return EMPTY_ENTRY;} else {// 1.获取注解的属性AnnotationAttributes attributes = this.getAttributes(annotationMetadata);// 2.获取需要⾃动装配的所有配置类,读取META-INF/spring.factories,获取⾃动配置类路径List<String> configurations = this.getCandidateConfigurations(annotationMetadata, attributes);// 3.1.移除重复的配置configurations = this.removeDuplicates(configurations);// 3.2.处理需要排除的配置Set<String> exclusions = this.getExclusions(annotationMetadata, attributes);this.checkExcludedClasses(configurations, exclusions);configurations.removeAll(exclusions);configurations = this.getConfigurationClassFilter().filter(configurations);this.fireAutoConfigurationImportEvents(configurations, exclusions);return new AutoConfigurationEntry(configurations, exclusions);}}
手写简单Starter

在了解自动配置的原理后,就简单地创建一个自定义的spring-boot-starter吧。

文件目录贴一下:

  1. 创建自动配置类和需要定义的bean。

    @Configuration
    public class MyUserAutoConfiguration {@Beanpublic UserManager userManager(){return new UserManager();}
    }
    public class UserManager {public String sayHello() {return "own-starter:hello.";}
    }
  2. src/main/resources/META-INF/ 目录下创建一个 spring.factories 文件

    org.springframework.boot.autoconfigure.EnableAutoConfiguration=\com.lloyd.user.MyUserAutoConfiguration
  3. 创建一个spring-web的SpringBoot项目,添加自定义Starter的依赖。

        <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- 自定义starter的坐标 --><dependency><groupId>com.lloyd</groupId><artifactId>springboot_06_own_starter</artifactId><version>0.0.1-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies>

  4. 创建一个Rest接口进行验证

    @RestController
    public class UserController {@Autowiredprivate UserManager userManager;
    ​@GetMapping("/user")public String sayHello(){return userManager.sayHello();}
    }

    浏览器结果:

SpringApplication启动原理

SpringApplication 这个类主要做了以下四件事情:

  1. 推断应⽤的类型是普通的项⽬还是 Web 项⽬

  2. 查找并加载所有可⽤初始化器 , 设置到 initializers 属性中

  3. 找出所有的应⽤程序监听器,设置到 listeners 属性中

  4. 推断并设置 main ⽅法的定义类,找到运⾏的主类

大致流程如下(图片来自于网络):

http://www.hkea.cn/news/631883/

相关文章:

  • 网站建设开发的目的智能建站网站模板
  • 深圳市做网站的有那些公司沈阳百度推广哪家好
  • 用flash做网站教程个人发布信息免费推广平台
  • 网站主题页网站模板中心
  • 制作网页用什么进行页面布局seo优化方案案例
  • 国外经典平面设计网站做网站的费用
  • 学校营销型网站建设最新长尾关键词挖掘
  • 服务网络是什么意思上海关键词排名优化价格
  • 黑龙江做网站哪家好下载官方正版百度
  • 实时网站制作网站关键字优化
  • 商城网站要多少钱网页制作app
  • 做网站前端难吗个人网站
  • 怎么做亚马逊网站百度小说排行榜2020
  • 山东省建设文化传媒有限公司网站网站排名查询工具有哪些
  • 营销型企业网站有哪些网站建设找哪家好
  • 玉环做企业网站任何东西都能搜出来的软件
  • 无锡专业网站建设搜索优化seo
  • 成品软件源码网站大全百度权重10的网站
  • 深圳手机网站建设多少钱外链代发软件
  • 璧山集团网站建设互联网推广营销
  • 平面设计网址推荐全国seo搜索排名优化公司
  • 青岛公路建设集团网站东莞排名优化团队
  • 北京公司响应式网站建设价位太原网站建设开发
  • 龙岩网络诈骗通缉人员优化推广方案
  • 专做海外代购的网站设计案例网
  • 漳州网站设计东莞网站制作模板
  • 制作应用的软件成都排名seo公司
  • 北京专业企业网站建设俄罗斯搜索引擎入口 yandex
  • wordpress 怎么改中文网站推广优化价格
  • 南山做网站公司怎么选择企业seo优化服务