Spring 包扫描

modelsim软件安装教程及踩坑(极简版) 1.安装的网盘链接:链接:https://pan.baidu.com/s/1ltUfssyXlCnqDmLhWyhlwA提取码:jery 2.步骤(参考博文):https://blog.csdn.net/weixin_42693097/article/details/90523692?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163521788716780357213801%2522%252C%2522scm%2522%253A%2522 阅读详情

这是入口

public class BeanScannerConfigurer implements BeanFactoryPostProcessor, ApplicationListener<ContextRefreshedEvent> {
    private Scanner scanner;

    public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
        scanner = new Scanner((BeanDefinitionRegistry) beanFactory);
    }

    @Override
    public void onApplicationEvent(ContextRefreshedEvent event) {
        if (event.getApplicationContext().getParent() == null) {
            scanner.setResourceLoader(event.getApplicationContext());
            scanner.scan("com.hieip");
        }
    }
}
这是扫描器主体

public final class Scanner extends ClassPathBeanDefinitionScanner {
    public Scanner(BeanDefinitionRegistry registry) {
        super(registry);
    }

    public void registerDefaultFilters() {
        this.addIncludeFilter(new AnnotationTypeFilter(Component.class));
    }

    public Set<BeanDefinitionHolder> doScan(String... basePackages) {
        Assert.notEmpty(basePackages, "At least one base package must be specified");
        Set<BeanDefinitionHolder> beanDefinitions = new LinkedHashSet<BeanDefinitionHolder>();
        for (String basePackage : basePackages) {
            Set<BeanDefinition> candidates = findCandidateComponents(basePackage);
            for (BeanDefinition candidate : candidates) {
//                candidate.hasAttribute()
                //todo 实现是否属于该注解
                Class<?> clazz = null;
                String beanClassName = candidate.getBeanClassName();
                try {
                    clazz = Class.forName(beanClassName);//反射生成对象
                } catch (ClassNotFoundException e) {
                    e.printStackTrace();
                }
                Method[] methods = clazz.getMethods();//获取方法
                for (Method method: methods
                     ) {
                    Annotation annotation = method.getAnnotation(AuthAnnotation.class);//获取权限注解
                    if(null!=annotation){//判断是否有注解
                        String beanName = beanClassName.substring(beanClassName.lastIndexOf(".")+1);
                        beanDefinitions.add(new BeanDefinitionHolder(candidate,beanName));//生成返回对象
                    }
                }
            }
        }
        return beanDefinitions;
    }

    public boolean isCandidateComponent(AnnotatedBeanDefinition beanDefinition) {
        return super.isCandidateComponent(beanDefinition) && beanDefinition.getMetadata()
                .hasAnnotation(Service.class.getName());
    }
}

【SpringBoot】1、创建第一个SpringBoot项目 创建SpringBoot项目可以通过两种方式,1、通过访问:https://start.spring.io/,SpringBoot的官方网站进行创建SpringBoot项目;2、通过工具(例如:Idea)创建SpringBoot项目。本次使用开发工具:Idea创建我的第一个SpringBoot项目。 首先,打开我们的Idea开发工具 选择Create New Poject(创建一个新的项目) ... 阅读详情

相关推荐

SpringBoot与锐浪报表服务器深度整合实战指南

本文详细介绍了SpringBoot与锐浪报表服务器的深度整合实战指南,包括环境准备、Windows/Linux系统配置、核心功能实现代码解析及常见问题解决方案。通过具体案例和代码示例,帮助开发者高效完成报表系统的集成与部署,提升企业级应用的报表处理能力。

weixin_29238147的博客 370

SpringBoot启动类自动包扫描 三种方式

spring-boot-scan-packages-example SpringBoot启动类自动包扫描 三种方式 fox.风 方式一 @SpringBootApplication 中 scanBasePackages 引入包 请看 example 案例 @SpringBootApplication(scanBasePackages={"com.fox"}) 方式二 配置 BeanConfigScanConfig 写好注解,最后配置 spring.factories 请看 example2 案例 编辑配置

