首页 > 其他分享 >【Spring原理分析-Scope+Spring Boot自定义静态资源映射】

【Spring原理分析-Scope+Spring Boot自定义静态资源映射】

时间:2023-04-07 17:35:37浏览次数:59  
标签:自定义 映射 静态 Spring Boot 如下 Scope

Spring原理分析-Scope

本文纲要:

一、Scope
1、Scope类型

2、基础准备与演示

二、Scope失效
1、基础准备与演示
2、失效原因及处理
3、总结


下面开始进入正文:

一、Scope

1、Scope类型

singleton, prototype, request, session, application

2、基础准备与演示

  • ① 编写各种Scope的Bean

request类型,如下:

【Spring原理分析-Scope+Spring Boot自定义静态资源映射】_html

session类型,如下:

【Spring原理分析-Scope+Spring Boot自定义静态资源映射】_html_02

application类型,如下:

【Spring原理分析-Scope+Spring Boot自定义静态资源映射】_静态资源_03

  • ② 编写Controller类

【Spring原理分析-Scope+Spring Boot自定义静态资源映射】_spring_04

  • ③ 编写启动类

【Spring原理分析-Scope+Spring Boot自定义静态资源映射】_html_05

  • ④ 测试

【Spring原理分析-Scope+Spring Boot自定义静态资源映射】_spring_06


二、Scope失效

1、基础准备与演示

  • ① 多例Bean

编写F1,其Scope为prototype多例,如下:

【Spring原理分析-Scope+Spring Boot自定义静态资源映射】_spring_07

  • ② Bean属性管理多例Bean

编写E,其内部注入F1,如下:

【Spring原理分析-Scope+Spring Boot自定义静态资源映射】_静态资源_08

  • ③ 测试类

【Spring原理分析-Scope+Spring Boot自定义静态资源映射】_html_09

【Spring原理分析-Scope+Spring Boot自定义静态资源映射】_静态资源_10


2、失效原因及处理

  • ① 失效原因

单例E被创建时,完成了F属性的注入。此后调用get方法,得到的始终是只创建一次时注入的F对象。

  • ② 处理方法

Ⅰ 添加@Lazy注解

【Spring原理分析-Scope+Spring Boot自定义静态资源映射】_spring_11


@Lazy注解会生成目标对象的代理对象,代理对象虽然还是同一个,但当每次使用代理对象的任意方法时,由代理创建新的 f 对象。

【Spring原理分析-Scope+Spring Boot自定义静态资源映射】_静态资源_12


Ⅱ 添加proxyMode = ScopedProxyMode.TARGET_CLASS属性


@Scope(value = "prototype", proxyMode = ScopedProxyMode.TARGET_CLASS)
@Component
public class F2 {
}

【Spring原理分析-Scope+Spring Boot自定义静态资源映射】_html_13


Ⅲ 使用ObjectFactory工厂


@Autowired
private ObjectFactory<F3> f3;

public F3 getF3() {
    return f3.getObject();
}

【Spring原理分析-Scope+Spring Boot自定义静态资源映射】_spring_14


Ⅳ 使用ApplicationContext


@Autowired
private ApplicationContext context;

public F4 getF4(){return context.getBean(F4.class);}

【Spring原理分析-Scope+Spring Boot自定义静态资源映射】_spring_15


3、总结

  • ① Scope失效处理方法:

Ⅰ @Lazy注解;

Ⅱ @Scope(value = "prototype", proxyMode = ScopedProxyMode.TARGET_CLASS);

Ⅲ ObjectFactory工厂;

Ⅳ ApplicationContext。

四种方法的共同特点都是在运行时再去获取多例对象,推迟了其他Scope Bean的获取。


  • ② 推荐使用

推荐使用ObjectFactory工厂、ApplicationContext这两种方法,性能更优。


三、结尾

以上即为Spring原理分析-Scope的全部内容

》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

接下来讲解:

Spring Boot自定义静态资源映射

本文纲要

  • 一、背景
    1、Spring Boot项目静态资源默认访问路径
    2、在IDEA中对应的路径
    3、优先级顺序


  • 二、自定义静态资源映射
    1、配置文件配置
    2、WebMvcConfigurationSupport配置


一、背景

0、基础html页面

注意将不同demo的序号按文件修改即可,demo01.html内容如下:

【Spring原理分析-Scope+Spring Boot自定义静态资源映射】_静态资源_16

1、Spring Boot项目静态资源默认访问路径

【Spring原理分析-Scope+Spring Boot自定义静态资源映射】_静态资源_17

2、在IDEA中对应的路径

【Spring原理分析-Scope+Spring Boot自定义静态资源映射】_html_18


访问方法:http://localhost:8080/demo01.html,如下:

【Spring原理分析-Scope+Spring Boot自定义静态资源映射】_html_19


3、优先级顺序:

Ⅰ classpath:/META-INF/resources →

Ⅱ classpath:/resources →

Ⅲ classpath:/static →

Ⅳ classpath:/public


二、自定义静态资源映射

1、配置文件配置

  • ① 配置方式

【Spring原理分析-Scope+Spring Boot自定义静态资源映射】_html_20

【Spring原理分析-Scope+Spring Boot自定义静态资源映射】_html_21


  • ② 注意

