springboot3深度学习(在更)

news2024/12/28 3:07:44

jar包外进行配置文件的修改

在jar包的同目录创建application.properties文件,直接在这个文件中配置对应的信息,就可以完成对应的修改,我们就可以做到不修改源代码。

例子:

 测试结果为下:

yml文件和properties文件都可以实现此功能,但必须保证这个配置文件的名字为application,才能生效。 

条件注释

通过对应的条件判断完成对Bean的配置。

例子测试:

        配置类

import com.huang.pojo.Cat;
import com.huang.pojo.Dog;
import com.huang.pojo.People;
import com.huang.pojo.User;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;
import org.springframework.context.annotation.Bean;

@SpringBootConfiguration
public class SpringbootConfig {
    //条件注解测试
    @Bean
    public User getUser() {
        return new User("tolen", 22);
    }

    @ConditionalOnClass(value = com.huang.pojo.User.class)
    @Bean
    public Dog getDog() {
        return new Dog("haha", 1);
    }

    //此时是不会执行下面的方法
    @ConditionalOnMissingClass(value = "com.huang.pojo.Dog")
    @Bean
    public Cat getCat() {
        return new Cat("mimi", 2);
    }
    //因为在ioc容器中存在User,所以会执行
    @ConditionalOnBean(value = User.class)
    @Bean
    public Cat getCat2() {
        return new Cat("mimi", 2);
    }
    //因为在ioc容器中存在Cat,所以不会执行
    @ConditionalOnMissingBean(value = Cat.class)
    @Bean
    public People getPeople() {
        return new People("秃狼", 22);
    }
}

         启动类

import com.huang.pojo.Cat;
import com.huang.pojo.Dog;
import com.huang.pojo.People;
import com.huang.pojo.User;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;

@SpringBootApplication(scanBasePackages = "com.huang")
public class Springboot3StudyApplication {

    public static void main(String[] args) {
        //返回spring的ioc容器
        var ioc = SpringApplication.run(Springboot3StudyApplication.class, args);
        var cat = ioc.getBeanNamesForType(Cat.class);
        if(cat != null) {
            System.out.println("cat被创建");
            System.out.println(cat[0]);
        };
        var dog = ioc.getBeanNamesForType(Dog.class);
        if(dog != null) {
            System.out.println("dog被创建");
            System.out.println(dog[0]);
        };
        var people = ioc.getBeanNamesForType(People.class);
        if(people != null) {
            System.out.println("people被创建");
            System.out.println(people[0]);
        };
        var user = ioc.getBeanNamesForType(User.class);
        if(user != null) {
            System.out.println("user被创建");
            System.out.println(user[0]);
//            这里报错说数组的索引越界了,说明没有查到people,也就说明ioc容器中没有people的Bean
        };
    }

}

测试结果为下

这里报错说数组的索引越界了,说明没有查到people,也就说明ioc容器中没有people的Bean。

属性绑定注解

@ConfigurationProperties("前缀"): 声明组件的属性和配置文件哪些前缀开始项进行绑定。(配合@Compoment或@Bean使用)