风.foxwho(神秘狐) 8733

深入解析V4L2框架与高通KMD在Camera驱动中的协同设计

本文深入解析了V4L2框架与高通KMD在Camera驱动中的协同设计。V4L2作为Linux内核标准视频驱动框架,提供了统一的设备抽象与数据流管理;而高通KMD则在其基础上,通过引入CRM等核心模块,构建了一套针对移动平台复杂相机系统的高效内核态驱动架构,实现了硬件配置与执行的解耦与智能调度。

qq_27496129的博客 1148

解决Spring Data Jpa 实体类自动创建数据库表失败问题

jpa

LuckyTHP 3380

BLE天线设计避坑:NRF52832官方50欧姆阻抗匹配的3个常见误区

本文深入解析NRF52832蓝牙SoC天线设计中的常见误区,重点探讨50欧姆阻抗匹配的3个关键问题:PCB板材介电常数差异、匹配元件寄生参数及VSWR测试。通过实测数据和优化方案,帮助工程师规避设计陷阱,提升BLE通信性能。

beer8的博客 214

AIGC游戏本地化:用AI实现多语言自动翻译

游戏本地化是游戏全球化战略的关键环节,传统人工翻译方式成本高、周期长。本文旨在探讨如何利用AIGC技术实现高效、准确、低成本的游戏多语言自动翻译解决方案。我们将覆盖从文本翻译到语音合成的完整本地化流程,重点关注AI技术在游戏特定语境下的应用优化。文章首先介绍游戏本地化的核心挑战和AI解决方案,然后深入讲解关键技术原理,接着通过实战项目演示具体实现,最后讨论应用场景和未来趋势。AIGC:人工智能生成内容,指利用AI技术自动生成文本、图像、音频等内容本地化(Localization)

AI 领航者的博客 1339

Spring高手之路10——解锁Spring组件扫描的新视角

这篇文章详细讲解了Spring包扫描的各种特性和策略,包括基础的包扫描路径设置,按注解过滤,正则表达式过滤,Assignable类型过滤,以及自定义过滤等多种过滤策略。同时,文章还深入分析了Spring是如何生成默认bean名称的源码,并介绍了Java的内省机制在生成默认bean名称中的应用。这篇文章为你成为Spring高手打下坚实的基础。

卓越无关环境,保持空杯心态——靡不有初,鲜克有终 1万+

【异常】安装hermes-agent时Git克隆大仓库报错:error: RPC failed; curl 92 HTTP/2 stream 5 was not closed cleanly: CAN

摘要:本文分析了Ubuntu服务器执行Git递归克隆时出现的网络传输中断错误(HTTP/2流异常关闭、数据截断)。主要原因是网络限制、协议兼容问题和缓冲区不足。提供了四种解决方案:1)扩大Git HTTP缓冲区;2)切换为HTTP/1.1协议;3)采用浅克隆+分步拉取子模块;4)网络优化措施。重点推荐浅克隆分步拉取作为最有效方案,所有方法无需重启即可生效,可快速解决大仓库递归克隆失败问题。

奶爸的编程之路,也就一周冷个三天 670

spring入门——如何实现包扫描

如何实现包扫描spring中的包扫描如何实现呢?自己实现源码验证反思与总结spring的实现spring的源码反思与总结 spring中的包扫描 在spring中有两种方式可以实现包扫描 传统的xml配置方式 <!--配置扫描com.example.spring.beans下的所有bean--> <context:component-scan base-package="com.example.spring.beans"/> 基于注解的方式 @Configuration @

wx的博客 1万+

图解电动汽车:电动汽车的分类

前面《电动汽车简介》中简单介绍了电动汽车的分类,主要包括混合动力电动汽车(HEV)和纯电动汽车(BEV)两大类。其中,混合动力汽车又可分为非插电式混合动力汽车、插电式混合动力汽车(PHEV)以及增程式电动汽车(REEV)。 主要分类 简单来说,各类电动汽车的特点如下。 纯电动汽车(BEV)就是指动力来源完全由电能提供,由电动机驱动的汽车,并且电能储存在电池中。 混合动力汽车(HEV)则是指动力来源可以是化石燃料,也可以是电能,并且电能除了可以存储在电池中,还可以由化石能源转化而来。 非插电式混合动力汽车

