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

一篇搞懂SpringMVC XML 配置标签<context:component-scan>

1. 作用

自动注解扫描

Spring 会扫描base-package指定包下所有类,识别 Spring 注解并自动创建 Bean 放入容器,不用手动写<bean>标签。

常用识别注解:

  • @Controller(控制器,SpringMVC 专用)
  • @Service(业务层)
  • @Repository(DAO 层)
  • @Component(通用组件)

例子:

<context:component-scan base-package="com.zhu.controller"/>

只扫描com.zhu.controller包,只会把该包下加了@Controller的控制器交给 Spring 管理。

2. 必须配套的 xmlns 约束

<context:xxx>属于context命名空间,beans 根标签必须声明

xmlns:context="http://www.springframework.org/schema/context"

同时还要补充对应的xsi:schemaLocation地址,否则 XML 报错、标签无法识别。

完整 beans 头部模板(复制直接用)

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <!-- 你说的context命名空间 --> xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd <!-- context约束地址 --> http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 扫描controller包,加载@Controller控制器 --> <context:component-scan basepackage="com.zhu.controller"/> </beans>

3. 常用扩展写法

(1)扫描多个包

逗号分隔:

<context:component-scan base-package="com.zhu.controller,com.zhu.service"/>

(2)只扫描 @Controller(SpringMVC 常用)

<context:component-scan base-package="com.zhu"> <!-- 只包含Controller注解 --> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/> <!-- 排除其他,避免重复实例化 --> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/> </context:component-scan>

4. 和 SpringMVC 的关联

  1. 该标签写在springmvc.xml(SpringMVC 容器配置文件)

  2. 配合<mvc:annotation-driven/>使用,开启@RequestMapping请求映射、参数绑定、JSON 转换等 MVC 注解功能

    最简完整 SpringMVC 核心片段:

<!-- 扫描控制器注解 --> <context:component-scan base-package="com.zhu.controller"/> <!-- 开启SpringMVC注解驱动 --> <mvc:annotation-driven/>

5. 报错排查

如果报cvc-complex-type.2.4.a: 找不到元素 'context:component-scan' 的声明

原因:beans 头部缺少 xmlns:context 或对应的 xsd 约束地址,补上上面的命名空间即可。

http://www.jsqmd.com/news/1093380/

相关文章:

  • Linux x86-64 DMA映射探秘(二)——SWIOTLB的bounce buffer机制
  • 计算机Java毕设实战-网络域名资源信息化管理平台设计与实现 面向企业的 Web 域名运维管理系统设计【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 计算机Java毕设实战-轻量化网络博客发布平台的设计与实现基于 SpringBoot 的在线文章发布管理系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • LLM Serving 进入下半场:Prefill/Decode 解耦架构、KV 迁移与 PD 调度工程实践
  • 浅谈src挖掘中—文件上传和XSS漏洞的组合拳,网络安全零基础入门到精通实战教程!
  • Win11Debloat终极指南:4步快速清理Windows系统,性能提升70%
  • 【从零开始学架构】状态机不是增加架构复杂度,而是停止猜测
  • 私域直播SaaS大乱斗:小鹅通、微赞、有赞、悦邻,到底谁更适合“卖菜”的?
  • 将 Rust 绑定到 .NET 10:Oxigraph 的 FFI 桥接实践
  • 【毕业设计】基于 SpringBoot 的文章发布与评论互动博客系统 个人博文编辑、分类与归档管理系统设计与实现(源码+文档+远程调试,全bao定制等)
  • 第11章:对话管理与会话持久化
  • 国内智慧交通数字孪生头部企业汇总,一站式建设方案对比推荐
  • 盯盘与研究辅助AI工具选择与流程适配指南
  • 2026 珠三角磁吸手机支架转轴源头厂家盘点|5 家实体工厂选型指南
  • Rust的Send与Sync:理解线程安全标记trait
  • Prisma安装使用
  • 从0到1:企业级AI项目迭代日记 Vol.56|每一个“差点能用”,都是一次真实的用户流失
  • 用AI自动提取小红书抖音脚本文案,同步Obsidian素材库
  • 162.乐理进阶:和声大调与旋律大调的实战应用与听觉辨识
  • 告别传统写作繁琐流程:gradpaper 的全流程辅助模式新在哪?
  • 拒绝玄学调参!开发者必修的 Prompt Engineering 十二式核心心法
  • 5分钟免费实现VR视频转2D播放的终极方案
  • Lemo-AI vs 顶尖产品:记忆驱动的智能革命
  • GPT-5.6发布前被叫停
  • MSPM0 DEBUGSS调试子系统:从SWD接口到功耗分析与安全控制
  • 海洋定点长期流速观测该选用哪款单点海流计?偶信告诉你答案
  • AI大模型就业:实践笔记 93
  • 密码学系列之流密码RSAECC等
  • NET 代码保护实战:从混淆到虚拟机保护
  • 【课程设计/毕业设计】基于 SpringBoot 的博客点赞收藏与数据统计系统 校园知识分享博客管理系统的设计与实现【附源码、数据库、万字文档】