我有一个控制器类,其中有一个RequestMapping方法,该方法接受String参数。我想通过使用Spring AOP传递此参数,但失败了,当我打印值时,我得到了空值。
尝试以下提供的解决方案,但它的工作与Map,但不与字符串。
Spring AOP pass argument of a controller method
第一个
我在Controller类中打印值“Hello”时预期该值为空。
我有一个控制器类,其中有一个RequestMapping方法,该方法接受String参数。我想通过使用Spring AOP传递此参数,但失败了,当我打印值时,我得到了空值。
尝试以下提供的解决方案,但它的工作与Map,但不与字符串。
Spring AOP pass argument of a controller method
第一个
我在Controller类中打印值“Hello”时预期该值为空。
2条答案
按热度按时间axr492tv1#
一个
@Before
建议并不意味着要操作方法参数。在这个例子中,你链接到它只是因为参数是一个可变的对象,也就是一个Map
。一个String
是不可变的,但是你不能编辑它。话虽如此,你应该怎么做呢?使用
@Around
建议,它是为这类事情设计的。在那里你可以决定你想如何进行,例如。if-else
或switch-case
)。我还建议不要直接在
JoinPoint.getArgs()
的Object[]
上工作,而是通过args()
将相关的方法参数绑定到一个命名的和类型安全的建议参数。oiopk7p52#
您应该使用
@Around
建议而不是@Before
。有关详细信息,请参阅this answer。