程序员「阿基米东」的编程之旅 3089

点云从入门到精通技术详解100篇-基于点云语义分割的电力线提取及聚类研究

在现代社会,电力一直扮演着最重要的角色之一。它不仅与人民的生活息息相关,更是一个国家发展的命脉。近年来,随着我国各特高压输电线路建成(比如2022年1月份白鹤滩江苏特高压输电线路的放线)以及电网规模的不断扩大,我国年发电量稳步上升,人民的生活水平越来越高。我国土地辽阔,输电线路分布广泛,再加上地形环境复杂多样,电力线可能遭受风吹雨晒甚至是冰雪寒灾的影响。因此,为了保障电力线的可靠供电,防止停电意外发生,电力部门要定期对输电线路进行检查。目前我国主要。

getusushu的博客 1010

spring启动流程(二):包的扫描流程

本文比较长,主要分析了spring 扫描包路径得到根据包名得到路径Resource;根据路径Resouce得到该路径下所有class文件的Resouce;根据class文件的Resouce通过asm解析得到,注意:这里的还是所有class文件的;从中找到需要spring托管的,将其转化为,为的子类;进一步丰富的信息;将上面得到的添加到中至此,包名转换为完成。spring 在获取类上的注解时,不是通过反射,而是使用asm直接解析class文件,然后再获取类上的注解的。

BASK2312的博客 2438

1985-2021年30m全国逐年土地覆被数据(含分省数据)

基于CLCD,揭示了1985年至2019年期间中国土地覆被变化的趋势和模式,如不透水表面(+148.71%)和水(+18.39%)的扩大,耕地(-4.85%)和草地(-3.29%)的减少,以及森林(+4.34%)的增加。由于中国的一系列造林政策,如1980年代启动的三北防护林工程和2000年后启动的绿色增益工程,从1985年到 2019年,森林增加了4.34%,灌木减少了259万公顷,与 ESACCI_LC的减少趋势相似。尽管为了养活不断增长的人口,中国东北和西北地区进行了广泛的开垦,但耕地普遍减少。

J_Giser的博客 1471

Spring 注解-包扫描

4、包扫描 只要标注了@Controller、@Service、@Repository、@Component的,都会被扫描加入到容器里 **注意:**配置类自身也会被扫描到容器中,如果存在多个配置类,则多个配置类里的所有bean对象都会被扫描进容器中 4.2、注解扫描 在配置类上添加注解@ComponentScan @Configuration // 告诉Spring这是一个配置类 @ComponentScan(value = "com.xjhqre") public class MainC

qq_37138380的博客 3398

精雕软件(JDpaint) 5.5 绿色版

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

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

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

spring 配置扫描多个包

spring 配置扫描多个包

无知人生,记录点滴 3万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

spring包扫描配置

方法一: applicationContext.xml &lt;!-- 扫描包 --&gt; &lt;context:component-scan base-package="com.project" /&gt; 不想扫描多余的controller解决办法: &lt;context:component-scan base-package="com.project.web.service,com....

sikedaima的博客 3638

模拟Spring扫描包

模拟Spring扫描包 转载的是老师的博客,只是写了一些注释,便于理解。原博客地址: https://blog.csdn.net/kongfanyu/article/details/103930414 通过自定义注解扫描包及子包下的所有类,并通过反射创建对象. 定义注解 package com.hanker.domain12; import java.lang.annotation.Elemen...

weixin_44197039的博客 296

Spring和Spring MVC容器分开包扫描

1. Spring MVC容器 一般来说,Spring MVC主要负责的是Controller层,所有可以简单的把配置文件写为 &amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt; &amp;lt;beans xmlns=&quot;http://www.springframework.org/schema/beans&quot;

不再更新,新博客 chgl16.space 667

spring原理之扫描包

spring的心得感悟

huanleshidai的博客 1081

