@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. @NOI模拟2017.06.30 - T1@ Left

    目录 @description@ @solution@ @accepted code@ @details@ @description@ JOHNKRAM 最近在研究排序网络,但他发现他不会制作比较器, ...

  2. 如何在git中删除指定的文件和目录

    部分场景中,我们会希望删除远程仓库(比如GitHub)的目录或文件. 具体操作 拉取远程的Repo到本地(如果已经在本地,可以略过) $ git clone xxxxxx 在本地仓库删除文件 $ gi ...

  3. vue 打包后,页面空白及图片路径的问题

    打包之后打开dist的页面显示空白: 1.记得改一下config下面的index.js中bulid模块导出的路径. 这里需要将 assetsPublicPath: '/'改为assetsPublicP ...

  4. java 利用反射创建对象

    创建对象: 1.使用Class对象的newInstance()方法创建该Class对象的实例,此时该Class对象必须要有无参数的构造方法. 2.使用Class对象获取指定的Constructor对象 ...

  5. java笔试题及其答案

    1:下列哪个工具可以编译源文件(A) A:javac B:jdb C:javadoc D:junit 2:String b = new String("1"+"2&quo ...

  6. H3C MSTP

  7. 2018-8-10-win10-uwp-win2d-离屏渲染

    title author date CreateTime categories win10 uwp win2d 离屏渲染 lindexi 2018-08-10 19:17:19 +0800 2018- ...

  8. maven仓库总结,maven私服搭建,批量mvn eclipse:eclipse

    配置pom.xml依赖包时在这里找包的描述: http://search.maven.org/#browse 以java为根目录. mvn archtype:generate -DgroupId=zt ...

  9. 2019-2-27-win10-uwp-去掉-Flyout-边框

    title author date CreateTime categories win10 uwp 去掉 Flyout 边框 lindexi 2019-02-27 17:48:46 +0800 201 ...

  10. vue-learning:4-template-v-if-and-v-show

    控制元素可见性的指令 v-if 和 v-show v-if v-else v-else-if :多重判断 template :分组渲染包裹元素 key:管理可复用元素 v-show v-if与v-sh ...