Spring底层原理之bean的加载方式四 @import 注解

bean的加载方式四 @import

第四种bean的导入方式

是import导入的方式

在配置类上面加上注解就行

package com.bigdata1421.config;

import com.bigdata1421.bean.Dog;
import org.springframework.context.annotation.Import;

@Import(Dog.class)
public class SpringConfig4 {

}

这个注解只能用一次

只能写一行

我们在APP类里面启动一下

package com.bigdata1421.bean.app;

import com.bigdata1421.bean.Dog;
import com.bigdata1421.config.SpringConfig3;
import com.bigdata1421.config.SpringConfig32;
import com.bigdata1421.config.SpringConfig4;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App32 {

    public static void main(String[] args) {
        ApplicationContext ctx=new AnnotationConfigApplicationContext(SpringConfig4.class);
        String[] arr = ctx.getBeanDefinitionNames();
        for (String s : arr) {
            System.out.println(s);
        }
        System.out.println();
        System.out.println(ctx.getBean(Dog.class));
    }
}

首先我们是创建bean实例类ApplicationContext类的对象

导入刚刚写的配置类的类加载器

我们用这个对象去调用里面的方法获取当前配置类里面的所有bean

把名称返回到一个字符串数组里面

我们用增强for循环遍历这个数组打印

输出在控制台

发现我们用Import注解导入的bean被成功加载

我们也可以获取一下这个对象

成功打印

如果找不到bean的话 就会报错

我们用注解创建的bean是全路径类名

我们注意我们的这边

并没有把Dog类标记为一个bean

用@Component注解及其衍生注解

这就代表我们可以进行有效的解耦

spring倡导无入侵式编程理念

Spring 框架倡导的无入侵式编程理念指的是,在使用 Spring 框架开发应用程序时,你的业务逻辑代码不需要依赖于 Spring 特定的类或接口,也不需要继承 Spring 的特定类。换句话说,你可以在不改变代码结构的情况下,将 Spring 框架集成到现有的应用中,并且可以很容易地移植到其他环境中,而不会受到 Spring 框架的限制或影响。

具体来说,Spring 框架通过依赖注入(Dependency Injection)和面向切面编程(Aspect-Oriented Programming)等技术,实现了控制反转(IoC)和面向切面编程(AOP),使得应用程序中的组件(如业务逻辑、数据访问等)能够独立于框架进行开发和测试。这种方式使得代码的可维护性和扩展性大大提高,同时降低了框架引入和替换的风险和成本。

总之,Spring 的无入侵式编程理念使得开发者可以更加专注于业务逻辑的实现,而不必过多关注框架的具体实现细节,从而提高了开发效率和代码质量。

只需要一个注解就行 十分的方便

小结

这是框架内部经常用到的一种初始化bean的方式

这也是很多spring整合其他技术时的一种手段

个人号推广

博客主页

多多!-CSDN博客

Web后端开发

https://blog.csdn.net/qq_30500575/category_12624592.html?spm=1001.2014.3001.5482

Web前端开发

https://blog.csdn.net/qq_30500575/category_12642989.html?spm=1001.2014.3001.5482

数据库开发

https://blog.csdn.net/qq_30500575/category_12651993.html?spm=1001.2014.3001.5482

项目实战

https://blog.csdn.net/qq_30500575/category_12699801.html?spm=1001.2014.3001.5482

算法与数据结构

https://blog.csdn.net/qq_30500575/category_12630954.html?spm=1001.2014.3001.5482

计算机基础

https://blog.csdn.net/qq_30500575/category_12701605.html?spm=1001.2014.3001.5482

回忆录

https://blog.csdn.net/qq_30500575/category_12620276.html?spm=1001.2014.3001.5482

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux高级编程——进程