为何Spring包扫描配置后,SpringMVC依旧要开启包扫描

最近配置新工程时突然产生一个疑问,为什么Spring配置文件开启了包扫描,扫描了全部包,而SpringMVC配置依旧要去配置controller层的包扫描。 带着问题自己去做了几个测试: 1.Spring开启全包扫描,SpringMVC不开启 编译成功,项目运行失败(url映射找不到,说明Controller没有实例化) 2.Spring开启全包扫描,SpringMVC开...

ys.hubery 1128

Spring包扫描

在Spring框架中,包扫描(package scanning)是指Spring容器扫描指定的包以及其子包,自动发现和注册标注了特定注解的组件(如@Component、@Service、@Repository等)到Spring容器中。Spring Boot会自动扫描启动类所在的包及其子包,以及其他配置类所在的包及其子包,注册所有标注了。通过这种方式,你可以灵活地指定要扫描的包,使得Spring Boot能够自动发现并注册你的组件。包及其子包,自动发现并注册标注了特定注解的组件。注解来指定要扫描的包。

qq_61818443的博客 551

Spring包扫描机制详解

声明:源码基于4.3.18 目标 此篇文章会主要介绍Spring中两个非常重要的关于包扫描的基础类,由于Spring代码太庞大,因此本文不会细致地说明每一行代码地作用,只会讲清楚关键的地方有什么作用,以及一些子类可以重写的方法,用来覆盖默认扫描行为。最后会基于Spring提供的包扫描设施来写一个简单的例子来模仿MyBatis-Spring扫描Mapper接口,生成代理注册到容器中。我们主要关注...

weixin_30929011的博客 652

如何指定Spring要扫描的包位置

如果你希望 Spring 扫描特定的包,可以使用注解,手动指定要扫描的包位置。默认情况下,使用启动类会自动扫描与主类同目录及子目录下的所有 Bean。如果你希望扫描其他包,可以使用注解明确指定要扫描的包位置。通过这种配置,Spring 能够灵活地发现和注册需要管理的 Beans,使得开发者可以在各个层次有效地使用构建的组件。

qgqceo的博客 673

spring和springMVC扫描包的问题

最近配置新工程时突然产生一个疑问,为什么Spring配置文件开启了包扫描,扫描了全部包,而SpringMVC配置依旧要去配置controller层的包扫描。 带着问题自己去做了几个测试: 1.Spring开启全包扫描,SpringMVC不开启 编译成功,项目运行失败(url映射找不到,说明Controller没有实例化) 2.Spring开启全包扫描,SpringMVC开启仅Handler(...

qq_35500685的博客 461

springMVC和spring的包扫描

springmvc 的配置文件 和 spring 的配置文件都可以配置包扫描,如下: [code="xml"] [/code] 一般将controller的扫描配置在springmvc 的配置文件中,将service和dao的扫描配置在spring的配置文件中. 即 springmvc 只扫描controller的包, spring扫描其他组件. 不要让两个扫描有重叠.原...

u012997186的博客 954

定义Spring的包扫描规则

定义Spring的包扫描规则 适用场景: 对于下面这样的建包方式,如果在spring的xml中想要自定义扫描所有的controller又不想扫描到service包下面的Bean 具体做法:是根据注解的类型进行分类区分 在父容器的配置文件中排除controller <context:component-scan base-package="com.example"> <context:exclude-filter type="annotation" express

GuessHat的博客 460

Spring注解实现扫描包

Spring可以自动扫描指定包中的类,并根据类上的注解(如@Component, @Service, @Repository, @Controller等)来创建和注册bean。(5)@Autowried ------>注入的属性是引用数据类型。(2)@service ------> service层的注解。(4)@value ------>注入的是基本数据类型的属性。(3)@Repository ------->Dao层。(1)@Commponet ------>最大的注解。简单代码的实现就是这样子。

cfjbcg的博客 1130
上一篇: springboot初始化bean扫描
下一篇: 解决Springboot中Interceptor拦截器中依赖注入失败
小光哥C3P0
博客等级 码龄9年 1粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值