返回顶部
首页 > 资讯 > 精选 >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://lsjlt.com/news/344359.html(转载时请注明来源链接)

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

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

    • 微信公众号

    • 商务合作