iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >怎么实现SpringBoot的底层注解
  • 607
分享到

怎么实现SpringBoot的底层注解

2023-06-15 09:06:31 607人浏览 泡泡鱼
摘要

本篇文章为大家展示了怎么实现SpringBoot的底层注解,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、@Configuration注解1、基本使用自定义配置类@Configuration(pr

本篇文章为大家展示了怎么实现SpringBoot的底层注解,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

一、@Configuration注解

1、基本使用

自定义配置类

@Configuration(proxyBeanMethods = true)public class MyConfig {    @Bean    public User user01(){        return new User("zhangsan",23);    }    @Bean    public Pet pet01(){        return new Pet("cat");    }}

主程序类

@springBootApplicationpublic class MainApplication {    public static void main(String[] args) {        //返回ioc容器        ConfigurableApplicationContext context = SpringApplication.run(MainApplication.class, args);        //从容器中获取bean        User user = context.getBean(User.class);        System.out.println(user);        Pet pet = context.getBean("pet01", Pet.class);        System.out.println(pet);        MyConfig myConfig = context.getBean(MyConfig.class);        System.out.println(myConfig);                User user1 = myConfig.user01();        User user2 = myConfig.user01();        System.out.println(user1 == user2);    }}

打印结果:

怎么实现SpringBoot的底层注解

2、Full模式与Lite模式

Full模式是指proxyBeanMethods = true,开启代理bean的方法。此时调用配置类中每一个给而容器注册组件方法,都会从容器中找组件,保持单例模式。

          User user1 = myConfig.user01();        User user2 = myConfig.user01();        System.out.println(user1 == user2);//true

Lite模式是指proxyBeanMethods = false,关闭代理bean的方法。容器中不会保存代理对象,每一次调用配置类里面的方法,·都会产生一个新的对象。这可以解决组件依赖的问题。

User组件里面有Pet组件

public class User {    private String name;    private Integer age;    private Pet pet;    public Pet getPet() {        return pet;    }}

自定义的配置类中proxyBeanMethods设置为false

@Configuration(proxyBeanMethods = false)public class MyConfig {    @Bean    public User user01(){        User user = new User("zhangsan", 23);        //User组件依赖了Pet组件        user.setPet(pet01());        return user;    }    @Bean    public Pet pet01(){        return new Pet("cat");    }}

主程序类

@SpringBootApplicationpublic class MainApplication {    public static void main(String[] args) {            User user01 = context.getBean("user01", User.class);        Pet pet01 = context.getBean("pet01", Pet.class);        System.out.println(user01.getPet() == pet01);//true            }}

打印结果:

怎么实现SpringBoot的底层注解

  • 配置类组件之间无依赖关系Lite模式加速容器启动过程,减少判断

  • 配置类组件之间有依赖关系,方法会被调用得到之前单实例组件,这时要用Full模式

二、@Import注解导入组件

@Import注解可以给容器中自动创建出指定类型的组件,默认组件的名字就是全类名

@Import(DBHelper.class)@Configuration(proxyBeanMethods = false)public class MyConfig {}

在容器中或者这个导入的组件

怎么实现SpringBoot的底层注解

三、@Conditional注解条件装配

满足Conditional指定的条件的方法,则进行组件注入

怎么实现SpringBoot的底层注解

怎么实现SpringBoot的底层注解

也可以标注在类上,当容器中存在指定的组件的时候,配置类中的方法才会生效

怎么实现SpringBoot的底层注解

四、@ImportResource注解导入Spring配置文件

外部配置文件

怎么实现SpringBoot的底层注解

导入外部配置文件

怎么实现SpringBoot的底层注解

获取导入的外部组件

怎么实现SpringBoot的底层注解

五、@ConfigurationProperties注解配置绑定

JavaBean与配置文件中属性进行绑定

需要使用@ConfigurationProperties@Component两个注解,@Component注解将组件注册到容器中,因为只有在容器中的组件,才能使用SpringBoot提供的一些强大的注解功能

怎么实现SpringBoot的底层注解

访问请求获取绑定的JavaBean

怎么实现SpringBoot的底层注解

还可以在配置类中使用@EnableConfigurationProperties开启组件属性配置功能,并把这个组件自动注册到容器中,这样就不需要再使用 @Component注解

@EnableConfigurationProperties(Pet.class)public class MyConfig {}
//@Component@ConfigurationProperties(prefix = "mydog")public class Pet {}

上述内容就是怎么实现SpringBoot的底层注解,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网精选频道。

--结束END--

本文标题: 怎么实现SpringBoot的底层注解

本文链接: https://www.lsjlt.com/news/279280.html(转载时请注明来源链接)

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么实现SpringBoot的底层注解
    本篇文章为大家展示了怎么实现SpringBoot的底层注解,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、@Configuration注解1、基本使用自定义配置类@Configuration(pr...
    99+
    2023-06-15
  • 详解如何实现SpringBoot的底层注解
    目录一、@Configuration注解二、@Import注解导入组件三、@Conditional注解条件装配四、@ImportResource注解导入Spring配置文件五、@Co...
    99+
    2024-04-02
  • SpringBoot注解@ConditionalOnClass底层源码实现
    目录@ConditionalOnClass的底层源码实现ConditionOutcome对象ClassNameFilter.MISSING判断某类是否不存在@ConditionalO...
    99+
    2023-02-06
    SpringBoot ConditionalOnClass SpringBoot 注解
  • SpringBoot底层注解详解
    目录一、 @ConfigurationFull模式和Lite模式二、@Import 导入组件三、@Conditional四、@ImportResource五、@Configurati...
    99+
    2023-05-20
    SpringBoot底层注解 SpringBoot注解
  • SpringBoot底层注解超详细介绍
    目录1. @Configuration2. @bean3. @Import4. @Conditional条件装配5. 配置绑定SpringBoot自动配置原理(源码分析)1. @Co...
    99+
    2024-04-02
  • spring注解的底层实现原理是什么
    Spring注解的底层实现原理主要依赖于Java的反射机制。在Spring中,通过使用注解来标识类、方法或字段,从而告诉Spring...
    99+
    2023-10-09
    spring
  • Spring注解Autowired的底层实现原理详解
    目录一、Autowired注解的用法1、概述2、应用3、具体用法二、Autowired自动装配的过程一、Autowired注解的用法 1、概述 使用spring开发时,进行配置主要有...
    99+
    2022-11-13
    Spring注解Autowired原理 Spring注解Autowired Spring Autowired
  • SpringBoot2底层注解@Import怎么使用
    这篇文章主要介绍“SpringBoot2底层注解@Import怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringBoot2底层注解@Import怎么使用”文章能帮助大家解决问题。@I...
    99+
    2023-06-30
  • SpringBoot2底层注解@Configuration怎么配置类
    这篇文章主要讲解了“SpringBoot2底层注解@Configuration怎么配置类”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringBoot2底层注解@Configuratio...
    99+
    2023-06-30
  • Redis链表底层怎么实现
    这篇“Redis链表底层怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Redis链表底层怎么实现”文章吧。底层实现R...
    99+
    2023-07-05
  • SpringBoot2底层注解@Conditional和@ImportResource怎么使用
    这篇“SpringBoot2底层注解@Conditional和@ImportResource怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下...
    99+
    2023-06-30
  • css中怎么实现弹出层覆盖底层
    css中怎么实现弹出层覆盖底层,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。#mcover {  position:&nb...
    99+
    2024-04-02
  • php数组的底层是怎么实现的
    PHP是一门流行的编程语言,尤其是在Web开发中得到广泛应用。在PHP中,数组是一个非常重要的数据结构,可以用来存储和操作数据。然而,很多PHP开发者对数组的内部实现并不了解。本文将深入探讨PHP数组的底层实现,以帮助开发者更好地使用和优化...
    99+
    2023-05-19
  • sql中的sum底层是怎么实现的
    sql 中 sum 的底层实现原理包括:准备阶段:分配内存缓冲区、获取符合条件的行。累加阶段:将每一行的列值添加到累加器(内存变量)中。优化阶段:使用数据结构优化遍历,跳过特殊值。结果阶...
    99+
    2024-05-09
  • GoLangstrings.Builder底层实现方法详解
    目录1.strings.Builder结构体1.1strings.Builder结构体1.2Write方法1.3WriteByte方法1.4WriteRune方法1.5.WriteS...
    99+
    2024-04-02
  • GoLangchannel底层代码实现详解
    目录1.channel 简介2.channel 内部结构3.创建channel4.发送数据5.接收数据6.关闭channel7.总结1.channel 简介 Go语言有个很出名的话是...
    99+
    2024-04-02
  • HashMap的底层实现原理
    这篇文章主要介绍“HashMap的底层实现原理”,在日常操作中,相信很多人在HashMap的底层实现原理问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”HashMap的底层实现原理”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-04
  • php 数组底层实现的
    PHP 数组是该语言中最重要的数据类型,它在编程过程中扮演着非常重要的角色。PHP 的数组可以在用户空间中实现一维数组、多维数组和关联数组等各种类型的数组。PHP 数组的底层实现采用了哈希表算法,本文将深入探讨 PHP 数组底层实现的原理。...
    99+
    2023-05-19
  • springboot怎么实现对注解的切面
    本篇内容介绍了“springboot怎么实现对注解的切面”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!对注解实现切面案例:(1)定义一个注解...
    99+
    2023-06-22
  • Javasynchronized底层的实现原理
    目录监视器底层实现执行流程总结前言: 想了解 synchronized 是如何运行的?就要先搞清楚 synchronized 是如何实现? synchronized 同步锁是通过 J...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作