广告
返回顶部
首页 > 资讯 > 精选 >SpringBoot如何自定义bean绑定
  • 928
分享到

SpringBoot如何自定义bean绑定

2023-07-04 10:07:28 928人浏览 安东尼
摘要

本篇内容介绍了“SpringBoot如何自定义bean绑定”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!自定义bean绑定在配置文件中写入s

本篇内容介绍了“SpringBoot如何自定义bean绑定”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

    自定义bean绑定

    在配置文件中写入

    servers:
     ipAddress: 192.158.0.1
     port: 1234
     detail: zhangsan

    定义一个实体类对象去接受这些属性

    import lombok.Data;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.stereotype.Component;@Data  //lombok省去get/set/toString@Component //交给spring容器管理@ConfigurationProperties(prefix = "servers") //配置文件的位置,对应的属性注入public class ServerConfig {    private String ipAddress;    private int port;    private String detail;}

    启动类下的

    import com.pojo.ServerConfig;        import org.springframework.boot.SpringApplication;        import org.springframework.boot.autoconfigure.SpringBootApplication;        import org.springframework.context.ConfigurableApplicationContext;@SpringBootApplicationpublic class Springboot11ConfigurationApplication {    public static void main(String[] args) {        ConfigurableApplicationContext run = SpringApplication.run(Springboot11ConfigurationApplication.class, args);        ServerConfig bean = run.getBean(ServerConfig.class);        System.out.println(bean);    }}

    SpringBoot如何自定义bean绑定

    导入第三方bean

    注入方式有许多,可以导入在写一个配置类,然后加上@Bean即可,启动类中的@SpringBootApplication本身就是一个配置类。所以直接在这写也可以。

    导入druid坐标

          <dependency>            <groupId>com.alibaba</groupId>            <artifactId>druid</artifactId>            <version>1.2.12</version>        </dependency>

    启动类

    @SpringBootApplicationpublic class Springboot11ConfigurationApplication {    @Bean//注入    public DruidDataSource druidDataSource(){        DruidDataSource ds=new DruidDataSource();        return ds;    }    public static void main(String[] args) {        ConfigurableApplicationContext run = SpringApplication.run(Springboot11ConfigurationApplication.class, args);       ServerConfig bean = run.getBean(ServerConfig.class);       System.out.println(bean);        DruidDataSource dds = run.getBean(DruidDataSource.class);        System.out.println(dds);    }}

    运行出来什么也没

    SpringBoot如何自定义bean绑定

    第三方bea通过配置文件注参数

    application.yml下

    datasource:
     driverClassName: "com.mysql.jdbc.driver.zhkc"
     username: "张三"
     passWord: kczh

    启动类下

    package com;import com.alibaba.druid.pool.DruidDataSource;import com.pojo.ServerConfig;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.context.ConfigurableApplicationContext;import org.springframework.context.annotation.Bean;@SpringBootApplicationpublic class Springboot11ConfigurationApplication {    @Bean    @ConfigurationProperties(prefix = "datasource")    public DruidDataSource druidDataSource(){        DruidDataSource ds=new DruidDataSource();        return ds;    }    public static void main(String[] args) {        ConfigurableApplicationContext run = SpringApplication.run(Springboot11ConfigurationApplication.class, args);//        ServerConfig bean = run.getBean(ServerConfig.class);//        System.out.println(bean);        DruidDataSource dds = run.getBean(DruidDataSource.class);        System.out.println(dds.getDriverClassName());        System.out.println(dds.getUsername());        System.out.println(dds.getPassword());    }}

    运行结果

    SpringBoot如何自定义bean绑定

    出现Prefix must be in canonical fORM

    SpringBoot如何自定义bean绑定

    这是因为prefix属性只能用小写,不能使用驼峰命名法,改成小写即可

    SpringBoot如何自定义bean绑定

    @EnableConfigurationProperties()和@ConfigurationProperties的区别

    @EnableConfigurationProperties开启对应的属性功能,可以通过配置中的属性,让我们对应的类名来做属性注入 ,这样也可以看出有哪些类通过spring去管理

    @ConfigurationProperties是做具体的属性绑定的,对应的配置文件。

    当我们使用了@EnableConfigurationProperties,且又在类总使用了@Component,就会报错,如下

    SpringBoot如何自定义bean绑定

    这个错误是,找到两个bean,一个类对应着两个bean导致不唯一了。

    原因是:@EnableConfigurationProperties(ServerConfig.class),默认会 交给spring容器去管理,而要想让spring去管理,首先得是一个bean对象,所就会把这个ServerConfig.class变成bean对象。我们在那个类中写了@Component,这个注解也是说这个是一个bean对象,这样就导致了同一个类中对应了两个bean对象,所以产生错误。这两个注解不能同时使用,一般使用@EnableConfigurationProperties更能体现出是哪个类受spring管且需要配置注入。

    解除@ConfigurationProperties注解警告

    SpringBoot如何自定义bean绑定

    原因:springboot配置的处理器并没有配置,现在不能识别这个注解

    解决:那就给它加上

    pom.xml加上:

         <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-configuration-processor</artifactId>        </dependency>

    这样警告就没有了。

    @ConfigurationProperties可以为第三方的bean绑定属性。

    @ConfigurationProperties的松散绑定

    也叫宽松绑定,指的是在配置文件中的参数名任意大小写下划线或者中线,都会给你匹配出来。

    SpringBoot如何自定义bean绑定

    在实体类中也可以识别并正常运行。

    @Value不支持宽松绑定

    SpringBoot如何自定义bean绑定

    @ConfigurationProperties绑定前缀命名规范(prefix):仅能使用纯小写字母、数字、下划线作为合法的字符(以后都使用小写更方便。)

    小结:

    @ConfigurationProperties绑定属性支持属性名宽松绑定

    @Value注解不支持宽松绑定

    绑定的前缀命名有规则

    “SpringBoot如何自定义bean绑定”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

    --结束END--

    本文标题: SpringBoot如何自定义bean绑定

    本文链接: https://www.lsjlt.com/news/344359.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • SpringBoot如何自定义bean绑定
      本篇内容介绍了“SpringBoot如何自定义bean绑定”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!自定义bean绑定在配置文件中写入s...
      99+
      2023-07-04
    • SpringBoot自定义bean绑定实现
      目录自定义bean绑定导入第三方bean第三方bea通过配置文件注参数出现Prefix must be in canonical form@EnableConfigurationPr...
      99+
      2022-11-13
      SpringBoot bean绑定 SpringBoot自定义bean绑定
    • SpringBoot中如何自定义参数绑定
      这篇文章给大家介绍SpringBoot中如何自定义参数绑定,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。自定义参数转换器自定义参数转换器实现Converter接口,如下:public class D...
      99+
      2023-06-19
    • Springboot如何通过自定义工具类获取bean
      目录Springboot 自定义工具类获取bean在工具类注入bean的三种方式1. 需求/目的2.使用环境3.方法一:获取ApplicationContext上下文4.方法二:将工...
      99+
      2022-11-12
    • springboot如何读取自定义properties并注入到bean中
      目录读取自定义properties注入到beanspringboot启动日志如下springboot bean实例化和属性注入过程springboot版本(2.0.4 RELEASE...
      99+
      2022-11-12
    • SpringBoot如何自定义starter
      目录1. 什么是starter2. 自动配置原理2.1 自动配置生效3. 自定义starter3.1 命名规范4.总结4.1为什么要自定义starter4.2 自定义starter的...
      99+
      2022-11-12
    • SpringBoot——自定义start
      优质博文:IT-BLOG-CN 一、Mybatis 实现 start 的原理 首先在写一个自定义的start之前,我们先参考下Mybatis是如何整合SpringBoot:mybatis-spring-boot-autoconfigure依...
      99+
      2023-12-23
      spring boot java 后端 spring 开发语言 职场和发展 性能优化
    • spring怎么自定义bean注入
      在Spring中,我们可以使用两种方式来自定义Bean的注入: 使用注解方式:通过在Bean定义类上添加注解来告诉Spring容...
      99+
      2023-10-26
      spring
    • 如何使用SpringBoot自定义starter
      这篇文章主要介绍了如何使用SpringBoot自定义starter,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。springboot是什么springboot一种全新的编程规...
      99+
      2023-06-14
    • Springboot应用如何自定义Banner
      Springboot应用如何自定义Banner,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。这个小功能据说是Springboot2.x的小...
      99+
      2022-10-19
    • 浅谈SpringBoot如何自定义Starters
      目录一、Starters原理1.1 Starters场景启动器二、自定义Starters三、代码步骤一、Starters原理 1.1 Starters场景启动器 1、场景需要用到的依...
      99+
      2022-11-12
    • 详解SpringBoot如何自定义Starter
      目录阅读收获本章源码下载什么是Starter为什么使用StarterSpringboot自动配置spring.factoriesStarter开发常用注解Full全模式和Lite轻量...
      99+
      2022-11-12
    • Angular2如何实现自定义双向绑定属性
      这篇文章将为大家详细讲解有关Angular2如何实现自定义双向绑定属性,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。整理文档,搜刮出一个Angular 2实现自定义 双向...
      99+
      2022-10-19
    • SpringBoot配置如何绑定
      这篇文章主要介绍“SpringBoot配置如何绑定”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringBoot配置如何绑定”文章能帮助大家解决问题。配置绑定所谓“配置绑定”就是把配置文件中的值...
      99+
      2023-07-04
    • Knockout应用开发中如何创建自定义绑定
      这篇文章给大家介绍Knockout应用开发中如何创建自定义绑定,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。创建自定义绑定你可以创建自己的自定义绑定,没有必要非要使用内嵌的绑定(像cl...
      99+
      2022-10-19
    • springboot如何读取自定义属性
      很多时候,我们开发当中,需要通过配置自己的属性信息来满足不同环境下的应用部署,因此需要springboot能够读取我们自定义的属性,常用的读取自定义属性有@Value和@Config...
      99+
      2022-11-13
    • Springboot中如何自定义Banner图案
      这篇文章给大家介绍Springboot中如何自定义Banner图案,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、前言我们在启动 Spring Boot 项目时,默认会在控制台打印 Spring logo 和版本等信...
      99+
      2023-06-15
    • SpringBoot如何结合Neo4j自定义cypherSql
      这篇文章主要为大家展示了“SpringBoot如何结合Neo4j自定义cypherSql”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“SpringBoot如何结合Neo4j自定义cypherSq...
      99+
      2023-06-21
    • SpringBoot自定义HttpMessageConverter操作
      目录简介MediaType@RequestBody的简单实用1、解析json2、解析xml3、原理@ResponseBody自定义HttpMessageConverter1、目的2、...
      99+
      2022-11-12
    • SpringBoot怎么自定义Starter
      这篇文章给大家分享的是有关SpringBoot怎么自定义Starter的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。什么是StarterStarter是Spring Boot中的一个非常重要的概念,Starter...
      99+
      2023-06-22
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作