@EnableConfigurationProperties:快速注册注解。(主要使用在外部引入的类上,因为外部类通常是没有注解扫描的,其上的注解是失效的,所以使用@EnableConfigurationProperties,使其类上的注解@ConfigurationProperties生效,这时就会和我们设置的配置文件中的信息绑定了。这个注解会自动将引入的文件配置到ioc容器中,无需添加@Bean

例子

实体类

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.boot.context.properties.ConfigurationProperties;

@Data
@AllArgsConstructor
@NoArgsConstructor
@ConfigurationProperties("cat")
public class Cat {
    private String name;
    private Integer age;
}
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.boot.context.properties.ConfigurationProperties;

@Data
@AllArgsConstructor
@NoArgsConstructor
@ConfigurationProperties("dog")
public class Dog {
    private String name;
    private Integer age;
}

配置类

import com.huang.pojo.Cat;
import com.huang.pojo.Dog;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;

@SpringBootConfiguration
@EnableConfigurationProperties({Dog.class})
public class SpringbootConfig {
   @Bean
    public Cat getCat() {
        return new Cat();
    }
}

application.yml

cat:
  name: mimi
  age: 12
dog:
  name: wangwang
  age: 23

 测试类

import com.huang.pojo.Cat;
import com.huang.pojo.Dog;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class Springboot3StudyApplicationTests {

    @Autowired
    Cat cat;
    @Autowired
    Dog dog;

    @Test
    void test1() {
        System.out.println(cat);
        System.out.println(dog);
    }

}

测试结果为下:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/612702.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

160个CrackMe之002

这道题就很简单 有了第一道题目的支持 我们就能做 首先 我们先要下载Msvbvm50.dll Msvbvm50.dll下载_Msvbvm50.dll最新版下载[修复系统丢失文件]-下载之家 然后我们可以运行程序了 比之前那个还简单 就是输入 然后比对 报错或者成功 开始逆向分析 先去常量中进行查找 找…

初学者需要掌握的一些FPGA基础设计概念(2)

目录 1. 什么是流片 2. CLB 3. 如何解决亚稳态(Metastability) 4. 什么是可综合 5. 什么是双边沿、上升沿、下降沿 6. IOB 7. PLL 8. IP核 9. 时序分析 10. 时钟域 11. 约束文件 12. 用VERILOG实现消除一个glitch 滤掉小于1个周期glitch 滤…

什么是电压跟随器?电压跟随器有什么作用

电压跟随器是一种电路,其输出电压跟随输入电压的变化而变化。它被广泛应用于电子设备中,尤其是在信号放大和控制电路中。在本文中,我们将探讨电压跟随器的工作原理、应用以及设计。 一、电压跟随器的工作原理 电压跟随器是一种反馈电路&…

【AIGC】Photoshop AI Beta版本安装使用(永久免费)

AIGC 大爆发 Adobe近日宣布,Photoshop(测试版)应用程序发布了生成式AI绘图,这是世界上第一个创意和设计工作流程的副驾驶,为用户提供了一种神奇的新工作方式。生成式AI绘图由Adobe Firefly提供支持,Adobe的…

操作系统复习2.3.2-临界区的软件硬件实现方法

软件实现方法 思想 在进入区设置并检查一些标志来得知是否有进程已经在临界区,有则循环检查等待,无则直接进入,进程进入/离开临界区时修改标志 单标志法 通过标记进程号来实现控制只有一个进程能够进行临界区,但会出现P0进程进…

Java单元测试学习(一)

Java单元测试学习(一) 使用TestContainer和docker结合启动redis 前提 docker环境 目录结构 依赖—这里有个小插曲 配置RedisTemplate时一直报错Error creating bean with name ‘redisConnectionFactory’ defined in class path resource [org/spr…

客户回访|国产MCU测试解决方案 助力中国“芯”智造

半导体技术持续更新迭代,MCU也在与时俱进,为了更好地迎接市场未来趋势,国产MCU厂商积极布局各系列MCU产品线,开始逐渐在特定细分领域实现突破。随着应用场景的进化升级,MCU 中包含越来越多的功能模块,相应地…

Mysql进阶【1】论述索引,索引数据结构,MVCC

1. ReadView 案例,解释为什么 RR 和 RC 隔离级别下看到查询结果不一致 案例 01- 读已提交 RC 隔离级别下的可见性分析 开启两个回话,会话事务级别都是READ-COMMITED; 操作步骤 开启两个数据库会话,设置事务为提交读事务2查询id1数据&#…

zerotier使用

目标 使用zerotier进行内网穿透,使外网客户端访问内网服务器 步骤 1.1 注册 进入zerotier官网,注册 ​ 完成后进入个人中心,点击networks,选择创建网络,得到一个networkid ​ 点击id进入设置,编辑名称…

程序员——毕业年薪28w真的不可能吗?

我是一名来自湖南的普通应届毕业生。目前就职于杭州的一家电商经营的公司,做数据开发工程师,工资是20k*14薪,并且是每周三发一次工资。 在大学期间,我选择了学习计算机相关专业,但是课堂上所学的知识常常让我觉得晦涩…

仙境传说RO :ra脚本加载结构和开发语法讲解

仙境传说RO :ra脚本加载结构和开发语法讲解 大家好,我是艾西。上一篇文章中我们聊完了怎么在游戏中新建NPC,感觉还是有不少小伙伴没有太看懂原理。今天艾西给大家深度讲解一下脚本加载结构和开发语法环境文档。 我们最后都是以ra脚本为主要…

提高客户满意度的4种方式

随着技术的使用越来越多,客户体验格局已经永远改变了。长时间的等待时间和缓慢的响应不再被接受,并且对客户满意度产生巨大影响。即时满足和满足客户的高期望至关重要。 那么如何提高客户满意度呢,接下来将为您推荐五种最常见的方法&#xf…

SpringCloud Alibaba Sentinel学习

SpringCloud Alibaba Sentinel 1. Sentinel 使用 第一步、下载Sentinel的jar包&#xff0c;并且在命令行输入 java -jar sentinel-dashboard-1.8.0.jar 启动jar包 第二步、在项目中添加Sentinel依赖 <!--引入 alibaba-sentinel 场景启动器--> <dependency><g…

【每日算法】【171. Excel 表列序号】

☀️博客主页&#xff1a;CSDN博客主页 &#x1f4a8;本文由 我是小狼君 原创&#xff0c;首发于 CSDN&#x1f4a2; &#x1f525;学习专栏推荐&#xff1a;面试汇总 ❗️游戏框架专栏推荐&#xff1a;游戏实用框架专栏 ⛅️点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd;&…

Cookie和session工作流程详解

目录 cookie机制 session会话 理解会话机制 Servlet中对Cookie和Session提供的 HttpServletrequest类中的方法&#xff1a; 模拟实现登录功能 首先实现功能分为两个界面&#xff1a; &#xff08;1&#xff09;登录页面代码&#xff08;前端代码&#xff09; (2) 编写Lo…

docker cgroup资源占用及docker的镜像创建

cgroup用来资源限制 包括cpu&#xff0c;内存&#xff0c;磁盘三大方面 基本复写了常见的资源配额和使用量控制 cgroup是controlgroup的缩写 设置cpu使用率的上限 linux通过cfs&#xff08;完全公平调度器&#xff09;来调度各个进程对cpu的使用&#xff0c;cfs默认的调度…

Maven 介绍,根据 Maven 官方文档整理

这部分内容主要根据 Maven 官方文档整理&#xff0c;做了对应的删减&#xff0c;主要保留比较重要的部分&#xff0c;不涉及实战&#xff0c;主要是一些重要概念的介绍。 Maven 介绍 Maven 官方文档是这样介绍的 Maven 的&#xff1a; Apache Maven is a software project man…

OpenGL 着色器简介

1.简介 着色器(Shader)是运行在GPU上的小程序。这些小程序为图形渲染管线的某个特定部分而运行。从基本意义上来说&#xff0c;着色器只是一种把输入转化为输出的程序。着色器也是一种非常独立的程序&#xff0c;因为它们之间不能相互通信&#xff1b;它们之间唯一的沟通只有通…

Python数据攻略-DataFrame的数据计算和整理

大家好&#xff0c;我是Mr数据杨。今天&#xff0c;我们要踏上一场探索Python的旅程&#xff0c;途中我们将讲解算术运算、NumPy和SciPy函数的应用、DataFrame的排序、过滤、统计和遍历等技巧。想象一下如果《三国演义》中的诸葛亮有了Python的帮助&#xff0c;他将如何更有效地…

java debug调试工具

文章目录 java debug调试工具debugdebug运行断点如何运行 具体使用step intostep into Force step intoresume programstopview breakpointsmute breakpointsstep ourt Shift消除debug java debug调试工具 debug 就是调试工具&#xff0c;用来查看代码在运行工程数据的变化。 …