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

潍坊做网站联系方式海南百度推广代理商

潍坊做网站联系方式,海南百度推广代理商,提高手机性能的黑科技软件,竹木工艺品网站建设20250428 自动配置EnableAutoConfiguation源码总结springboot项目中,比如redis,当把redis引入到pom.xml中,项目中就会有对应的字节码文件,然后redis就可以自动装配了吗1. **引入依赖**2. **自动配置机制**自动配置的关键点&#x…

20250428

  • 自动配置
    • @EnableAutoConfiguation源码
    • 总结
    • springboot项目中,比如redis,当把redis引入到pom.xml中,项目中就会有对应的字节码文件,然后redis就可以自动装配了吗
      • 1. **引入依赖**
      • 2. **自动配置机制**
        • 自动配置的关键点:
        • 示例:`RedisAutoConfiguration`的部分逻辑
      • 3. **配置文件的作用**
      • 4. **自动装配的流程总结**
      • 5. **手动配置的情况**
      • 总结

自动配置

video

在这里插入图片描述
SpringBoot的项目启动类上有一个注解@SpringBootApplication,这个注解又包含其他3个注解:@SpringBootConfiguration、@EnableAutoConfiguation 和 @ComponentScan,@EnableAutoConfiguation就是SpringBoot实现自动配置的核心注解

@EnableAutoConfiguation源码

在这里插入图片描述
@EnableAutoConfiguation源码里包含一个Import注解,这个注解导入了一个自动配置选择器(AutoConfigurationImportSelector),这个自动配置选择器会加载Spring.factories文件,把这个文件里的内容加载到Spring容器中

Spring.factories文件中的类也不会全部都加载,只有满足某些条件时,比如有对应的字节码并且容器中没有时,才会被加载
在这里插入图片描述

总结

在这里插入图片描述
以下是AI的回答

springboot项目中,比如redis,当把redis引入到pom.xml中,项目中就会有对应的字节码文件,然后redis就可以自动装配了吗

在Spring Boot项目中,当你将Redis相关的依赖(如spring-boot-starter-data-redis)引入到pom.xml文件中时,Redis的功能并不会直接“自动装配”完成。它需要结合Spring Boot的自动配置机制和你提供的配置信息才能生效。下面是详细的原理和流程:


1. 引入依赖

当你在pom.xml中添加了Redis的依赖,例如:

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

这会引入以下关键内容:

  • Redis客户端库(如Lettuce或Jedis,默认是Lettuce)。
  • Spring Data Redis的核心功能。
  • Spring Boot的自动配置类。

这些依赖会被Maven下载并加载到项目的classpath中,Spring Boot会在启动时扫描这些类路径中的组件。


“依赖会被Maven下载并加载到项目的classpath中”,这句话中的依赖是字节码文件吗
是的,“依赖会被Maven下载并加载到项目的classpath中”这句话中的“依赖”指的是包括字节码文件(即.class文件)在内的库或模块。当你在项目中通过pom.xml声明了一个依赖,Maven会根据这个配置从远程仓库下载对应的库(通常是一个JAR文件)。这个JAR文件包含了编译好的字节码文件、可能的资源文件以及其他元数据。

具体来说,当您向pom.xml添加一个依赖项并运行Maven构建命令(如mvn clean install)时,Maven会执行以下操作:

  1. 解析依赖:Maven首先会解析pom.xml文件,并确定所有直接和传递依赖。
  2. 下载依赖:然后,它会从配置的远程仓库(如Maven中央仓库)下载这些依赖的JAR包到本地仓库(默认位于用户主目录下的.m2/repository文件夹)。
  3. 加入到Classpath:在构建或运行项目时,Maven确保这些JAR文件被包含在项目的classpath中,使得您的代码可以访问它们包含的类和资源。

因此,当说依赖被加载到项目的classpath中时,实际上是指这些JAR文件(包括其中的字节码文件和其他资源)已经被放置在一个位置,可以从那里加载到JVM中供应用程序使用。这样,你的项目就能够利用这些外部库提供的功能了。

2. 自动配置机制

Spring Boot的自动配置是通过spring.factories文件实现的。具体来说,spring-boot-starter-data-redis模块中包含了一个自动配置类(如RedisAutoConfiguration),这个类会根据条件判断是否需要创建Redis相关的Bean。

自动配置的关键点:
  • @EnableAutoConfiguration:这个注解通常由@SpringBootApplication间接启用,它会触发Spring Boot的自动配置机制。
  • @Conditional注解:Spring Boot使用了一系列条件注解(如@ConditionalOnClass, @ConditionalOnMissingBean等)来判断是否需要创建某个Bean。例如:
    • 如果classpath中存在RedisConnectionFactory类,则会尝试创建Redis连接工厂。
    • 如果没有用户自定义的RedisTemplateStringRedisTemplate Bean,则会自动创建默认的实例。
