Spring原理分析-Scope
本文纲要:
一、Scope
1、Scope类型
2、基础准备与演示
二、Scope失效
1、基础准备与演示
2、失效原因及处理
3、总结
下面开始进入正文:
一、Scope
1、Scope类型
singleton, prototype, request, session, application
2、基础准备与演示
- ① 编写各种Scope的Bean
request类型,如下:
session类型,如下:
application类型,如下:
- ② 编写Controller类
- ③ 编写启动类
- ④ 测试
二、Scope失效
1、基础准备与演示
- ① 多例Bean
编写F1,其Scope为prototype多例,如下:
- ② Bean属性管理多例Bean
编写E,其内部注入F1,如下:
- ③ 测试类
2、失效原因及处理
- ① 失效原因
单例E被创建时,完成了F属性的注入。此后调用get方法,得到的始终是只创建一次时注入的F对象。
- ② 处理方法
Ⅰ 添加@Lazy注解
@Lazy注解会生成目标对象的代理对象,代理对象虽然还是同一个,但当每次使用代理对象的任意方法时,由代理创建新的 f 对象。
Ⅱ 添加proxyMode = ScopedProxyMode.TARGET_CLASS属性
@Scope(value = "prototype", proxyMode = ScopedProxyMode.TARGET_CLASS)
@Component
public class F2 {
}
Ⅲ 使用ObjectFactory工厂
@Autowired
private ObjectFactory<F3> f3;
public F3 getF3() {
return f3.getObject();
}
Ⅳ 使用ApplicationContext
@Autowired
private ApplicationContext context;
public F4 getF4(){return context.getBean(F4.class);}
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
内容如下:
1、Spring Boot项目静态资源默认访问路径
2、在IDEA中对应的路径
访问方法:http://localhost:8080/demo01.html
,如下:
3、优先级顺序:
Ⅰ classpath:/META-INF/resources →
Ⅱ classpath:/resources →
Ⅲ classpath:/static →
Ⅳ classpath:/public
二、自定义静态资源映射
1、配置文件配置
- ① 配置方式
- ② 注意
Ⅰ 此处是覆盖原有配置的,所以默认路径不能漏掉,假设删除原有路径映射,如下:
可以看到此时正常访问的为,demo01和demo05,如下:
=
注意:如此配置原有配置仅剩 classpath:/META-INF/resources 还生效。
Ⅱ 静态文件请求匹配方式
修改后访问路径http://localhost:8080/test/demo05.html
,访问如下:
2、WebMvcConfigurationSupport配置
- ① 编写静态资源映射类
- ② 测试
注意:此种配置下,原有的静态资源路径被覆盖、失效。
三、结尾
以上即为Spring Boot自定义静态资源映射的全部内容