Spring容器类扫描注解

模拟spring实现包扫描器功能 内容为模拟spring实现包扫描器功能。扫描指定包下面的类 立即下载

1、component

package Class_Scan_Annotation;

import org.springframework.stereotype.Component;

import javax.annotation.Resource;

/**
 * Created by Administrator on 2019/6/1.
 */

@Component("person")
public class Person {
    @Resource(name = "student")
//    @Autowired 按照类型匹配
//    @Qualifier("student") 按照name匹配
    private Student student;

    public Student getStudent() {
        return student;
    }
}

2、component

package Class_Scan_Annotation;

import org.springframework.stereotype.Component;

/**
 * Created by Administrator on 2019/5/29.
 */
@Component("student")
public class Student {
    public void say() {
        System.out.println("你好学生!");
    }
}

3、applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-2.5.xsd">
    <!--
        component:把一个类放入到Spring容器中,该类就是一个component
        在base-package指定的包及子包下 扫描 所有的类
    -->
    <context:component-scan base-package="Class_Scan_Annotation"></context:component-scan>
</beans>

4、单元测试

package Class_Scan_Annotation;

import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class AnnotationTest {
    @Test
    public void testAnnotation() {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("Class_Scan_Annotation/DI_Annotation.xml");
        Person person = (Person) context.getBean("person");
        person.getStudent().say();
    }
}

5、输出
学生你好
6、原理

* 原理
 * 1、启动spring容器,spring容器解析配置文件
 * 2、当解析到 <context:component-scan base-package="Class_Scan_Annotation"></context:component-scan>
 *      就会在上面指定的包及子包中扫描所有的类,看那些类上面有@component注解
 * 3、如果有component注解,则由如下的规则
 *          @component
 *          public class PersionDaoImpl{
 *
 *          }
 *          ==
 *          <bean id="persionDaoImpl" class ="XXXX"></bean>
 *          id的值,把类的第一个字母变成小写,其他的字母不变
 *           @component(name="persionDao")
 *          public class PersionDaoImpl{
 *
 *          }
 *          ==
 *          <bean id="persionDao" class ="XXXX"></bean>
Gelsight Sensor 重建 height-map —— 使用 DST-II 算子的快速泊松求解 Gelsight Sensor 重建 height-map —— 使用 DST-II 算子的快速泊松求解 gelsight gelsight传感器具有软弹性体的接触表面,可以精确的重建物体形状还可以从传感器的变形推断接触力和滑动. 使用 DST-II 算子的快速泊松求解 height 文章:GelSight: High-Resolution Robot Tactile Sensors for Estimating Geometry and Force 文章最后求解的方程其实是: p=∂2u∂x2+∂ 阅读详情

相关推荐

STM32低功耗模式下ADC采样抖动的5个隐藏陷阱及解决方案(实测避坑)

本文深入探讨了STM32低功耗模式下ADC采样抖动的5个常见陷阱及解决方案,包括多通道采样电压跃迁、外设开关信号稳定、低功耗模式与ADC时钟同步、输入阻抗失配以及基准电压稳定性问题。通过实测数据和优化代码示例,帮助工程师有效规避ADC采样数据抖动问题,提升物联网设备的测量精度和稳定性。

weixin_30316097的博客 383

Springboot扫描注解类

springboot扫描注解类源码解析

IT从业者 3885

从零到一:手把手教你用STM32F103C8T6打造个人专属开发板(附立创EDA工程与源码)

本文详细介绍了如何使用STM32F103C8T6微控制器从零开始设计和制作个人专属开发板。内容涵盖硬件选型、原理图设计、PCB布局、功能验证等全流程,并提供了立创EDA工程文件和源码,帮助开发者深入理解STM32开发板的硬件架构与设计要点。

weixin_26802933的博客 286

spring 组件 扫描

@ComponentScan(basePackages = {“com”}) 组件扫描 @ComponentScan等价于 AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(); context.scan("com"); 模拟包扫描 获取项目真实路径 File file =new File(RealPath) String[] files= file.list() clazz = fi

qq_44745938的博客 599

MIT 18.03 微分方程 ODE 学习笔记分享——目录

从B站上看到了MIT 微分方程的课程,觉得老爷子讲的真好! 其实微分方程对于工科来说相当重要,但是很多学习也仅把他放在高数里作为单独的一个章节来讲,这是远远不够的。所以对于同学们来说 ,一定要认真听讲,做好笔记! 以下是我的个人学习比较分享。有需要的同学可以做一个参考。 注:个人认为笔记的作用是用来回想起课堂所讲的内容(细节),所以我的笔记风格为以老师讲课思路为准,板书为辅。建议刚开始听这门课的同...

weixin_40664094的博客 2630

Windows系统中 Xmanager 6 企业版下载安装激活教程

Xmanager 6 企业版安装激活教程 1.Xmanager 6 下载网址:https://yunpan.360.cn/surl_yrJrWq3GmjN 2. 双击 Xmanager-6.0.0169r 安装 3. 点击运行按钮 4. 点击下一步 5. 选择我接受许可证协议中的条款(A), 点击下一步。 6. 输入用户名:byg,公司名称:microsoft,序...

mry6的博客 9876

Spring IoC容器:类路径扫描和管理组件(Classpath Scanning and Managed Components)

Spring IoC容器:类路径扫描和管理组件(Classpath Scanning and Managed Components)

听海边涛声 1098

华为OD面试手撕真题 - 最大数

华为OD面试手撕真题 最大的数 提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解

qq_45776114的博客 345

spring(六)--------spring的扫描机制

