当前位置: 首页 > news >正文

Spring Boot 笔记 003 Bean注册

使用Idea导入第三方jar包

在porn.xml种添加的第三方jar包依赖,并刷新

可以在启动类中尝试调用

以上放到启动类中,不推荐,建议创建一个专门定义的类

package com.geji.config;import cn.itcast.pojo.Country;
import cn.itcast.pojo.Province;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Bean;@Configuration
public class CommonConfig {//注入Country对象@Beanpublic Country country(){return new Country();}//对象默认的名字是方法名@Bean
//  @Bean(“aa”)也可以改默认的对象名public Province province(){return new Province();}
}

在入口文件中调用(注意调用默认的是类名,也可以通过@Bean("aa")起别名)

以上因为在入口文件的同级目录下会自动扫描,所以可以直接用,如果不在同级目录,需要使用import

以上,如果有很多类,就会非常的臃肿,所以,做一些封装

定义一个文件

定义一个类实现ImportSelector接口,并且读取刚刚配置的文件

package config;import org.springframework.context.annotation.ImportSelector;
import org.springframework.core.type.AnnotationMetadata;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
//ctrl alt tal
//alt enter
public class CommonImportSelector implements ImportSelector {@Overridepublic String[] selectImports(AnnotationMetadata importingClassMetadata) {List<String> imports=new ArrayList<>();InputStream is=CommonImportSelector.class.getClassLoader().getResourceAsStream("common.imports");BufferedReader br=new BufferedReader(new InputStreamReader(is));String line=null;try {while((line=br.readLine())!=null){imports.add(line);}} catch (IOException e) {e.printStackTrace();} finally {if(br!=null){try {br.close();} catch (IOException e) {e.printStackTrace();}}}
//        return new String[]{"config.CommonConfig"};return imports.toArray(new String[0]);}
}

以上,可以通过在启动类添加@import(CommonImportSelector )注解调用,但是后面有可能还有其他注解,进一步对注解进行封装,创建注解类

package anno;import config.CommonImportSelector;
import org.springframework.context.annotation.Import;import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;//表示可以在类上面使用
@Target(ElementType.TYPE)
//表示运行时可用
@Retention(RetentionPolicy.RUNTIME)
@Import(CommonImportSelector.class)
public @interface EnableCommonConfig {}

入口文件调用注解类

运行成功

Bean的注册条件

以上类没有实例化数据,没什么用,如果要实例化的话,一般通过配置文件的方式

配置文件添加数据

在类中读取配置文件实例化类并返回数据

@Configuration
public class CommonConfig {//注入Country对象//@ConditionalOnProperty(prefix="country",name = {"name","system"})@Beanpublic Country country(@Value("${country.name}") String name, @Value("${country.system}") String system){Country country=new Country();country.setName(name);country.setSystem(system);return country;}

以上如果配置文件中没有,则会报错,所以需要添加注册条件的注释,常用的有以下几种

@ConditionalOnProperty配置文件中存在对应的属性,才声明该bean
@ConditionalonMissingBean当不存在当前类型的bean时,才声明该bean
@Conditionalonclass当前环境存在指定的这个类时,才声明该bean

这部分内容纯了解,举第一个为例子

配置文件中注释掉相应的数据

原本代码会报错

但是添加就好了

