SpringBoot - @Configuration注解使用详解

SpringBoot常用注解 | @Configuration 前言 SpringBoot 中简化了大量的配置文件,取而代之的是利用注解完成之前通过配置文件完成的工作。操作上便捷了很多,但是也隐藏了一些内部实现细节,在使用的时候不能盲目,应该了解在以往 Spring 项目中是如何配置的,这样可以加深我们对 SpringBoot 的理解 概述 类上加这个注解就说明这个类是一个配置类 Spring 项目中添加配置类 在传统的 Spring 项目中,我们想要引入一个配置类,通常是定义一个 bean.xml ,然后通过 bean 注解给容器中添加组件... 阅读详情

写在前面

Spring Boot推荐使用JAVA配置来完全代替XML 配置,JAVA配置就是通过 @Configuration和 @Bean两个注解实现的,也就是说:@Configuration+@Bean可以达到在Spring中使用XML配置文件的作用,@Configuration可理解为使用Spring框架时的XML文件中的<beans/>,@Bean可理解为使用Spring框架时XML里面的<bean/>标签。

使用目的

@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigWebApplicationContext或AnnotationConfigApplicationContext类进行扫描,并构建Bean定义,初始化Spring容器。

使用约束

  • @Configuration注解作用在类、接口(包含注解)上
  • @Configuration用于定义配置类,可替换XML配置文件,相当于XML形式的Spring配置
  • @Configuration注解类中可以声明一个或多个 @Bean 注解的方法
  • @Configuration注解作用的类不能是 final 类型
  • @Configuration不可以是匿名类;
  • 嵌套的 @Configuration类必须是 static 的

代码示例

package com.hadoopx.mallx.data.config.redis;
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisPassword;
import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
import org.springframework.data.redis.connection.lettuce.LettuceClientConfiguration;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.connection.lettuce.LettucePoolingClientConfiguration;
import org.springframework.data.redis.core.StringRedisTemplate;
import java.time.Duration;

@Configuration
public class RedisAutoConfig {

    @Bean
    public LettuceConnectionFactory defaultLettuceConnectionFactory(RedisStandaloneConfiguration defaultRedisConfig, GenericObjectPoolConfig defaultPoolConfig) {
        LettuceClientConfiguration clientConfig =
                LettucePoolingClientConfiguration.builder().commandTimeout(Duration.ofMillis(5000))
                        .poolConfig(defaultPoolConfig).build();
        return new LettuceConnectionFactory(defaultRedisConfig, clientConfig);
    }

    @Bean
    public StringRedisTemplate stringRedisTemplate(LettuceConnectionFactory defaultLettuceConnectionFactory) {
        StringRedisTemplate stringRedisTemplate = new StringRedisTemplate();
        stringRedisTemplate.setConnectionFactory(defaultLettuceConnectionFactory);
        return stringRedisTemplate;
    }

    @Configuration
    public static class DefaultRedisConfig {
        /**
         * 获取配置文件中spring.redis.host的值, 如果没有则使用默认值: 127.0.0.1
         * 使用如下:
         * @Value("${YML-KEY:DEFAULT-VALUE}")
         */
        @Value("${spring.redis.host:127.0.0.1}")
        private String host;
        @Value("${spring.redis.port:6379}")
        private Integer port;
        @Value("${spring.redis.password:}")
        private String password;
        @Value("${spring.redis.database:0}")
        private Integer database;

        @Value("${spring.redis.lettuce.pool.max-active:8}")
        private Integer maxActive;
        @Value("${spring.redis.lettuce.pool.max-idle:8}")
        private Integer maxIdle;
        @Value("${spring.redis.lettuce.pool.max-wait:-1}")
        private Long maxWait;
        @Value("${spring.redis.lettuce.pool.min-idle:0}")
        private Integer minIdle;

        @Bean
        public GenericObjectPoolConfig defaultPoolConfig() {
            GenericObjectPoolConfig config = new GenericObjectPoolConfig();
            config.setMaxTotal(maxActive);
            config.setMaxIdle(maxIdle);
            config.setMinIdle(minIdle);
            config.setMaxWaitMillis(maxWait);
            return config;
        }

