SpringBoot配合argumentResolver给controller参数赋值

源代码:链接:https://pan.baidu.com/s/1pxo_CJiNDsWGVJNsmKFpuw
提取码:s4uj
启动项目访问地址:http://localhost:8080/swagger-ui.html#/

1.UserVo.java

/**
 * 
 */
package com.jz.swagger.domain;

import lombok.Data;

/**
 * @author liurui
 * @date 2019年8月30日
 */
@Data
public class UserVo {

	private String name;
	private String age;
}

2.UserVoArgumentResolver.java配置Resolver类

/**
 * 
 */
package com.jz.swagger.config.arguments;

import org.springframework.core.MethodParameter;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.support.WebDataBinderFactory;
import org.springframework.web.context.request.NativeWebRequest;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.method.support.ModelAndViewContainer;

import com.jz.swagger.domain.UserVo;

import lombok.extern.slf4j.Slf4j;

/**
 * @author liurui
 * @date 2019年8月30日
 */
@Component
@Slf4j
public class UserArgumentsResolver implements HandlerMethodArgumentResolver {

	@Override
	public boolean supportsParameter(MethodParameter parameter) {
		// 一个api接口,多个参数,将会多次调用此方法匹配是不是你需要的参数类型
		Class clazz = parameter.getParameterType();
		log.info("===============【参数装配】clazz={}",clazz.getName());
		return UserVo.class.getName().equalsIgnoreCase(clazz.getName());
	}

	@Override
	public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer,
			NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {
		// 该方法返回就是Controller中api方法中参数赋的值
		UserVo userVo = new UserVo();
		userVo.setName("周扒皮");
		userVo.setAge(18+"");
		return userVo;
	}

}

3.ArgumentConfig.java将Resolver类配置到Spring中

/**
 * 
 */
package com.jz.swagger.config.arguments;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import lombok.extern.slf4j.Slf4j;

/**
 * @author liurui
 * @date 2019年8月30日
 */
@Configuration
@Slf4j
public class ArgumentConfig implements WebMvcConfigurer{
	
	@Autowired
	private UserArgumentsResolver userArgumentsResolver;

	@Override
	public void addArgumentResolvers(List resolvers) {
		log.info("【配置argumentResolver】ok");
		resolvers.add(userArgumentsResolver);
	}
}

非关键类不写了,直接下载源码看一下,下载即可启动,无需任何参数需要配置。
运行结果图:
SpringBoot配合argumentResolver给controller参数赋值_第1张图片

你可能感兴趣的:(Demo)