@Configuration结合@Bean实现对象的配置


前提:最近项目中需要做支付接口,支付宝以及微信支付,本文并不介绍如何写支付接口,而是通过这个示例讲解配置应该怎么写,项目中使用的是Kotlin语言

众所周知:Spring中的注解分为两种:注册类使用类,且Spring默认是单例模式,记住这两点很重要。

(1)注册类包括:Controller、Service、Repository、Configuration、Component、Bean等,这些注解告知了Spring容器这些Bean的种类,让他们各司其职。其中@Bean注解告知Spring容器:我现在要给你一个我已经配置好了的对象(即Bean),以后无论在哪使用这个Bean,都无需再进行配置了。-- 为什么会这样呢?是因为Spring的Bean默认是单例模式的,内存中只会存储一个这样的对象,熟悉JVM内存区域的都知道,对象均存储在堆内存中,一个对象分为:对象头、实例数据、对齐填充。其中实例数据就存放了对象中的内容数据,所以每次要用到相关对象时,Spring自动将已经注册且配置好的Bean给你使用。

(2)使用类包括:@Resource、@AutoWired等,这两个注解主要将依赖注入到Bean当中,使用时无需使用new关键字。

在Spring整个项目的运行过程中,是通过一个个的Bean互相协调工作的,特别是当你使用第三方组件的时候(比如redis),使用SpringBoot的注解(@Configuration)可以轻松实现Java语言进行配置,不用再写繁琐的Xml文件,这里只介绍使用注解方式进行配置

SpringBoot的配置可以分为两类 :运行配置第三方组件配置

这两个配置会将某些配置暴露出来给程序员在配置文件中配置,比如在yml文件中配置端口号,或者当集成了Hibernate等组件时,会让你配置数据源等。比如下图:

红色方框是你集成SpringBoot的某个组件后,SpringBoot将这些组件的配置暴露出来让你填的。同样,可以看到可以看到图中的redis,这里SpringBoot没有将他们暴露出来,所以我们需要自己去配置:


接下来,展示如何配置支付接口的信息

这里我用了zookeeper作配置中心,另一篇博文会有介绍,但不妨碍我讲实现方法

首先将配置文件中的信息使用@Value注入到字段中,这里因为使用的是zookeeper,所以只在配置文件中配置了zookeeper的相关信息。

然后通过@Bean注解,告知Spring容器,我会返回给你一个对象这个对象是我已经配置好了的对象,以后使用的时候就不用再配置了。

这里是使用这个Bean的地方,通过@Resource注入依赖

@Configuration结合@Bean实现对象的配置的更多相关文章

  1. Spring的Java配置方式—@Configuration和@Bean实现Java配置

    Java配置是Spring4.x推荐的配置方式,可以完全替代xml配置. 1.@Configuration 和 @BeanSpring的Java配置方式是通过 @Configuration 和 @Be ...

  2. @Configuration和@Bean 配置类注入

    @Configuration和@Bean 1. 概述 @Configuration 注解标记在类上, 就像下面的配置文件. 我们将该类成为配置类. <?xml version="1.0 ...

  3. @Configuration 和 @Bean

    1. @Bean: 1.1 定义 从定义可以看出,@Bean只能用于注解方法和注解的定义. @Target({ElementType.METHOD, ElementType.ANNOTATION_TY ...

  4. Spring @Configuration 和 @Bean 注解

    @Configuration 和 @Bean 注解 带有 @Configuration 的注解类表示这个类可以使用 Spring IoC 容器作为 bean 定义的来源.@Bean 注解告诉 Spri ...

  5. 1spring注解:@Configuration,@Bean,@ComponentScan(),@Scope

    传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有两个缺点:1.如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大:如果按需求分开.xml文件 ...

  6. SpringBoot自动装配原理之Configuration以及@Bean注解的使用

    Configuration以及Bean注解的使用 该知识点在Spring中应该学过,没有学过或者遗忘的的朋友需要预习或温习前置知识点.SpringBoot其实就是Spring的进一步简化,所以前置知识 ...

  7. 14 - springboot的@Configuration、@Bean、@Import()、@ImportResource()、@Conditional说明

    1.@Configuration.@Bean.@Import().@ImportResource().@Conditional 分析源码的时候总会见到标题中的这几个注解,因此:弄一篇博客来说明一下吧, ...

  8. JSon_零基础_005_将po(bean)对象集合List转换为JSon格式的对象字符串,返回给界面

    将po(bean)对象集合List转换为JSon格式的对象字符串,返回给界面 导入jar包: 编写:po(bean)代码: package com.west.webcourse.po; /** * 第 ...

  9. JSon_零基础_005_将po(bean)对象转换为JSon格式的对象字符串,返回给界面

    将po(bean)对象转换为JSon格式的对象字符串,返回给界面 导入jar包: 编写po(bean)类: package com.west.webcourse.po; /** * 第01步:编写be ...

随机推荐

  1. oracle连接多个扫描

    如果你对一个列和一组有限的值进行比较, 优化器可能执行多次扫描并对结果进行合并连接. 举例: SELECT * FROM LODGING WHERE MANAGER IN (‘BILL GATES’, ...

  2. tensorflow入门——3解决问题——4让我们开始吧

    深度学习适合解决海量数据和复杂问题 在机器学习中,语音识别,图像识别,语意识别用的是不同的技术,从事相关工作的人合作几乎不可能. 深度学习改变了这一切. 80年代计算机很慢,数据集很小,因此深度学习没 ...

  3. 神经网络入门——8XOR感知器

    XOR 感知器     XOR 感知器就是一个这样的逻辑门:输入相同返回 0 ,输入不同返回 1.与之前的感知器不同,这里并不是线性可分的.要处理这类较为复杂的问题,我们需要把感知器连接起来. 我们用 ...

  4. H3C PPP基本配置

  5. 版本号/缓存刷新 laravel mix函数

    很多开发者会给编译的前端资源添加时间戳或者唯一令牌后缀以强制浏览器加载最新版本而不是代码的缓存副本.Mix 可以使用 version 方法为你处理这种场景. version 方法会自动附加唯一哈希到已 ...

  6. Python数据可视化matplotlib和seaborn

    Python在数据科学中的地位,不仅仅是因为numpy, scipy, pandas, scikit-learn这些高效易用.接口统一的科学计算包,其强大的数据可视化工具也是重要组成部分.在Pytho ...

  7. .NET 创建 WebService

    服务器端代码 using System; using System.Collections.Generic; using System.Linq; using System.Web; using Sy ...

  8. Educational Codeforces Round 65 (Rated for Div. 2) E. Range Deleting(思维+coding)

    传送门 参考资料: [1]:https://blog.csdn.net/weixin_43262291/article/details/90271693 题意: 给你一个包含 n 个数的序列 a,并且 ...

  9. H3C RIP路由表的初始化

  10. The 10th Shandong Provincial Collegiate Programming Contest H.Tokens on the Segments(贪心+优先级队列 or 贪心+暴力)

    传送门 •题意 二维平面上有 n 条线段,每条线段坐标为 $(l_i,i),(r_i,i)$: 平面上的每个整点坐标上都可以放置一枚硬币,但是要求任意两枚硬币的横坐标不相同: 问最多有多少条线段可以放 ...