        @Bean
        public RedisStandaloneConfiguration defaultRedisConfig() {
            RedisStandaloneConfiguration config = new RedisStandaloneConfiguration();
            config.setHostName(host);
            config.setPassword(RedisPassword.of(password));
            config.setPort(port);
            config.setDatabase(database);
            return config;
        }
    }
}
7-1 链式基数排序 (20 分) 7-1 链式基数排序 (20 分) 实现链式基数排序,待排序关键字n满足1≤n≤1000,最大关键字数位≤5。 输入样例: 第一行输入待排序个数n(1≤n≤1000),再输入n个数(n的数位≤5)。 10 278 109 63 930 589 184 505 269 8 83 输出样例: 输出每趟分配-收集后链表中的关键字,趟数为序列中最大值的数位(如样例中930的数位为3),每行结尾有空格。 930 63 83 184 505 278 8 109 589 269 505 8 109 930 63 26 阅读详情

相关推荐

I2C总线原理及总线信号的实现

I2C总线是一种多主机总线,连接IIC总线上的器件分为主机和从机,主机有权发起和结束一次通信,而从机只能被主机呼叫;当总线上有多个主机同时启用总线时,I2C也具备冲突检测和仲裁的功能来防止错误产生;每个连接到IIC总线上的器件都有一个唯一的地址(7bit),且每个器件都可以作为主机也可以作为从机(同一时刻只能有一个主机),总线上的器件增加和删除不影响其他器件正常工作;I2C总线在通信时总线上发送数据的器件为发送器,接收数据的器件为接收器;主要用于近距离(抗干扰能力稍弱),低速的芯片之间的通信(传输视频,带宽

YLG_lin的博客 3944

【SpringBoot】Config配置可能用到的注解

> JavaConfig,是在 Spring 3.0 开始从一个独立的项目并入到 Spring 中的。JavaConfig 可以看成一个用于完成 Bean 装配的 Spring 配置文件,即 Spring 容器,只不过该容器不是 XML文件,而是由程序员使用 Java 自己编写的 Java 类。 @Configuration注解的使用 从Spring3.0,@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法 @Compon

yuxiangdeming的博客 2926

<硬件设计> 阻抗设计(二) 使用Si9000计算阻抗

阻抗设计(二) 使用Si9000计算阻抗

杰克拉力船长个人博客 1万+

@Configuration注解使用

1、前言 @Configuration是Spring的注解,不是SpringBoot的!早在Spring框架的时候就有使用,但是由于那个时候配置文件还是比较流行,因此@Configuration注解并没有太盛行,甚至很多人就认为它是SpringBoot的注解。 @Configuration注解的作用:声明一个类为配置类,用于取代bean.xml配置文件注册bean对象。 @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @

weixin_43808717的博客 4万+

多机器人协同:水下机器人集群的分布式控制与ROS仿真实践

本文探讨了多自主水下机器人(AUV)集群的分布式控制方法,重点分析了欠驱动6自由度AUV模型的反馈线性化技术。通过ROS/Gazebo仿真平台,详细介绍了系统架构设计、通信延迟补偿策略及环境扰动应对方案,为水下协同作业提供实用参考。

jupi8的博客 688

osgearth2.10 demo功能介绍

osgearth-2.10 demo: 说明: 1、运行环境win7 x64 旗舰版,CPU i5-6400 8核,8G内存; 2、括号内是对应demo的测试参数(.earth); 3、配置OSG_FILE_PATH; 4、参数命令行可以查看各个demo需要的输入参数; 5、前缀说明:gui界面程序、cmd控制台程序、non功能未知; 6、程序后括号里的non表示不需要通过命令行输入参数; 示例: 1、gui:osgearth_3pv(simple.earth):相机与地球的投影关系,Range表示相机

rach09的专栏 2424

@Configuration注解使用详解【记录】

@Configuration类在Spring中既充当配置信息的角色,又作为容器中的一个Bean存在,其作用是提供一个灵活且强大的方式来定义和组装Spring Bean,使得Spring的配置更加灵活和方便。

单枪匹码 7560

5G R18标准:AI/ML如何重塑空口优化与网络架构

人工智能与机器学习正逐步成为通信网络优化的核心技术。其核心原理在于通过数据驱动模型,从海量网络数据中学习信道变化、用户行为等统计规律,替代传统的基于固定规则的优化方法。这一技术范式能显著提升网络性能与效率,尤其在空口资源管理、干扰协调和能耗控制等场景中价值突出。在5G Advanced(R18)标准化框架下,AI/ML被系统性地引入空口设计,聚焦于信道状态信息反馈增强、波束管理与预测等关键用例。通过定义网络侧AI、终端侧AI及联合学习的标准化接口与流程,R18旨在实现跨厂商设备的智能协同,推动无线网络向自适

weixin_35671843的博客 244

Spring/SpringBoot系列之@Configuration详解【十九】

现在大部分的Spring项目都采用了基于注解的配置,使用@Configuration 标记类作为配置类 替换 xml配置文件。一行简单的注解就可以解决很多事情。但是,其实每一个注解背后都有很多值得学习和思考的内容。比如: @Configuration有什么用? @Configuration和XML有什么区别?哪种好? @Autowired 、 @Inject、@Resource 之间有什么区别? @Value、@PropertySource 和 @Configuration? Spring如何处理带@Co

fei1234456的博客 5万+

CVPR 2023 中的半监督学习: FixMatch 的升级版 UniMatch

我们首先回顾下发表在 NeurIPS 2020 上的 FixMatch: Simplifying Semi-Supervised Learning with Consistency and Confidence,FixMatch 是一种更轻量的半监督分类方法。如下图所示,FixMatch 首先使用模型(带标签数据训练后的)对弱增强的未标记图像进行预测,生成伪标签。对于给定的图像,只有在模型产生高置信度的预测时,伪标签才会被保留。然后,在输入同一图像的强增强版本时,训练模型预测伪标签。

NJU phd 在读。 2635

2025年09月中国电子学会青少年软件编程(Python)等级考试试卷(三级)答案 + 解析

2025年09月中国电子学会青少年软件编程(Python)等级考试试卷(三级)答案 + 解析

伶俐角少儿编程 516

@Configuration使用场景

@Configuration使用场景

及时当勉励,岁月不待人 2607

【学习系列】SAP RAP 22:Excel文件上传和读取(非扩展&扩展方式)

本文介绍了在RAP中实现Excel文件上传处理的三种方法:1) 使用@Semantics.largeObject注解实现简单上传下载,但限制在ObjectPage页面使用;2) 通过自定义action弹窗实现上传功能,但存在无法自动刷新列表等限制;3) 结合CustomUIExtension实现更灵活的完整功能,但需要UI5开发技能。文章详细说明了每种方法的实现步骤,包括数据库表设计、注解配置、前端界面开发和后端处理逻辑,并比较了各自的优缺点。最后通过一个处理不同币种数据的示例,展示了如何实现业务处理逻辑。