我们说到这个实现类完成对注解类的扫描。可以看到只获取includeFilters中存在的,我们知道我们自己在配置类的@CompnentScan注解中手动加入了一个Scan_C类到includeFilters,所以Scan_C是可以扫到的,那么加了@Compnent注解的Scan_A又是怎么被扫描的?-----》如是则获取配置类的部分属性,实例化一个扫描器(扫描器实例化的时候会将Compnent类加入到includeFilters中,为了后判断哪些类用了@Compnent注解)

qq_35599414的博客 2258

CAN总线介绍及硬件设计

1. CAN是什么 CAN 是 Controller Area Network 的缩写(以下称为 CAN),是 ISO*1 国际标准化的串行通信协议。 在当前的汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统 被开发了出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很 多,线束的数量也随之增加。为适应“减少线束的数量”、“......

sinat_15677011的博客 9993

LVGL 丝滑菜单3(Silk Menu)

h。

摸鱼专家 92

spring扫描注解工具类scan

--------------------------------------------------------------------------------该工具类主要是用于自定义扫描包--------------------------------------------------------------------------- 首先需要spring的扫描工具类-----(废话少说直接

ikownyou的博客 4943

uniapp - H5人脸识别认证与活体检测功能(纯前端免费方案+微信sdk人脸识别)完整源码,微信公众号网页/h5端人脸识别功能人脸核身(微信方案提供后端spring boot+thinkphp源码

uniapp实现人脸认证,uniAPP h5手机拍照+人脸识别,免费人脸识别插件,前端人脸识别解决方案,uniapp H5人脸识别带前后摄像头,人脸识别在H5页面进行采集,微信公众号H5人脸核身,H5端人脸识别功能实现,免费h5人脸识别插件方案,微信公众号H5网页实现人脸识别,uniapp人脸监测,uniapp人脸生物监测,使用uniapp开发H5人脸采集功能/人脸识别功能,uniapp项目—h5端人脸采集功能实现,uniapp vue3人脸核身,H5活体检测认证,人脸认证张嘴摇摇头指引动作,人脸核身 微信

🏆 前端领域优质创作者 3809

java-spring 图灵 02 手写spring

01。

qq_38757863的博客 361

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Spring注解驱动开发(部分源码原理)笔记 (一) 组件的注册

Spring的容器类 xmlBean配置容器类: ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml"); 注解Bean配置容器类(): ApplicationContext applicationContext = new AnnotationConfigApplicationContext("com.i9577.config"); ApplicationContext app

酒舞叮叮的博客 286

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Spring对注解(Annotation)处理源码分析1——扫描和读取Bean定义

1.从Spring2.0以后的版本中,Spring也引入了基于注解(Annotation)方式的配置,注解(Annotation)是JDK1.5中引入的一个新特性,用于简化Bean的配置,某些场合可以取代XML配置文件。开发人员对注解(Annotation)的态度也是萝卜青菜各有所爱,个人认为注解可以大大简化配置,提高开发速度,同时也不能完全取代XML配置方式,XML 方式更加灵活,并且发展的相对

caodaoxi的专栏 680

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

乱写Spring源码之程序启动和自动注入。

到底是什么

weixin_43788143的博客 232

简单手写Spring

看视频跟着做完后小结一下,表达仅为个人理解,代码逻辑不严谨,仅供参考

Hands_are_hot的博客 217

【Spring(七)】带你手写一个Spring容器

以上就是我们手写的一个简易的Spring,主要是帮助大家理解Spring的基本执行流程。如果文章中有描述不准确或者错误的地方,还望指正。您可以留言📫或者私信我。🙏!!

喃灬疯的博客 534

手写spring1

新建maven项目,项目里面什么都没有,pom.xml没有任何依赖 java目录下建两个包:com.spring,和com.zhouyu spring包中新建,ZhouyuApplicationContext类,这是一个容器类。这个容器类里需要有构造函数,而且构造函数里面传class文件(spring的配置文件)。容器类里面还要有getbean方法。 初始api: zhouyu包里面的Test类,用来测试我写的spring框架 这里面需要一个参数,表示当前用户需要传给spring的一个sp

开心 983

纯手写SpringFramework-第一代(原创)

纯手写SpringFramework-第一代

Yyyy的博客 3148

Spirng 痛苦源码学习(二)——手写spring大致总框架(一)

Spirng 痛苦源码学习(二)——手写spring大致总框架(一) 1、容器 2、前置后置处理器 3、依赖注入

weixin_46643875的博客 981

手写 spring 框架

手写 spring ,理清 spring 启动流程

qq_63306097的博客 333

Spring - 手写模拟Spring底层原理

容器类ZSJApplicationContext 定义注解@Autowired @Component @Scope @ComponentScan 定义后置处理器BeanPostProcessor,用于初始化 ZSJBeanPostProcessor实现BeanPostProcessor 定义初始化接口InitializingBean

weixin_43874650的博客 289

ioc容器的实现方法有哪些_自己动手实现一个简单的 IOC容器

控制反转,即Inversion of Control(IoC),是面向对象中的一种设计原则,可以用有效降低架构代码的耦合度,从对象调用者角度又叫做依赖注入,即Dependency Injection(DI),通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的容器,将其所依赖的对象的引用传递给它,也可以说,依赖被注入到对象中,这个容器就是我们经常说到IOC容器。Sping及Spr...

weixin_39850920的博客 136

试写spring了解spring机制

spring扫描和依赖注入

pu33ycat的博客 138
上一篇: Spring容器的依赖注入注解
下一篇: 静态代理
JSON_ZJS
博客等级 码龄9年 30粉丝 159原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值