webmvcconfigurer用法
WebMvcConfigurer用法
一、概述
WebMvcConfigurer是Spring框架中用来配置Web MVC的接口。通过实现该接口,我们可以对Spring MVC的行为进行自定义配置,包括添加拦截器、视图解析器、消息转换器等等。在实际开发中,我们经常会使用WebMvcConfigurer来进行一些定制化的配置,以满足项目的特定需求。
二、使用方式
1. 创建一个类并实现WebMvcConfigurer接口
我们需要创建一个新的类,并实现WebMvcConfigurer接口。在该类中,我们可以重写一些方法来实现自定义的配置。
示例代码如下:
```java
Configuration
public class MyWebMvcConfigurer implements
WebMvcConfigurer {
// 在这里可以重写WebMvcConfigurer的方法来实现自定义配置
}
```
2. 添加Configuration注解 在实现了WebMvcConfigurer接口的类上,我们需要添加Configuration注解,以告诉Spring容器这是一个配置类。
示例代码如下:
```java
Configuration
public class MyWebMvcConfigurer implements
WebMvcConfigurer {
// 在这里可以重写WebMvcConfigurer的方法来实现自定义配置
}
```
3. 重写需要配置的方法
在实现WebMvcConfigurer接口的类中,我们可以根据需要重写一些方法来进行自定义配置。以下是一些常用的配置方法:
- 添加拦截器
```java
Override
public void addInterceptors(InterceptorRegistry registry) {
// 在这里可以添加自定义的拦截器
}
```
- 配置视图解析器
```java
Override
public void configureViewResolvers(ViewResolverRegistry
registry) {
// 在这里可以配置视图解析器
}
```
- 配置消息转换器
```java
Override
public void
configureMessageConverters(List
converters) {
// 在这里可以配置消息转换器
}
```
- 配置静态资源
```java
Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
// 在这里可以配置静态资源的映射
}
```
- 配置跨域访问
```java
Override
public void addCorsMappings(CorsRegistry registry) {
// 在这里可以配置跨域访问规则
}
```
- 配置路径匹配规则
```java
Override
public void configurePathMatch(PathMatchConfigurer
configurer) {
// 在这里可以配置路径匹配规则
}
```
- 配置跳转规则 ```java
Override
public void addViewControllers(ViewControllerRegistry registry)
{
// 在这里可以配置跳转规则
}
```
三、总结
在本文中,我们介绍了WebMvcConfigurer的用法,其中包括了创建实现WebMvcConfigurer接口的类、添加Configuration注解以及对一些常用配置方法的重写。通过使用WebMvcConfigurer,我们可以对Spring MVC框架进行自定义配置,以满足项目的特定需求。希望本文能够帮助到大家,谢谢阅读!
springboot项目从硬盘指定位置读取文件(获取静态资源)
springboot项⽬从硬盘指定位置读取⽂件(获取静态资源)
⽅法⼀:继承WebMvcConfigurerAdapter类
package com.imooc.demo.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@Configuration
public class FileStaticConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
/**
* /source/xxx 指⽂件的访问⽅式 如:localhost:8080/source/abc.wav
* file:d/voice/ 指静态⽂件存放在服务器上的位置
*/
registry.addResourceHandler("/source/**").addResourceLocations("file:"+"d:/voice/");
}
}
⽅法⼆、
websecurityconfigureradapter的init方法
websecurityconfigureradapter的init方法
WebSecurityConfigurerAdapter是一个用于Spring Security的配置类,它允许用户根据具体需求定制安全配置。在这个类中,init方法是一个关键方法,它在Adapter实例化后立即被调用。本文将详细介绍websecurityconfigureradapter的init方法,包括其功能、实现原理以及如何在实际项目中应用。
一、功能概述
init方法的主要功能是初始化WebSecurityConfigurerAdapter,并为后续的安全配置做好准备。在这个过程中,它会执行以下操作:
1.设置默认的认证逻辑(如匿名认证、Forms 认证等)。
2.配置登录和注销页面。
3.初始化 remember-me 功能。
4.配置 URL 访问规则。
5.配置跨域资源共享(CORS)。
6.注册拦截器(如密码过期拦截器、记住我拦截器等)。
二、实现原理
WebSecurityConfigurerAdapter继承了ConfigurableSecurityBuilder接口,它提供了一系列方法用于配置安全相关的内容。在init方法中,这些方法被调用以完成相应的配置。
1.调用configure(HttpSecurity http)方法,设置默认的认证逻辑和URL访问规则。 2.调用configure(AuthenticationManagerBuilder auth)方法,配置用户认证逻辑。
3.调用configure(FormLoginConfigurer loginConfig)方法,配置登录和注销页面。
4.调用configure(LogoutConfigurer logoutConfig)方法,配置注销逻辑。
5.调用configure(RememberMeConfigurer rememberMeConfig)方法,初始化记住我功能。
handlerinterceptoradapter 获取方法上的注解
在 Spring MVC 中,`HandlerInterceptorAdapter` 是一个拦截器接口,它可以在请求处理过程中对请求进行拦截和处理。要获取方法上的注解,您需要实现 `HandlerInterceptor` 接口,并利用
`HandlerMethod` 对象来获取注解信息。
以下是一个示例,展示如何在拦截器中获取方法上的注解:
```java
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MyInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
if (handler instanceof HandlerMethod) {
HandlerMethod handlerMethod = (HandlerMethod)
handler;
MyAnnotation annotation =
handlerMethod.getMethod().getAnnotation(MyAnnotation.class);
SpringBoot设置接口超时时间的方法
SpringBoot设置接⼝超时时间的⽅法
SpringBoot设置接⼝访问超时时间有两种⽅式
⼀、在配置⽂件application.properties中加了spring.mvc.async.request-timeout=20000,意思是设置超时时间为20000ms即
20s,
⼆、还有⼀种就是在config配置类中加⼊:
public class WebMvcConfig extends WebMvcConfigurerAdapter {
@Override
public void configureAsyncSupport(final AsyncSupportConfigurer configurer) {
configurer.setDefaultTimeout(20000);
configurer.registerCallableInterceptors(timeoutInterceptor());
}
@Bean
public TimeoutCallableProcessingInterceptor timeoutInterceptor() {
return new TimeoutCallableProcessingInterceptor();
}
}
PS:SpringBoot Rest Api 设置超时时间
项⽬有⼀对外开放api,外⽹访问经常出现超时,刚接触spring boot不久,内置的tomcat不像原先那样在server.xml中设置
request超时时间。
后来查了些资料,在配置⽂件application.properties中加了spring.mvc.async.request-timeout=20000,意思是设置超时时间为
20000ms即20s,超时问题的确不怎么发⽣了。
还有另外⼀种设置⽅式,如下:
public class WebMvcConfig extends WebMvcConfigurerAdapter {
handlermethodargumentresolver用法 -回复
handlermethodargumentresolver用法 -回复
HandlerMethodArgumentResolver是Spring MVC框架提供的一个接口,用于支持自定义方法参数的解析。通过实现这个接口,我们可以灵活地处理Controller方法的参数,将请求中的数据转换为方法所需要的实际参数。在本文中,我们将详细介绍HandlerMethodArgumentResolver的用法,并通过一个示例来演示如何使用它。
第一步:理解HandlerMethodArgumentResolver的作用和原理
HandlerMethodArgumentResolver的作用是将请求中的数据映射到Controller方法的参数上。当客户端发送请求到Spring MVC的DispatcherServlet时,DispatcherServlet会根据请求信息找到对应的HandlerMapping,然后再根据HandlerMapping找到对应的Controller方法。在执行Controller方法之前,Spring MVC会先使用HandlerMethodArgumentResolver来解析请求中的数据,将其转换为方法参数的实际值,然后再将解析后的参数传递给对应的Controller方法。
第二步:实现HandlerMethodArgumentResolver接口
要使用HandlerMethodArgumentResolver,我们首先需要实现它提供的接口。HandlerMethodArgumentResolver接口定义了以下两个方法:
1. supportsParameter():判断当前的HandlerMethodArgumentResolver是否支持解析特定类型的参数。这个方法会在Spring MVC执行Controller方法之前被调用,用于确定是否需要执行当前的HandlerMethodArgumentResolver。
websocketconfigurer 参数
第 1 页 共 2 页 websocketconfigurer 参数
(实用版)
目录
1.WebSocketConfigurer 概述
2.WebSocketConfigurer 参数详解
1.host
2.port
ername
4.password
5.room
6.autoJoin
7.maxAge
8.maxMessageSize
9.minMessageSize
10.maxUsers
11.checkOrigin
12.protocol
13.endpoint
14.allowedOrigins
15.srtpKeyAgreement
16.appData
正文 第 2 页 共 2 页 WebSocketConfigurer 是一个用于配置 WebSocket 连接的工具,它可以帮助开发者轻松地构建和配置 WebSocket 连接。WebSocketConfigurer 包含多个参数,下面将对这些参数进行详细解析。
1.host:WebSocket 服务器的地址。
2.port:WebSocket 服务器的端口号。
ername:用于身份验证的用户名。
4.password:用于身份验证的密码。
5.room:WebSocket 连接所在的房间,通常用于多人通信。
6.autoJoin:自动加入房间,默认为 true。
7.maxAge:WebSocket 连接的最大存活时间,单位为毫秒。
8.maxMessageSize:允许发送的最大消息大小,单位为字节。
9.minMessageSize:允许发送的最小消息大小,单位为字节。
10.maxUsers:允许加入房间的最大用户数。
Springboot使用alibaba的fastJson,@JSONField不起作用的问题
Springboot使⽤alibaba的fastJson,@JSONField不起作⽤的问题
在Springboot中默认的JSON解析框架是jackson
今天引⼊alibaba的fastjson,使⽤@JSONField(serialize=false),让@RestController转换数据给前端的时候不序列化莫些字段,发现@JSONField根本不起作⽤
在⽹上查阅了⼀番,发现Springboot使⽤fastjson需要替换默认的json转换器的
具体解决⽅法有两种:
⼀、(1)启动类继承extends WebMvcConfigurerAdapter (2)覆盖⽅法configureMessageConverters
⼆、(1)在App.java启动类中,注⼊Bean : HttpMessageConverters
第⼀种⽅式:
启动类继承WebMvcConfigurerAdapter,然后对configureMessageConverters⽅法进⾏重写@Override public void configureMessageConverters(List> converters) { super.configureMessageConverters(converters); FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter(); FastJsonConfig fastJsonConfig = new FastJsonConfig(); fastJsonConfig.setSerializerFeatures( SerializerFeature.PrettyFormat ); fastConverter.setFastJsonConfig(fastJsonConfig); converters.add(fastConverter); }
基于springbooti18n国际化后台多种语言设置的方式
基于springbooti18n国际化后台多种语⾔设置的⽅式
之前有做过⼿机端后台的国际化,因为⼿机统⼀传递了language参数,所以只要设置LocaleChangeInterceptor就⾏了
/**
* 配置国际化语⾔
*/
@Configuration
public class LocaleConfig extends WebMvcConfigurerAdapter{
/**
* 默认解析器 其中locale表⽰默认语⾔
*/
@Bean
public LocaleResolver localeResolver() {
SessionLocaleResolver localeResolver = new SessionLocaleResolver();
localeResolver.setDefaultLocale(Locale.CHINA);
return localeResolver;
}
//springboot1.5
@Override
public void addInterceptors(InterceptorRegistry registry) {
LocaleChangeInterceptor localeInterceptor = new LocaleChangeInterceptor();
localeInterceptor.setParamName("language");
registry.addInterceptor(localeInterceptor);
}
}
对于某些特殊的后台运⾏代码,⽐如定时器,我则使⽤getByLanguage⽅法
/**
* 国际化⼯具类
*/
@Component
public class MessageUtils{
private static MessageSource messageSource;
static SysErrorLogDao sysErrorLogDao;
interceptorregistry excludepathpattern 写法 -回复
interceptorregistry excludepathpattern 写法 -回复
关于InterceptorRegistry中的excludePathPatterns的写法,以及如何使用它来排除路径的功能,我将逐步回答你的问题。
首先,InterceptorRegistry是Spring框架中的一个类,用于注册和管理拦截器。拦截器是在请求到达控制器之前或之后执行的代码,用于实现一些通用的处理逻辑,例如身份验证、日志记录等。
在拦截器中,我们通常会定义一些需要排除的路径,以确保拦截器不会对这些路径上的请求进行拦截和处理。这就是excludePathPatterns的用途,它是一个字符串数组,用于指定需要排除的路径。
接下来,我将详细介绍excludePathPatterns的写法,以及如何使用它。
1. 写法:
excludePathPatterns可以接受一个或多个路径模式,以逗号分隔。路径模式支持Ant风格的通配符,例如`/user/*`表示以/user/开头的所有路径。
在配置文件(如application.properties或application.yml)中,我们可以使用以下方式设置excludePathPatterns:
application.properties:
properties
spring.mvc.exclude-path-patterns=/user/*,/admin/
application.yml:
yaml
spring:
mvc:
exclude-path-patterns:
- /user/*
- /admin/
实际编码过程中,我们可以使用以下方式设置excludePathPatterns:
在拦截器配置类中,通过实现WebMvcConfigurer接口的addInterceptors方法,使用InterceptorRegistry的excludePathPatterns方法来设置需要排除的路径:
解决slf4j和logback-classic遇到的坑
解决slf4j和logback-classic遇到的坑
slf4j 和 logback-classic遇到的坑
以前⼀直不注意⽇志的打印,最近项⽬需求需要⽤⽇志记录⽤时性能,集成⽇志时遇到的问题记录下。
问题⼀:服务器启动时提⽰未找到slf4j的实现类
此时⼀定是没有在classpath中找到jar包,启动时会有相应的警告提⽰。需要三个包:slf4j-api(接⼝),logback-classic(最优实
现),logback-core(核⼼)。加⼊的位置可能存在两种,⼀种是tomcat需要,需要加在tomcat的lib下,还有⼀种是加在项⽬的
classpath下。
问题⼆:不⽣成⽂件或者⽣成的⽂件路径不对
不⽣成⽂件存在⼀个原因,logback.xml没有配置写⼊到⽂件(默认配置⽂件的顺序是logback-test.xml, logback.groovy,
logback.xml),注意如果是maven项⽬,不要把src/test/resources中的logback-test.xml发到环境中,因为优先级最⾼。关于
⽣成的⽂件路不对,解释是正确的配置
⽂件位置是eclipse的根⽬录,如果配置是
则⽂件位置是eclipse所在盘符的根⽬录,如D盘。
slf4j与logback的结合使⽤
⼀、logback的介绍
Logback是由log4j创始⼈设计的⼜⼀个开源⽇志组件。logback当前分成三个模块:logback-core,logback- classic和logback-
access。logback-core是其它两个模块的基础模块。logback-classic是log4j的⼀个 改良版本。
此外logback-classic完整实现SLF4J API使你可以很⽅便地更换成其它⽇志系统如log4j或JDK14 Logging。logback-access访
问模块与Servlet容器集成提供通过Http来访问⽇志的功能。 Logback是要与SLF4J结合起来⽤两个组件的官⽅⽹站如下:
