目录
1.Bean管理
1.1 自定义Bean对象
1.2 Bean的作用域和生命周期
2.拦截器的使用
1.Bean管理
默认情况下,Spring项目启动时,会把我们常用的Bean都创建好放在IOC容器中,但是有时候我们自定义的类需要手动配置bean,这里主要介绍两种方式。
- 直接使用注解的方式
- 使用配置类+@Bean注解方式
1.1 自定义Bean对象
(1)使用注解的方式
这种方式主要是通过使用 @Component, @Service, @Repository, @Controller 等注解来标记类,告诉 Spring 容器这是一个应该被管理的 Bean。
(2)使用配置类
相当于我们之前使用的xml,用来自定义Bean对象,一般用来配置第三方的Bean对象。
使用:
- 先创建一个config包,然后创建名称为xxxConfig的普通java类,并在类上使用注解@Configuration表示该类为配置类。
- 在类中使用@Bean注解声明Bean方法,
完整的配置类配置Bean如下
1.2 Bean的作用域和生命周期
Spring 容器中的 Bean 的作用域
- Singleton:默认的作用域,Spring 容器只会创建一个实例,并将其保存在一个缓存中。
- Prototype:每次请求都会创建一个新的 Bean 实例。
- Request:对于每个 HTTP 请求都会创建一个新的 Bean 实例(仅适用于 Web 应用程序)。
- Session:对于每个 HTTP Session 创建一个新的 Bean 实例(仅适用于 Web 应用程序)。
- Global Session:针对 Portlet 应用程序,每个全局 Session 创建一个 Bean 实例
Bean 的生命周期
Spring 容器管理着 Bean 的整个生命周期,从创建、初始化到销毁。
- 创建:根据定义创建 Bean 实例。
- 初始化:调用初始化方法(如果有的话)。可以通过 @PostConstruct 注解或 <bean init-method="..."> 标签来指定初始化方法。
- 销毁:当容器关闭时,调用销毁方法(如果有的话)。可以使用 @PreDestroy 注解或 <bean destroy-method="..."> 标签来指定销毁方法。
2.拦截器的使用
拦截器的特点和拦截器中的方法的使用和SpringMVC中的一致,只是配置方式有所区别。
使用
(1)创建来拦截器类,实现HandlerInterceptor接口,并重写相关的方法,并使用@Compoent配置为Bean对象。【创建拦截器】
(2)创建配置类,实现WebMvcConfigurer接口,重写addInterceptors方法,并依赖注入你写的拦截器对象,然后在addInterceptors方法中定义你要拦截的范围。【定义拦截范围】
(3)查看拦截效果,如下图,访问后页面为空白,控制台有输出,表明拦截器已经生效。