立即前往

活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
查看全部活动
热门活动
  • 智算采购季 热销S6云服务器2核4G限时88元/年起,部分主机可加赠对象存储组合包!
  • 免费体验DeepSeek,上天翼云息壤 NEW 新老用户均可免费体验2500万Tokens,限时两周
  • 云上钜惠 HOT 爆款云主机全场特惠,更有万元锦鲤券等你来领!
  • 算力套餐 HOT 让算力触手可及
  • 天翼云脑AOne NEW 连接、保护、办公,All-in-One!
  • 一键部署Llama3大模型学习机 0代码一键部署,预装最新主流大模型Llama3与StableDiffusion
  • 中小企业应用上云专场 产品组合下单即享折上9折起,助力企业快速上云
  • 息壤高校钜惠活动 NEW 天翼云息壤杯高校AI大赛,数款产品享受线上订购超值特惠
  • 天翼云电脑专场 HOT 移动办公新选择,爆款4核8G畅享1年3.5折起,快来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

智算服务

打造统一的产品能力,实现算网调度、训练推理、技术架构、资源管理一体化智算服务
智算云(DeepSeek专区)
科研助手
  • 算力商城
  • 应用商城
  • 开发机
  • 并行计算
算力互联调度平台
  • 应用市场
  • 算力市场
  • 算力调度推荐
一站式智算服务平台
  • 模型广场
  • 体验中心
  • 服务接入
智算一体机
  • 智算一体机
大模型
  • DeepSeek-R1-昇腾版(671B)
  • DeepSeek-R1-英伟达版(671B)
  • DeepSeek-V3-昇腾版(671B)
  • DeepSeek-R1-Distill-Llama-70B
  • DeepSeek-R1-Distill-Qwen-32B
  • Qwen2-72B-Instruct
  • StableDiffusion-V2.1
  • TeleChat-12B

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场创新解决方案
办公协同
  • WPS云文档
  • 安全邮箱
  • EMM手机管家
  • 智能商业平台
财务管理
  • 工资条
  • 税务风控云
企业应用
  • 翼信息化运维服务
  • 翼视频云归档解决方案
工业能源
  • 智慧工厂_生产流程管理解决方案
  • 智慧工地
建站工具
  • SSL证书
  • 新域名服务
网络工具
  • 翼云加速
灾备迁移
  • 云管家2.0
  • 翼备份
资源管理
  • 全栈混合云敏捷版(软件)
  • 全栈混合云敏捷版(一体机)
行业应用
  • 翼电子教室
  • 翼智慧显示一体化解决方案

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
  • 天翼云EasyCoding平台
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼云东升计划
  • 适配中心
  • 东升计划
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
开放能力
  • EasyCoding敏捷开发平台
培训与认证
  • 天翼云学堂
  • 天翼云认证
魔乐社区
  • 魔乐社区

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 建议与反馈
  • 用户体验官
  • 服务保障
  • 客户公告
  • 会员中心
