@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用EXPLAIN PLAN 分析SQL语句

    EXPLAIN PLAN 是一个很好的分析SQL语句的工具,它甚至可以在不执行SQL的情况下分析语句. 通过分析,我们就可以知道ORACLE是怎么样连接表,使用什么方式扫描表(索引扫描或全表扫描)以及 ...

  2. lualatex+Beamer生成ppt

    直接放模板代码 \documentclass{beamer} % There are many different themes available for Beamer. A comprehensi ...

  3. H3C PPP MP简介

  4. UA

    我们可以通过userAgent来判断,比如检测某些关键字,例如:AppleWebKit*****Mobile或AppleWebKit,需要注意的是有些浏览器的userAgent中并不包含AppleWe ...

  5. 2019-10-7-dotnet-Framework-源代码-·-ScrollViewer

    title author date CreateTime categories dotnet Framework 源代码 · ScrollViewer lindexi 2019-10-07 13:15 ...

  6. H3C HDLC帧格式

  7. CF1166E The LCMs Must be Large

    CF1166E The LCMs Must be Large 构造趣题 正着推其实很不好推 不妨大力猜结论 如果两两集合都有交,那么一定可以 证明: 1.显然如果两个集合没有交,一定不可以 2.否则给 ...

  8. 5款顶尖Windows文件传输工具

    5款顶尖Windows文件传输工具 英文原文: Drasko 日常工作中,公司里的系统管理员或其他岗位的员工都需要传递大量各种类型的文件和文档.其中一些可以通过 email 收发.但由于 email ...

  9. tf.truncates_normal()

    转载自:https://blog.csdn.net/uestc_c2_403/article/details/72235565 tf.truncated_normal(shape, mean, std ...

  10. Linux环境下安装mysql(远程连接),zookeeper,java,tomcat.

    环境阿里云centos7.5 64位 + FinalShell + Navicat Permium 12 用到的压缩包(版本看后缀) 注意:安装均在/usr/local目录下,下面代码中#号不要复制上 ...