1.进程的含义? 进程是一个程序执行的过程,会去分配内存资源,cpu的调度 PID, 进程标识符 当前工作路径 chdir umask 0002 进程打开的文件列表 文件IO中有提到 (类似于标准输入 标准输出的编号,系统给0,1&#xf…

点云处理实战 点云平面拟合

目录 一、什么是平拟合 二、拟合步骤 三、数学原理 1、平面拟合 2、PCA过程 四、代码 一、什么是平拟合 平面拟合是指在三维空间中找到一个平面,使其尽可能接近给定的点云。最小二乘法是一种常用的拟合方法,通过最小化误差平方和来找到最优的拟合平面。 二、拟合步骤…

1.1章节print输出函数语法八种 使用和示例

1.打印变量和字符串 2-4.三种使用字符串格式化 5.输出ASCLL码的值和中文字符 6.打印到文件或其他对象(而不是控制台) 7.自定义分隔符、和换行符和结束符 8.连接符加号连接字符串 在Python中,print() 函数用于在控制台上输出信息。这是一个非常…

设置日历程序

目录 一 设计原型 二 后台源码 一 设计原型 二 后台源码 namespace 设置日历 {public partial class Form1 : Form{public Form1(){InitializeComponent();}private void dateTimePicker1_ValueChanged(object sender, EventArgs e){richTextBox1.Text dateTimePicker1.T…

React@16.x(42)路由v5.x(7)常见应用场景(4)- 路由切换动画

目录 1,实现路由切换基础样式 2,使用 CSSTransition 添加动画1,自定义动画组件 *TransitionRoute.jsx*2,*App.jsx*3,样式改动 3,注意点 通过一个例子来说明如何实现。 1,实现路由切换 基础样式…

prompt:我是晚餐盲盒,只要你问出“今晚吃什么”我就将为你生成美妙的食物推荐。

使用方法:在ChatGP粘贴下面提示词模型,点击输出。然后再问“晚餐有什么好吃的?”,AI输出丰种食物供你选择。抽到什么吃什么,极大的解决选择困难的问题。 客户需要生成1000条俏皮灵动,趣味盎然,比…

搭建 MySQL MHA

搭建 MySQL MHA 搭建 MySQL MHA实验拓扑图实验环境实验思路MHA架构故障模拟 实验部署数据库安装主从复制部署时间同步主服务器配置从服务器配置创建链接 MHA搭建安装依赖的环境安装 node 组件安装 manager 组件配置无密码认证在 manager 节点上配置 MHA管理 mysql 节点服务器创…

UI(二)控件

文章目录 PatternLockProgressQRCodeRadioRatingRichTextScollBarSearchSelectSlideSpanStepper和StepperItemTextTextAreaTextClockTextInputTextPickerTextTimerTimePickerToggleWeb PatternLock PatternLock是图案密码锁组件,以九宫格图案的方式输入密码&#x…

RTDETR更换优化器——Lion

RTDETR更换Lion优化器 论文:https://arxiv.org/abs/2302.06675 代码:https://github.com/google/automl/blob/master/lion/lion_pytorch.py 简介: Lion优化器是一种基于梯度的优化算法,旨在提高梯度下降法在深度学习中的优化效果…

vue3中通过vditor插件实现自定义上传图片、录入echarts、脑图、markdown语法的编辑器

1、下载Vditor插件 npm i vditor 我的vditor版本是3.10.2,大家可以自行选择下载最新版本 官网:Vditor 一款浏览器端的 Markdown 编辑器,支持所见即所得(富文本)、即时渲染(类似 Typora)和分屏 …

软件必须要进行跨浏览器测试吗?包括哪些内容和注意事项?

随着互联网的普及和发展,用户对软件的要求越来越高。无论是在台式机、笔记本还是移动设备上,用户都希望能够以最好的体验来使用软件。然而,不同的浏览器在解析网页的方式、支持的技术标准等方面存在差异,这就导致了同一个网页在不…

使用J-Link Commander查找STM32死机问题

接口:PA13,PA14,请勿连接复位引脚。 输入usb命令这里我已经连接过了STM32F407VET6了。 再输入connect命令这里我已经默认选择了SWD接口,4000K速率。 可以输入speed 4000命令选择4000K速率: 写一段崩溃代码进行测试: void CashCode(void){*((volatil…

(2024,RNN,梯度消失和爆炸,记忆诅咒,重参数化和动态学习率,权重矩阵对角化,复值 RNN)梯度消失和爆炸并不是故事的结局

Recurrent neural networks: vanishing and exploding gradients are not the end of the story 公和众与号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群) 目录 0. 摘要 1. 梯度消失和梯度爆炸 2. 记…

PyCharm2024 for mac Python编辑开发

Mac分享吧 文章目录 效果一、下载软件二、开始安装1、双击运行软件(适合自己的M芯片版或Intel芯片版),将其从左侧拖入右侧文件夹中,等待安装完毕2、应用程序显示软件图标,表示安装成功3、打开访达,点击【文…

深入解读一下`android.os.CountDownTimer`

简介 在 Android 开发中,CountDownTimer 是一个非常有用的类,它可以用于倒计时任务,比如倒计时器、限时活动等。CountDownTimer 提供了一个简单的方式来实现定时操作,无需我们手动管理线程和计时器。 本文将深入解析 CountDownT…

大数据------JavaWeb------Maven(完整知识点汇总)

额外知识点 IDE IDE是集成开发环境的缩写,它是一种软件应用程序,提供了编码、调试和部署软件的一站式解决方案。这些功能集成在一起,使开发人员能够在一个环境中完成整个软件开发过程,从编写代码到调试和测试,直到最终…

中霖教育:税务师考试通过率怎么样?

税务师考试的通过率通常在20%至30%的范围内,涵盖五个科目:《税法一》、《税法二》、《财务与会计》、《涉税服务实务》和《涉税服务相关法律》,成绩有效期为五年。 针对税务师备考,有效的学习策略至关重要。 1、熟悉各科的题型和…

什么是 SSH(安全外壳协议)以及如何工作

安全外壳协议(Secure Shell,简称SSH),旨在取代未加密的协议(如 Telnet 和 RSH)和未受保护的文件传输协议(如 FTP 和 RCP),在两个设备之间提供安全的加密连接。 安全外壳…

数字社交的领航者:解析Facebook的引领作用

在当今数字化社会中,社交网络已经成为了人们日常生活不可或缺的一部分。而在众多社交平台中,Facebook凭借其巨大的用户基础和创新的技术应用,被公认为数字社交领域的领航者之一。本文将深入解析Facebook在数字社交中的引领作用,探…

免费可视化工具如何提升工作效率?

免费可视化工具能为我们的工作带来什么好处?在如今数据密集的工作环境中,如何高效地处理和展示数据成为了每个行业的重要任务。传统的工具如Excel虽然强大,但在处理复杂数据和创建高级图表时往往显得力不从心。而免费可视化工具的出现&#x…