Ⅰ 此处是覆盖原有配置的,所以默认路径不能漏掉,假设删除原有路径映射,如下:

【Spring原理分析-Scope+Spring Boot自定义静态资源映射】_spring_22

可以看到此时正常访问的为,demo01和demo05,如下:

【Spring原理分析-Scope+Spring Boot自定义静态资源映射】_html_23

=

注意:如此配置原有配置仅剩 classpath:/META-INF/resources 还生效。

Ⅱ 静态文件请求匹配方式

【Spring原理分析-Scope+Spring Boot自定义静态资源映射】_spring_24


修改后访问路径http://localhost:8080/test/demo05.html,访问如下:

【Spring原理分析-Scope+Spring Boot自定义静态资源映射】_html_25


2、WebMvcConfigurationSupport配置

  • ① 编写静态资源映射类

【Spring原理分析-Scope+Spring Boot自定义静态资源映射】_html_26

  • ② 测试

【Spring原理分析-Scope+Spring Boot自定义静态资源映射】_spring_27


注意:此种配置下,原有的静态资源路径被覆盖、失效。


三、结尾

以上即为Spring Boot自定义静态资源映射的全部内容




标签:自定义,映射,静态,Spring,Boot,如下,Scope
From: https://blog.51cto.com/u_15874356/6172302

相关文章

  • 如何在 Spring Boot 应用程序中使用 Actuator 监控和管理端点,提高应用程序的生产力?
    1概述1.1整合添加依赖:<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency>启动应用,会观察到如下日志:13:15:17.642ifp[main]INFOo.s.b.a.e.web.EndpointLin......
  • SpringBoot2核心技术篇(自动配置原理入门[二])
    自动配置原理入门3.1引导加载自动配置类@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan(excludeFilters={@Filter(type=FilterType.CUSTOM,classes={TypeExcludeFilter.class}),@Filter(type=FilterType.CUSTOM,classes=......
  • 动力节点王鹤SpringBoot3笔记——第四章 访问数据库
    视频:动力节点SpringBoot3从入门到项目实战第四章访问数据库SpringBoot框架为SQL数据库提供了广泛的支持,既有用JdbcTemplate直接访问JDBC,同时支持“objectrelationalmapping”技术(如Hibernate,MyBatis)。SpringData独立的项目提供对多种关系型和非关系型数据库的访问支持。......
  • 动力节点王鹤SpringBoot3笔记—— 第二章 掌控SpringBoot基础篇
    第二章掌控SpringBoot基础篇2.1SpringBoot?SpringBoot是目前流行的微服务框架倡导约定优先于配置”其设目的是用来简化新Spring应用的初始化搭建以及开发过程。SpringBoot提供了很多核心的功能,比如自动化配置starter(启动器)简化Maven配置、内嵌Servlet容......
  • 动力节点王鹤SpringBoot3笔记——第五章 说说Web服务
    第五章说说Web服务基于浏览器的B/S结构应用十分流行。SpringBoot非常适合Web应用开发。可以使用嵌入式Tomcat、Jetty、Undertow或Netty创建一个自包含的HTTP服务器。一个SpringBoot的Web应用能够自己独立运行,不依赖需要安装的Tomcat,Jetty等。SpringBoot可以创建两种类型的Web应......
  • 动力节点王鹤SpringBoot3学习笔记——第五章 说说Web服务
    第五章说说Web服务基于浏览器的B/S结构应用十分流行。SpringBoot非常适合Web应用开发。可以使用嵌入式Tomcat、Jetty、Undertow或Netty创建一个自包含的HTTP服务器。一个SpringBoot的Web应用能够自己独立运行,不依赖需要安装的Tomcat,Jetty等。SpringBoot可以创建两种类型的Web应......
  • 动力节点王鹤SpringBoot3学习笔记——第五章 说说Web服务
    第五章说说Web服务基于浏览器的B/S结构应用十分流行。SpringBoot非常适合Web应用开发。可以使用嵌入式Tomcat、Jetty、Undertow或Netty创建一个自包含的HTTP服务器。一个SpringBoot的Web应用能够自己独立运行,不依赖需要安装的Tomcat,Jetty等。SpringBoot可以创建两种类型的Web应......
  • QWT--自定义坐标轴刻度值
    一、效果展示定义xBottom为带单位的刻度值  定义xBottom为分钟:秒数的刻度值  二、具体步骤2.1、自定义坐标轴自定义坐标轴刻度,需要继承自QwtScaleDraw,然后重写如下虚函数:virtualQwtTextlabel(doublev)const;定义一个规则,然后设置坐标轴范围时,按定义的规则......
  • Unity Shader之自定义GUI
    可参考:https://zhuanlan.zhihu.com/p/384871087效果如下:转载请注明出处:https://www.cnblogs.com/jietian331/p/17296261.html......
  • Spring Boot中的MVC支持
    1.1概述SpringBoot的MVC支持主要来介绍实际项目中最常用的几个注解,包括@RestController、@RequestMapping、@PathVariable、@RequestParam以及@RequestBody。主要介绍这几个注解常用的使用方式和特点。1.2@RestController@RestController是SpringBoot新增的一个注解,我们......