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<HandlerMethodArgumentResolver> resolvers) {
		log.info("【配置argumentResolver】ok");
		resolvers.add(userArgumentsResolver);
	}
}

非关键类不写了,直接下载源码看一下,下载即可启动,无需任何参数需要配置。
运行结果图:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东芃9394

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值