示例:RedisAutoConfiguration的部分逻辑
@Configuration(proxyBeanMethods = false)
@ConditionalOnClass(RedisOperations.class)
@EnableConfigurationProperties(RedisProperties.class)
public class RedisAutoConfiguration {@Bean@ConditionalOnMissingBean(name = "redisTemplate")public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {RedisTemplate<Object, Object> template = new RedisTemplate<>();template.setConnectionFactory(redisConnectionFactory);return template;}@Bean@ConditionalOnMissingBeanpublic StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory) {StringRedisTemplate template = new StringRedisTemplate();template.setConnectionFactory(redisConnectionFactory);return template;}
}

从上面代码可以看出:

  • 如果没有用户自定义的RedisTemplateStringRedisTemplate,Spring Boot会提供默认的实现。
  • 这些Bean的创建依赖于RedisConnectionFactory,而RedisConnectionFactory又依赖于配置文件中的Redis连接信息。

3. 配置文件的作用

Spring Boot会读取application.propertiesapplication.yml中的配置信息,并将其绑定到相应的配置类(如RedisProperties)。例如:

spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=
spring.redis.database=0

这些配置会被用来初始化RedisConnectionFactory,从而建立与Redis服务器的连接。


4. 自动装配的流程总结

以下是Redis自动装配的完整流程:

  1. 引入依赖:在pom.xml中添加spring-boot-starter-data-redis依赖。
  2. 扫描classpath:Spring Boot启动时会扫描classpath中的组件。
  3. 加载自动配置类RedisAutoConfiguration被加载,并根据条件判断是否需要创建相关Bean。
  4. 读取配置信息:从application.propertiesapplication.yml中读取Redis连接信息。
  5. 创建Bean:根据配置信息创建RedisConnectionFactoryRedisTemplate等核心Bean。
  6. 注入到应用:开发者可以直接通过@Autowired注入RedisTemplateStringRedisTemplate,开始操作Redis。

5. 手动配置的情况

虽然Spring Boot提供了自动配置,但有时我们可能需要自定义配置。例如:

  • 自定义RedisTemplate以支持特定的序列化方式。
  • 使用其他Redis客户端(如Jedis代替Lettuce)。

在这种情况下,你可以通过显式地定义自己的Bean来覆盖默认的自动配置。例如:

@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {RedisTemplate<String, Object> template = new RedisTemplate<>();template.setConnectionFactory(redisConnectionFactory);template.setKeySerializer(new StringRedisSerializer());template.setValueSerializer(new GenericJackson2JsonRedisSerializer());return template;
}

总结

当Redis依赖被引入到pom.xml后,Redis并不会自动装配完成,而是需要Spring Boot的自动配置机制配合你的配置信息。Spring Boot通过RedisAutoConfiguration类和条件注解实现了Redis相关Bean的自动创建,同时允许你通过配置文件或自定义Bean进行灵活调整。这种设计既简化了开发,又保留了灵活性。

http://www.dtcms.com/wzjs/266568.html

相关文章:

  • 中国能源建设集团有限公司电子采购平台南昌搜索引擎优化
  • 网站改版建设主要百度sem推广具体做什么
  • 咸阳做网站的公司有哪些舆情网站
  • 数学网站怎么做官网建设
  • 可信网站认证必需做吧站长之家ppt素材
  • 网站开发时如何兼容阿里巴巴推广
  • 江津区网站建设百度seo策略
  • 昆明哪有做网站的搜索引擎推广的优势
  • php做网站视频360推广助手
  • 造纸公司网站建设seo01网站
  • 网站推广软件预期效果最近新闻热点事件
  • 佛山品牌推广大连网络营销seo
  • 杭州做网站哪个公司好设计师网站
  • 网新科技做网站怎么样seo教程百度网盘
  • 做亚马逊有看数据的网站吗上海搜索引擎优化1
  • 六盘水合肥电商网站建设大连中小企业网络营销
  • 做微网站的第三方登录网站seo推广员招聘
  • 游戏logo设计网站百度地图推广怎么做的
  • 做海购的网站千锋教育可靠吗
  • 2在线做网站武汉网站设计
  • 天地做网站国家高新技术企业认定
  • 漳州做网站制作域名注册查询入口
  • 杭州网站建设 seo乐陵seo外包
  • 商城网站开发解决方案怎么做网上销售
  • 可以做富集分析的网站网推公司干什么的
  • 搭设企业网站教程游戏代理加盟
  • 计算机文化基础网页制作题视频宁波seo哪家好
  • 对酒店网站建设的意见自媒体论坛交流推荐
  • 建设项目公示网站页面seo是什么意思
  • 为什么网站要域名实体店铺引流推广方法