@Configuration结合@Bean实现对象的配置
@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实现对象的配置的更多相关文章
- Spring的Java配置方式—@Configuration和@Bean实现Java配置
Java配置是Spring4.x推荐的配置方式,可以完全替代xml配置. 1.@Configuration 和 @BeanSpring的Java配置方式是通过 @Configuration 和 @Be ...
- @Configuration和@Bean 配置类注入
@Configuration和@Bean 1. 概述 @Configuration 注解标记在类上, 就像下面的配置文件. 我们将该类成为配置类. <?xml version="1.0 ...
- @Configuration 和 @Bean
1. @Bean: 1.1 定义 从定义可以看出,@Bean只能用于注解方法和注解的定义. @Target({ElementType.METHOD, ElementType.ANNOTATION_TY ...
- Spring @Configuration 和 @Bean 注解
@Configuration 和 @Bean 注解 带有 @Configuration 的注解类表示这个类可以使用 Spring IoC 容器作为 bean 定义的来源.@Bean 注解告诉 Spri ...
- 1spring注解:@Configuration,@Bean,@ComponentScan(),@Scope
传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有两个缺点:1.如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大:如果按需求分开.xml文件 ...
- SpringBoot自动装配原理之Configuration以及@Bean注解的使用
Configuration以及Bean注解的使用 该知识点在Spring中应该学过,没有学过或者遗忘的的朋友需要预习或温习前置知识点.SpringBoot其实就是Spring的进一步简化,所以前置知识 ...
- 14 - springboot的@Configuration、@Bean、@Import()、@ImportResource()、@Conditional说明
1.@Configuration.@Bean.@Import().@ImportResource().@Conditional 分析源码的时候总会见到标题中的这几个注解,因此:弄一篇博客来说明一下吧, ...
- JSon_零基础_005_将po(bean)对象集合List转换为JSon格式的对象字符串,返回给界面
将po(bean)对象集合List转换为JSon格式的对象字符串,返回给界面 导入jar包: 编写:po(bean)代码: package com.west.webcourse.po; /** * 第 ...
- JSon_零基础_005_将po(bean)对象转换为JSon格式的对象字符串,返回给界面
将po(bean)对象转换为JSon格式的对象字符串,返回给界面 导入jar包: 编写po(bean)类: package com.west.webcourse.po; /** * 第01步:编写be ...
随机推荐
- PHP导入导出Excel方法小结
基本上导出的文件分为两种: 1:类Excel格式,这个其实不是传统意义上的Excel文件,只是因为Excel的兼容能力强,能够正确打开而已.修改这种文件后再保存,通常会提示你是否要转换成Excel文件 ...
- H3C LMI
- Django使用cors解决跨域问题
1.安装Django-cors-headers模块 pip install django-cors-headers 2.配置settings.py文件 INSTALLED_APPS = [ ... ' ...
- 2018-8-10-用-sim-卡加密保护资金
title author date CreateTime categories 用 sim 卡加密保护资金 lindexi 2018-08-10 19:16:52 +0800 2018-2-13 17 ...
- C# 在基类定义好方法让子类继承接口就能实现
在 C# 里面,接口的定义只需要类里面存在和接口声明相同的方法或属性就可以,而存在的方法或属性是在子类定义的还是基类里面定义的都无所谓.也就是在基类里面写好了方法,但不继承接口,等子类继承接口的时候就 ...
- linux I/O 内存分配和映射
I/O 内存区必须在使用前分配. 分配内存区的接口是( 在 <linux/ioport.h> 定义): struct resource *request_mem_region(unsign ...
- luoguP2679 子串
luoguP2679 子串 个人感觉\(noip\)系列中挺好的一道DP题目. 题面有点难理解. 我们设\(f_{i,j,k,0/1}\)表示\(A\)串前\(i\)个字符,匹配\(B\)串前\(j\ ...
- Java 工程师应该掌握的知识
以 Java 工程师应该掌握的知识为例,按重要程度排出六个梯度: 第一梯度:计算机组成原理.数据结构和算法.网络通信原理.操作系统原理. 第二梯度:Java 基础.JVM 内存模型和 GC 算法.JV ...
- 学习Java第六周
1.内存结构 Java程序在运行时,需要在内存中的分配空间为提高运算效率,空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式. 栈内存 ·用于存储局部变量,当数据使用完,所占 ...
- Python 多组输入
#基于Python2.7 #若是想Python做到和C++中while(scanf()!=EOF)一样的多组输入效果,可以如实例所示书写 #实例实现了多组输入,计算A+B+C并输出的任务 while ...