DeveloperMrMeng的博客 626

springboot @Configuration 注解详解

对于configuration注解的一些理解。

nruuu的博客 2558

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

一文掌握SpringBoot注解之@Configuration知识文集(1)

Configuration注解是Spring框架中的一个注解,用于标记一个Java类作为配置类,告诉Spring容器该类包含了Bean的定义和其他配置信息。将Java类标记为配置类,告知Spring容器该类包含了Bean的定义和其他配置信息。配置类可以包含@Bean注解的方法,这些方法提供了创建Bean的逻辑。Spring容器会调用这些方法来创建相应的Bean实例。

m0_50308467的博客 1816

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Spring Boot 中的 @Configuration 注解

在 Spring Boot 中,我们经常使用注解来简化代码,提高效率。其中,@Configuration 注解是一个非常重要的注解,它用于声明一个类作为 Spring 应用程序上下文的配置类。在本文中,我们将介绍 @Configuration 注解的作用、使用方法,以及如何在 Spring Boot 应用程序中使用它。

程序猿徐师兄的博客 5013

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

SpringBoot中的@Configuration、@MapperScan注解

注解功能:标记一个类为配置类,包含@Bean方法。使用方式:在类上添加注解,类中使用@Bean注解的方法定义 Bean。使用场景:集中管理多个 Bean,替代 XML 配置文件。底层原理:类被编译成代理类,@Bean方法被调用,返回的实例注册到 Spring 容器中。注解功能:扫描指定包下的所有 Mapper 接口,并注册为 Spring 管理的 Bean。使用方式:在配置类上添加注解,指定需要扫描的包路径。使用场景:简化 MyBatis 框架中 Mapper 接口的管理,避免手动添加@Mapper注解。

楠寻寻的博客 1622

SpringBoot配置类中的@Configuration注解和@bean注解

1.@Configuration注解 用法:作用在类上面 作用:告诉SpringBoot这是一个配置类,相当于Spring中的xml配置文件。 @Configuration //告诉SpringBoot这是一个配置类 == 配置文件 public class Config { } 2.@bean注解 用法:配置类里面使用@Bean标注在方法上给IoC容器注册组件,默认也是单实例的 作用:给容器中添加组件,相当于Spring中xml配置文件中的<bean>标签。 理解:以方法名作为组件的id。返

MrYushiwen的博客 7884

【Springboot】@Configuration 注解的使用

声明配置类:当你在类级别上使用@Configuration注解时,你告诉Spring Boot这个类包含了一些配置信息和Bean的定义。定义Bean:在配置类中,你可以使用@Bean注解在一个方法上,表示该方法会返回一个对象,这个对象应该被注册为Spring容器中的Bean。这意味着当你需要这个Bean的时候,Spring会调用这个方法来获取它。替代XML配置:在传统的Spring应用中,通常使用XML文件来配置Bean和应用程序上下文。

锥栗的博客 2850

SpringBoot2版本的@Configuration注解的源码详解

​​​这周开始对SpringBoot2源码的学习呢,突发奇想,要记录一下自己的学习经历,下面是对@Configuration注解的说明 @Configuration注解说明 @Configuration作用:表明一个类中声明一个和多个@Bean标记的方法,并且这些方法被Spring容器管理用于生成Bean定义以及在运行时这些Bean的服务请求。 简单来说,就是将@Configuration下的类和@Bean下的方法当作组件,将这些组件放入Spring容...

身体,灵魂,技术。总要有一个在前进 2300

Spring Boot注解@Configuration

Spring Boot注解 Spring Boot注解 @Configuration 代替过去的老的XML配置, @Configuration public class Conf { @Bean public Car car() { Car car = new Car(); car.setWheel(wheel()); return car; } @Bean("wheel1") public Wheel wheel

wbx_2011的博客 198

一文掌握SpringBoot注解之@Configuration知识文集(2)

配置属性(Configuration Properties)是用于定义应用程序的配置选项的一种方式。它们可以用于管理应用程序的各种设置,如数据库连接信息、API密钥、端口号等。通过使用@ConfigurationProperties注解,可以将配置文件中的属性值自动绑定到配置类中的字段上,从而方便地引用这些配置属性。

m0_50308467的博客 1253

springboot复制bean_Springboot @Configuration @bean注解作用解析

这篇文章主要介绍了springboot @Configuration @bean注解作用解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下@Configuration注解可以达到在Spring中使用xml配置文件的作用@Bean就等同于xml配置文件中的在spring项目中我们集成第三方的框架如shiro会在spring.xml配置文件中进行配置...

weixin_39677106的博客 157

SpringBoot中@Configuration和@Component注解

使用 @Configuration和@Component都是使用于配置类上以代替XML文件中<beans>标签; @Configuration是@Component的扩展,同样类似的扩展还有@Repository、@Service、@Controller、@RestController等等,而后面四个都是用于传统三层架构中使用的注解; 在被@Configuration注解的类中所有带有@Bean注解的方法都会被CGLib动态代理,而后每次调用这些方法时返回的都是第一次返回的实例; 被@Conf

plpldog的博客 3958

SpringBoot的注解@Configuration

文章目录@Configuration 或 @Configuration(proxyBeanMethods = true)@Configuration(proxyBeanMethods = false) 先看下看看注解@Configuration的定义。 package org.springframework.context.annotation; import java.lang.annotation.Documented; import java.lang.annotation.ElementType

richest_qi的博客 828

springboot @Configuration注解的作用

在配置类中,你可以将不同的 Bean 之间的依赖关系进行声明。注解用于标记配置类,允许你在其中定义和管理 Spring Bean,以及声明 Bean 之间的依赖关系,从而构建应用程序的应用上下文。这些 Bean 将会被 Spring 容器管理,你可以在应用程序的其他地方使用它们。这个 Bean 将会被 Spring 容器管理,可以在其他地方注入和使用。配置类中通常包含了用于配置 Spring Bean 的方法。:在大型应用程序中,可能需要对多个 Bean 进行配置,定义多个依赖关系。

servepeople的博客 1219
上一篇: 在SpringBoot中如何自定义starter
下一篇: SpringBoot - @ConditionalOnMissingBean注解使用详解
cloneme01
博客等级 码龄20年 2万+粉丝 248原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cloneme01

谢谢您的支持与鼓励!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值