通过Spring LocalVariableTableParameterNameDiscoverer 获取方法参数名
程序员文章站
2022-03-02 08:34:59
...
import org.springframework.core.LocalVariableTableParameterNameDiscoverer publicclass Test{ privatestaticfinal LocalVariableTableParameterNameDiscoverer parameterNameDiscoverer = new LocalVariableTableParameterNameDiscoverer(); /** * 获取方法所有参数名 * @param method * @return */ publicstatic String[] getParameterNames(Method method) { return parameterNameDiscoverer.getParameterNames(method); } publicstaticvoidmain(String[] args) throws ClassNotFoundException { Class<?> aClass = Class.forName("com.codercool.ssm.modules.system.service.impl.UserServiceImpl"); Method[] methods = aClass.getMethods(); StringBuilder sb = new StringBuilder(); for (Method method : methods) { sb.append("方法:"+method.getName() + " "); String[] parameterNames = getParameterNames(method); if (parameterNames == null || parameterNames.length <1) { sb.append("无参"); } else { sb.append("["); for (int i = 0; i < parameterNames.length ; i++) { sb.append(parameterNames[i]); sb.append(","); } sb.append("]"); } sb.append("\n"); } System.out.println(sb.toString()); } } publicclass UserServiceImpl implements IUserService { @Autowired private UserDao userDao; publicvoidaddUser(String userId,User user) { userDao.add(user); } }
输出结果:
方法:addUser [userId,user,]
方法:wait 无参
方法:wait 无参
方法:wait 无参
方法:equals 无参
方法:toString 无参
方法:hashCode 无参
方法:getClass 无参
方法:notify 无参
方法:notifyAll 无参
扩展信息:
Spring此功能是基于ASM框架实现
推荐阅读
-
spring中通过ApplicationContext getBean获取注入对象的方法实例
-
Spring通过ApplicationContext主动获取bean的方法讲解
-
为何Spring MVC可获取到方法参数名,而MyBatis却不行?【享学Spring MVC】
-
使用spring通过aop获取方法参数和参数值
-
为何Spring MVC可获取到方法参数名,而MyBatis却不行?【享学Spring MVC】
-
java通过反射获取方法的参数名,Idea/Eclipse/Maven的配置
-
使用spring通过aop获取方法参数和参数值
-
通过Spring LocalVariableTableParameterNameDiscoverer 获取方法参数名
-
通过Spring LocalVariableTableParameterNameDiscoverer 获取方法参数名