    @ConditionalOnProperty(prefix="country",name = {"name","system"})

相关文章:

Spring Boot 笔记 003 Bean注册

使用Idea导入第三方jar包 在porn.xml种添加的第三方jar包依赖&#xff0c;并刷新 可以在启动类中尝试调用 以上放到启动类中&#xff0c;不推荐&#xff0c;建议创建一个专门定义的类 package com.geji.config;import cn.itcast.pojo.Country; import cn.itcast.pojo.Province;…...

PCIE 参考时钟架构

一、PCIe架构组件 首先先看下PCIE架构组件&#xff0c;下图中主要包括&#xff1a; ROOT COMPLEX (RC) (CPU); PCIE PCI/PCI-X Bridge; PCIE SWITCH; PCIE ENDPOINT (EP) (pcie设备); BUFFER; 各个器件的时钟来源都是由100MHz经过Buffer后提供。一个PCIE树上最多可以有256…...

【开源】JAVA+Vue.js实现在线课程教学系统

目录 一、摘要1.1 系统介绍1.2 项目录屏 二、研究内容2.1 课程类型管理模块2.2 课程管理模块2.3 课时管理模块2.4 课程交互模块2.5 系统基础模块 三、系统设计3.1 用例设计3.2 数据库设计 四、系统展示4.1 管理后台4.2 用户网页 五、样例代码5.1 新增课程类型5.2 网站登录5.3 课…...

计算机网络(第六版)复习提纲29

第六章&#xff1a;应用层 SS6.1 域名系统DNS 1 DNS被设计为一个联机分布式数据库系统&#xff0c;并采用客户服务器方式&#xff08;C/S&#xff09; 2 域名的体系结构 3 域名服务器及其体系结构 A 域名服务器的分类 1 根域名服务器 2 顶级域名服务器&#xff08;TLD服务器&a…...

有道ai写作,突破免费限制,无限制使用

预览效果 文末提供源码包及apk下载地址 有道ai写作python版 import hashlib import time import json import ssl import base64 import uuidfrom urllib.parse import quote import requests from requests_toolbelt.multipart.encoder import MultipartEncoder from Crypto…...

node.js 使用 elementtree 生成思维导图 Freemind 文件

请参阅: java : pdfbox 读取 PDF文件内书签 请注意&#xff1a;书的目录.txt 编码&#xff1a;UTF-8&#xff0c;推荐用 Notepad 转换编码。 npm install elementtree --save 编写 txt_etree_mm.js 如下 // 读目录.txt文件&#xff0c;使用 elementtree 生成思维导图 Free…...

Vue中路由守卫的详细应用

作为一名web前端开发者&#xff0c;我们肯定经常使用Vue框架来构建我们的项目。而在Vue中&#xff0c;路由是非常重要的一部分&#xff0c;它能够实现页面的跳转和导航&#xff0c;提供更好的用户体验。然而&#xff0c;有时我们需要在路由跳转前或跳转后执行一些特定的逻辑&am…...

Flink Checkpoint过程

Checkpoint 使用了 Chandy-Lamport 算法 流程 1. 正常流式处理&#xff08;尚未Checkpoint&#xff09; 如下图&#xff0c;Topic 有两个分区&#xff0c;并行度也为 2&#xff0c;根据奇偶数 我们假设任务从 Kafka 的某个 Topic 中读取数据&#xff0c;该Topic 有 2 个 Pa…...

【Java程序代理与系统代理关系】Java程序代理与系统代理关系优先级及覆盖关系

前言 使用Apache HttpClient工具包中的HttpClients.createDefault()方法创建的默认HTTP客户端会根据操作系统当前的设置来决定是否使用代理。 具体来说&#xff0c;当创建默认HTTP客户端时&#xff0c;它会检查系统的代理设置。如果操作系统当前设置了系统级代理&#xff0c;…...

MQ,RabbitMQ,SpringAMQP的原理与实操

MQ 同步通信 异步通信 事件驱动优势&#xff1a; 服务解耦 性能提升&#xff0c;吞吐量提高 服务没有强依赖&#xff0c;不担心级联失败问题 流量消峰 ​ 小结: 大多情况对时效性要求较高&#xff0c;所有大多数时间用同步。而如果不需要对方的结果&#xff0c;且吞吐…...

Vue 3 + Koa2 + MySQL 开发和上线部署个人网站

Vue 3 Koa2 MySQL 开发和上线部署个人网站 记录个人的一个操作步骤, 顺序不分先后, 嫌啰嗦请出门右转! 环境说明: 服务器: 阿里云轻量应用服务器 服务器系统: CentOS8.2 本地环境: macOS 12.7.2 Node: 20.10.0 MySQL: 8.0.26 Vue: 3.3.11 Koa: 2.7.0 pm2: 5.3.1 Nginx: 1.1…...

uniapp踩坑之项目:简易版不同角色显示不一样的tabbar和页面

1. pages下创建三个不同用户身份的“我的”页面。 显示第几个tabbar&#xff0c;0是管理员 1是财务 2是司机 2. 在uni_modules文件夹创建底部导航cc-myTabbar文件夹&#xff0c;在cc-myTabbar文件夹创建components文件夹&#xff0c;在components文件夹创建cc-myTabbar.vue组件…...

源支付V7开心1.9修复版,非网络上泛滥不能那种

源支付V7开心1.9修复版&#xff0c;非网络上泛滥不能那种 修复版源码&#xff0c;非网络泛滥版&#xff0c;防止源码泛滥&#xff0c;会员专属源码, 本站会员免费下载所有资源 注&#xff1a;开发不易&#xff0c;仅限交流学习使用&#xff0c;如商业使用&#xff0c;请支持正…...

Gitlab和Jenkins集成 实现CI (二)

Gitlab和Jenkins集成 实现CI (一) Gitlab和Jenkins集成 实现CI (二) Gitlab和Jenkins集成 实现CI (三) 配置Gitlab api token 配置 Gitlab 进入gitlab #mermaid-svg-t84fR8wrT4sB4raQ {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:…...

Java:内部类、枚举、泛型以及常用API --黑马笔记

内部类 内部类是类中的五大成分之一&#xff08;成员变量、方法、构造器、内部类、代码块&#xff09;&#xff0c;如果一个类定义在另一个类的内部&#xff0c;这个类就是内部类。 当一个类的内部&#xff0c;包含一个完整的事物&#xff0c;且这个事物没有必要单独设计时&a…...

【持续更新】2024牛客寒假算法基础集训营3 题解 | JorbanS

A - 智乃与瞩目狸猫、幸运水母、月宫龙虾 string solve() {string a, b; cin >> a >> b;if (isupper(a[0])) a[0] a - A;if (isupper(b[0])) b[0] a - A;return a[0] b[0] ? yes : no; }B - 智乃的数字手串 string solve() {cin >> n;int cnt 0;for (…...

Java基于微信小程序的驾校报名小程序,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…...

Android中AGP与Gradle、AS、JDK的版本关系

文章目录 AGP版本所要求的Gradle、JDK、SDK Build Tools最小版本Android Studio所要求的AGP最小版本 本文介绍了 在Android开发中由于AGP与gradle、JDK、AS等版本不匹配导致的编译失败问题屡见不鲜&#xff0c;尤其是对于新手而言更是叫苦不迭。新手经常遇到拿到别人的工程代码…...

web 前端实现一个根据域名的判断 来显示不同的logo 和不同的标题

1.需求 有可能我做一个后台 web端 我想实现一套代码的逻辑 显示不同的公司主题logo以及内容&#xff0c;但是实际上 业务逻辑一样 2.实现 建一个store oem.ts 这个名为是 oem系统 oem.ts import { defineStore } from pinia;import { store } from /store;const oemDataLis…...

复制和粘贴文本时剥离格式的5种方法(MacWindows)

您可能每天复制和粘贴多次。虽然它是一个非常方便的功能&#xff0c;但最大的烦恼之一就是带来了特殊的格式。从网络上获取一些文本&#xff0c;您经常会发现粘贴到文档中时&#xff0c;它保持原始样式。 我们将展示如何使用一些简单的技巧在不格式化的情况下复制和粘贴。 1.…...

基于FDM - EDFM的油气藏地层压力场计算:MATLAB实战

基于有限差分-嵌入式离散裂缝网络&#xff08;FDM-EDFM&#xff09;的油气藏地层压力场计算&#xff0c;通过matlab代码实现&#xff0c;可提供理论指导和相关问题&#xff0c;可计算不同裂缝网络的压力分布。在油气藏工程领域&#xff0c;准确计算地层压力场对于理解油藏动态、…...

1949–2024年中国县级行政区划(逐年)|全国范围、75年连续、SHP格式

&#x1f50d; 数据简介 本数据集完整覆盖 1949年至2024年 共 76个年份 的中国县级行政区划边界&#xff0c;是目前公开可获取的时间跨度最长、更新粒度最细的全国县级历史区划产品。 每一年份均提供独立、闭合、无重叠的面状矢量边界&#xff0c;属性表包含标准名称、行政区划…...

OpenClaw监控方案:Qwen3.5-4B-Claude模型异常任务预警系统

OpenClaw监控方案&#xff1a;Qwen3.5-4B-Claude模型异常任务预警系统 1. 为什么需要自动化监控方案 去年夏天的一个深夜&#xff0c;我被连续不断的手机震动声惊醒。打开电脑发现某个数据处理脚本已经运行了18小时——它本该在2小时内完成。更糟糕的是&#xff0c;这个错误导…...

Qwen3.5-35B-A3B-AWQ-4bit开源镜像实战:法律合同关键条款图示定位与文本提取

Qwen3.5-35B-A3B-AWQ-4bit开源镜像实战&#xff1a;法律合同关键条款图示定位与文本提取 1. 引言&#xff1a;当AI遇到法律合同 想象一下&#xff0c;你是一位法务人员&#xff0c;面前摆着一份长达50页的PDF合同。老板急着要你找出所有关于“违约责任”的条款&#xff0c;并…...

Thorium浏览器架构深度解析:基于Chromium的极致性能优化实践

Thorium浏览器架构深度解析&#xff1a;基于Chromium的极致性能优化实践 【免费下载链接】thorium Chromium fork named after radioactive element No. 90. Windows and MacOS/Raspi/Android/Special builds are in different repositories, links are towards the top of the…...

asp毕业设计下载(全套源码+配套论文)——基于asp+access的仓储物流管理系统设计与实现

基于aspaccess的仓储物流管理系统设计与实现&#xff08;毕业论文程序源码&#xff09; 大家好&#xff0c;今天给大家介绍基于aspaccess的仓储物流管理系统设计与实现&#xff0c;更多精选毕业设计项目实例见文末哦。 文章目录&#xff1a; 基于aspaccess的仓储物流管理系统…...

MusePublic大模型Qt图形界面开发指南

MusePublic大模型Qt图形界面开发指南 1. 为什么需要图形界面&#xff1f; 如果你已经能用代码调用MusePublic大模型&#xff0c;可能会发现一个问题&#xff1a;每次都要打开终端、输入命令、等待结果&#xff0c;这样的交互方式既不方便也不直观。特别是当你需要频繁调整参数…...

OpenClaw安全指南:百川2-13B模型权限管控与敏感操作防护

OpenClaw安全指南&#xff1a;百川2-13B模型权限管控与敏感操作防护 1. 为什么需要安全防护机制 去年冬天的一个深夜&#xff0c;我的OpenClaw经历了一次"惊魂时刻"。当时我让AI助手整理财务表格&#xff0c;结果它误将包含个人银行账号的临时文件上传到了云存储。…...

ONLYOFFICE Docs与Nextcloud Calendar集成:打造高效私有云日程协作平台

ONLYOFFICE Docs与Nextcloud Calendar集成&#xff1a;打造高效私有云日程协作平台 【免费下载链接】DocumentServer ONLYOFFICE Docs is a free collaborative online office suite comprising viewers and editors for texts, spreadsheets and presentations, forms and PDF…...

深度解析:汇率结算下的货代对账困局,如何利用 AI 与 RPA 构建底层逻辑?

【前言】在国际物流与货运代理行业&#xff0c;财务对账向来是一块“硬骨头”。尤其是涉及跨国业务时&#xff0c;汇率的实时波动与多币种结算的交叉影响&#xff0c;使得原本复杂的账目核对工作呈几何倍数增加。传统的人工对账模式不仅效率低下&#xff0c;且在面对分位数的四…...