增值服务
  • 红心服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 产品能力
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 智算服务
  • 产品
  • 解决方案
  • 应用商城
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
    • 关系数据库SQL Server版
    • 企业主机安全
    • 云防火墙
    • CDN加速
    • 物理机
    • GPU云主机
    • 天翼云电脑(政企版)
    • 天翼云电脑(公众版)
    • 云主机备份
    • 弹性云主机
      搜索发现
      关系数据库SQL Server版企业主机安全云防火墙CDN加速物理机GPU云主机天翼云电脑(政企版)天翼云电脑(公众版)云主机备份弹性云主机
    • 文档
    • 控制中心
    • 备案
    • 管理中心
    • 登录
    • 免费注册

    Spring系列之零碎知识点

    首页 知识中心 软件开发 文章详情页

    Spring系列之零碎知识点

    2023-06-14 09:13:05 阅读次数:389

    Bean,mvc,spring

     

    ​classpath​​​和​​classpath*​​

    ​​classpath​​​和​​classpath*​​​区别:
    ​​​classpath​​​:只会到你指定的class路径中查找找文件;
    ​​​classpath*​​:不仅包含class路径,还包括jar文件中(class路径)进行查找。

    Ant风格

    ANT通配符有三种:

    通配符

    说明

    ?

    匹配任何单字符

    *

    匹配0或者任意数量的字符

    **

    匹配0或者更多的目录

    举例:

    URL路径

    说明

    /project/*.a

    匹配项目根路径下所有在project路径下的.a文件

    /project/p?ttern

    匹配项目根路径下 /project/pattern 和 /app/pXttern

    ​​/**/example​​

    匹配项目根路径下 /project/example, /project/foow/example, 和 /example

    ​​/project/**/dir/file.*​​

    匹配项目根路径下/project/dir/file.jsp, /project/foow/dir/file.html,/project/foow/bar/dir/file.pdf

    ​​/**/*.jsp​​

    匹配项目根路径下任何的.jsp 文件

    最长匹配原则(has more characters)
    现有URL请求​​​/app/dir/file.jsp​​​,假设存在两个路径匹配模式​​/**/*.jsp​​​和​​/app/dir/*.jsp​​​,那么会根据模式​​/app/dir/*.jsp​​来匹配。

    @ResponseBody 和 @RequestBody 注解的区别

    @RequestBody
    作用:

    • 该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上;
    • 把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上。

    使用时机:
    A) GET、POST方式提时, 根据request header Content-Type的值来判断:

    • application/x-www-form-urlencoded, 可选(即非必须,因为这种情况的数据@RequestParam, @ModelAttribute也可以处理,当然@RequestBody也能处理);
    • multipart/form-data, 不能处理(即使用@RequestBody不能处理这种格式的数据);
    • 其他格式, 必须(其他格式包括application/json, application/xml等。这些格式的数据,必须使用@RequestBody来处理);

    B) PUT方式提交时, 根据request header Content-Type的值来判断:

    • application/x-www-form-urlencoded, 必须;
    • multipart/form-data, 不能处理;
    • 其他格式, 必须;
      说明:request的body部分的数据编码格式由header部分的Content-Type指定;

    @ResponseBody
    作用:
    该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。通常用来返回JSON数据或者是XML数据,在使用此注解之后不会再试图走处理器,而是直接将数据写入到输入流中,效果等同于通过response对象输出指定格式的数据。
    使用时机:
    返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用;

    区别

    • Responsebody 注解表示该方法的返回的结果直接写入 HTTP 响应正文(ResponseBody)中,一般在异步获取数据时使用;
    • 在使用 @RequestMapping 后,返回值通常解析为跳转路径,加上 @Responsebody 后返回结果不会被解析为跳转路径,而是直接写入HTTP 响应正文中。例如,异步获取 json 数据,加上 @Responsebody 注解后,就会直接返回 json 数据。
    • @RequestBody 注解则是将 HTTP 请求正文插入方法中,使用适合的 HttpMessageConverter 将请求体写入某个对象。

    例子:

    @RequestMapping(value = "person/login")
    @ResponseBody
    // 将请求中的 datas 写入 Person 对象中
    public Person login(@RequestBody Person person) {
        // 不会被解析为跳转路径,而是直接写入 HTTP 响应正文中
        return person;
    }

    参考

    • ​​@RequestBody, @ResponseBody 注解详解​​

    @RequestParam,@PathVariable等注解

    @RequestMapping(value = "/test/{uid}", method = RequestMethod.GET)
    public void get(@RequestParam(value = "nickname", required = false, defaultValue = "johnny" ) String name, @PathVariable String uid) {
    }

    请求 URL 是 http://localhost:8080/test/1234435?nickname=wong
    @RequestParam 是"?"后面的 URL 的一部分,支持下面三种参数:

    • defaultValue 如果本次请求没有携带这个参数,或者参数为空,那么就会启用默认值;
    • required 这个参数表示是不是必须的,默认为 true;
    • value 定义 key-value 键值对里面的键。

    @PathVariable是"?"前面的URL的一部分。

    根据上面的示例可知,接口方法定义时,@RequestParam 后面的变量定义 可以和前面的 value 里面的定义不相同,但是"?"后面的 key-value 键值对必须是 value 定义的键。但是@PathVariable 后面的变量定义必须和接口的 URL 里面的,即@RequestMapping 里面 value 定义的大括号 {} 相同。
    两者的作用都是将request里的参数的值绑定到contorl里的方法参数里的,这两个在 web 开发,即接口开发中,使用最多,都是 spring 框架里面的注解。

    @PathParam
    这个注解是和spring的pathVariable是一样的,也是基于模板的,jboss包下面的一个实现。
    @QueryParam 是 JAX-RS 本来就提供的,和Spring的RequestParam作用一致

    SpringMVC @Response 返回String中文乱码

    项目开发中如果没有遇到乱码,那你可能不是一个真正的开发;遇到乱码,总是习惯性去网上乱搜一气,实际上乱码的根源会有很多种情况,现象也不一样。这方面,目前菜逼的我也是乱搜一气,先排除一些不靠谱的解决方案,然后去尝试那些有理有据,适合自己项目情况的解决方案,假如成功,就了事,也没有时间和激情去追本溯源(需要改正),不行就换一种解决方法;
    另,关于乱码,建议多度几遍《深入分析Java Web技术内幕》书籍的第三章:深入分析Java Web中的中文编码问题。
    现在遇到的一种情况是,spring web响应乱码。一种可行的解决方法:
    在springMVC的配置文件中(springMVC-xx.xml),修改​​​<mvc:annotation-driven/>​​为:

    <mvc:annotation-driven>
      <mvc:message-converters register-defaults="true">
        <bean class="org.springframework.http.converter.StringHttpMessageConverter">
          <constructor-arg value="UTF-8" />
        </bean>
      </mvc:message-converters>
    </mvc:annotation-driven>

    乱码原因:org.springframework.http.converter.StringHttpMessageConverter有个final修饰的Charset DEFAULT_CHARSET=Charset.forName(“ISO-8859-1”)常量。即当返回类型为String时,返回类型为text/plain,字符被设置为默认字符ISO-8859-1。

    @Required注解检查依赖

    依赖检查,该注解只能用在set方法上,并通过xml文件的property属性注入。一旦用了这个注解,那么容器在初始化bean的时候必须要进行set,也就是说必须对这个值进行依赖注入。

    @Primary & @Qualifier

    @Qualifier

    This annotation may be used on a field or parameter as a qualifier for candidate beans when autowiring. It may also be used to annotate other custom annotations that can then in turn be used as qualifiers.

    这个注释可用于作为预备bean的字段或参数,也可以用在其他的自定义注释下;@Qualifier(“XXX”),Spring的Bean注入配置注解,该注解指定注入的Bean的名称,Spring框架使用byName方式寻找合格的bean,这样就消除byType方式产生的歧义。

    @Primary

    Indicates that a bean should be given preference when multiple candidates are qualified to autowire a single-valued dependency. If exactly one ‘primary’ bean exists among the candidates, it will be the autowired value. This annotation is semantically equivalent to the {@code } element’s {@code primary} attribute

    配置文件

    虽然有 Java Config,基于Java类定义Bean配置元数据中的@Configuration注解的类等价于XML配置文件,@Bean注解的方法等价于XML配置文件中的Bean定义。基于Java类定义Bean配置元数据需要通过AnnotationConfigApplicationContext加载配置类及初始化容器,类似于XML配置文件需要使用ClassPathXmlApplicationContext加载配置文件及初始化容器。

    但是 XML 还有用武之地,不可能被淘汰;

    <context:component-scan
            base-package="com"
            resource-pattern="**/*.class"
            name-generator="org.springframework.context.annotation.AnnotationBeanNameGenerator"
            use-default-filters="true"
            annotation-config="true">
        <context:include-filter type="aspectj" expression="*"/>
        <context:exclude-filter type="regex" expression="aa"/>
    </context:component-scan>

    默认情况下将自动扫描@Component、@ManagedBean、@Named注解的类并将其注册为Spring管理Bean。注意:@Aspect注解不能被Spring自动识别并注册为Bean。
    base-package:表示扫描注解类的开始位置,即将在指定的包中扫描,其他包中的注解类将不被扫描,默认将扫描所有类路径;
    resource-pattern:表示扫描注解类的后缀匹配模式,即 “base-package+resource-pattern” 将组成匹配模式用于匹配类路径中的组件,默认后缀为 “**/*.class”,即指定包下的所有以​​​.class​​​结尾的类文件;
    name-generator:默认情况下的Bean标识符生成策略,默认是AnnotationBeanNameGenerator,其将生成以小写开头的类名(不包括包名);可以自定义自己的标识符生成策略;
    use-default-filters:默认为true表示扫描@Component、@ManagedBean、@Named注解的类,如果改为false默认将不扫描这些默认的注解来定义Bean,即这些注解类不能被扫描到,即不能通过这些注解进行Bean定义;
    annotation-config:表示是否自动支持注解实现Bean依赖注入,默认支持;设置为false,将关闭支持注解的依赖注入:​​​annotation-config="false"​​​。
    exclude-filter:比include-filter具有更高优先级;type:表示过滤器类型,目前支持注解类型、类类型、正则表达式、aspectj表达式过滤器,当然也可以自定义自己的过滤器,实现org.springframework.core.type.filter.TypeFilter即可;expression:表示过滤器表达式。

    ​​<aop:aspectj-autoproxy proxy-target-class="true"/>​​​用于开启Spring对@AspectJ风格切面的支持。
    ​​​default-lazy-init="true">​​:

    版权声明:本文内容来自第三方投稿或授权转载,原文地址:https://blog.51cto.com/u_15851118/5804873,作者:johnny233,版权归原作者所有。本网站转在其作品的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如因作品内容、版权等问题需要同本网站联系,请发邮件至ctyunbbs@chinatelecom.cn沟通。

    上一篇:Spring Boot Actuator入门简介

    下一篇:pycharm设置默认注释

    相关文章

    2025-04-18 07:09:19

    深入理解Spring中的Bean循环依赖与解决机制

    Bean循环依赖是指两个或多个Bean之间相互依赖,形成依赖闭环的情况。例如,Bean A依赖Bean B,而Bean B又依赖Bean A。这种情况下,如果没有特殊处理,容器将无法正确初始化这些Bean,从而导致应用启动失败。

    2025-04-18 07:09:19
    Bean , Spring , 依赖 , 初始化 , 循环 , 缓存 , 解决
    2025-04-14 08:48:01

    Java注解实现之how to use path variable @PathVariable

    Java注解实现之how to use path variable @PathVariable

    2025-04-14 08:48:01
    Java , spring
    2025-04-14 08:45:36

    Java SpringBoot 应用使用命令行 mvn spring-boot run 启动的原理

    将应用程序打包为 jar 并使用嵌入式 HTTP 服务器的最大优势之一是可以像运行其他任何应用程序一样运行这些提供了 Web 功能的应用程序。 调试 Spring Boot 应用程序也很容易; 不需要任何特殊的 IDE 插件或扩展。

    2025-04-14 08:45:36
    jar , spring , 应用程序
    2025-04-09 09:11:38

    spring boot设置session超时时长(自定义spring boot session超时时长)

    spring boot设置session超时时长(自定义spring boot session超时时长)

    2025-04-09 09:11:38
    boot , session , spring , 设置 , 超时
    2025-04-01 10:16:07

    深入解析 Spring Bean 的生命周期

    深入解析 Spring Bean 的生命周期

    2025-04-01 10:16:07
    Bean , Spring , 初始化 , 执行 , 接口 , 生命周期
    2025-03-28 07:42:20

    Spring IOC 容器初始化流程深度解析

    Spring IOC 容器初始化流程深度解析

    2025-03-28 07:42:20
    Bean , IOC , Spring , 初始化 , 加载 , 容器
    2025-03-25 08:08:59

    spring boot项目设置默认访问路径(页面)方法,包括spring boot 2.0及以上版本实现方法

    spring boot项目设置默认访问路径(页面)方法,包括spring boot 2.0及以上版本实现方法

    2025-03-25 08:08:59
    boot , spring , 代码 , 访问 , 页面 , 默认
    2025-03-25 08:08:18

    Spring Boot Application的启动过程 - 加载应用上下文

    Spring Boot Application的启动过程 - 加载应用上下文

    2025-03-25 08:08:18
    Bean , org
    2025-03-25 08:08:18

    spring boot整合mybatis和hikariCP时遇到 jdbcUrl is required with driverClassName 错误的解决方法

    spring boot整合mybatis和hikariCP时遇到 jdbcUrl is required with driverClassName 错误的解决方法

    2025-03-25 08:08:18
    jdbc , spring , url , 数据库 , 数据源 , 配置文件
    2025-03-25 08:08:18

    ssm(Spring+Spring mvc+mybatis)Service层接口——IDeptService

    ssm(Spring+Spring mvc+mybatis)Service层接口——IDeptService

    2025-03-25 08:08:18
    mvc , mybatis , Service , Spring
    查看更多
    推荐标签

    作者介绍

    天翼云小翼
    天翼云用户

    文章

    32777

    阅读量

    4818204

    查看更多

    最新文章

    深入理解Spring中的Bean循环依赖与解决机制

    2025-04-18 07:09:19

    Java注解实现之how to use path variable @PathVariable

    2025-04-14 08:48:01

    Java SpringBoot 应用使用命令行 mvn spring-boot run 启动的原理

    2025-04-14 08:45:36

    深入解析 Spring Bean 的生命周期

    2025-04-01 10:16:07

    Spring IOC 容器初始化流程深度解析

    2025-03-28 07:42:20

    spring boot项目设置默认访问路径(页面)方法,包括spring boot 2.0及以上版本实现方法

    2025-03-25 08:08:59

    查看更多

    热门文章

    SpringMVC的JSON处理及FastJSON的整合使用(七)

    2022-12-27 10:00:39

    Java(Spring拦截器、过滤器、AOP)

    2023-06-20 09:11:08

    Spring AOP-有接口的CGLIB动态代理

    2022-12-29 09:29:46

    基于XML的DI-为Spring配置多个子配置文件——平等关系

    2022-12-29 09:29:46

    基于注解的DI-Spring的JUnit4测试

    2022-12-29 09:29:46

    Spring5入门到实战------2、IOC容器底层原理

    2023-02-28 10:45:09

    查看更多

    热门标签

    java Java python 编程开发 开发语言 代码 算法 线程 html Python 数组 C++ javascript c++ 元素
    查看更多

    相关产品

    弹性云主机

    随时自助获取、弹性伸缩的云服务器资源

    天翼云电脑(公众版)

    便捷、安全、高效的云电脑服务

    对象存储

    高品质、低成本的云上存储服务

    云硬盘

    为云上计算资源提供持久性块存储

    查看更多

    随机文章

    从Spring源码中学习如何查找自定义注解

    Spring中bean的生命周期

    Knife4j注解【Swagger2 、 OpenAPI3】

    ssh(Spring+Spring mvc+hibernate)——showEmp.jsp

    Spring 测试运行的时候提示 Unable to find a @SpringBootConfiguration 错误

    【Spring 专场】「IOC 容器」不看源码就带你认识核心流程以及运作原理

    • 7*24小时售后
    • 无忧退款
    • 免费备案
    • 专家服务
    售前咨询热线
    400-810-9889转1
    关注天翼云
    • 权益商城
    • 天翼云APP
    • 天翼云微信公众号
    服务与支持
    • 备案中心
    • 售前咨询
    • 智能客服
    • 自助服务
    • 工单管理
    • 客户公告
    • 涉诈举报
    账户管理
    • 管理中心
    • 订单管理
    • 余额管理
    • 发票管理
    • 充值汇款
    • 续费管理
    快速入口
    • 权益商城
    • 文档中心
    • 最新活动
    • 免费试用
    • 信任中心
    • 天翼云学堂
    云网生态
    • 甄选商城
    • 渠道合作
    • 云市场合作
    了解天翼云
    • 关于天翼云
    • 天翼云APP
    • 服务案例
    • 新闻资讯
    • 联系我们
    热门产品
    • 云电脑
    • 弹性云主机
    • 云电脑政企版
    • 天翼云手机
    • 云数据库
    • 对象存储
    • 云硬盘
    • Web应用防火墙
    • 服务器安全卫士
    • CDN加速
    热门推荐
    • 云服务备份
    • 边缘安全加速平台
    • 全站加速
    • 安全加速
    • 云服务器
    • 云主机
    • 智能边缘云
    • 应用编排服务
    • 微服务引擎
    • 共享流量包
    更多推荐
    • web应用防火墙
    • 密钥管理
    • 等保咨询
    • 安全专区
    • 应用运维管理
    • 云日志服务
    • 文档数据库服务
    • 云搜索服务
    • 数据湖探索
    • 数据仓库服务
    友情链接
    • 中国电信集团
    • 189邮箱
    • 天翼企业云盘
    • 天翼云盘
    ©2025 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
    公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
    • 用户协议
    • 隐私政策
    • 个人信息保护
    • 法律声明
    备案 京公网安备11010802043424号 京ICP备 2021034386号