fix(core): resolve Spring AOP proxy masking @McpFunction annotations
This commit is contained in:
@@ -76,7 +76,8 @@ public class BusinessToolController {
|
|||||||
Map<String, Object> toolBeans = applicationContext.getBeansWithAnnotation(McpTool.class);
|
Map<String, Object> toolBeans = applicationContext.getBeansWithAnnotation(McpTool.class);
|
||||||
outerLoop:
|
outerLoop:
|
||||||
for (Object bean : toolBeans.values()) {
|
for (Object bean : toolBeans.values()) {
|
||||||
for (Method method : bean.getClass().getDeclaredMethods()) {
|
Class<?> userClass = org.springframework.util.ClassUtils.getUserClass(bean);
|
||||||
|
for (Method method : userClass.getDeclaredMethods()) {
|
||||||
McpFunction mcpFunc = method.getAnnotation(McpFunction.class);
|
McpFunction mcpFunc = method.getAnnotation(McpFunction.class);
|
||||||
if (mcpFunc != null) {
|
if (mcpFunc != null) {
|
||||||
String baseName = mcpFunc.name();
|
String baseName = mcpFunc.name();
|
||||||
|
|||||||
@@ -67,9 +67,10 @@ public class ToolRegistryHeartbeatSender {
|
|||||||
private void scanAndBuildMetadata() {
|
private void scanAndBuildMetadata() {
|
||||||
Map<String, Object> toolBeans = applicationContext.getBeansWithAnnotation(McpTool.class);
|
Map<String, Object> toolBeans = applicationContext.getBeansWithAnnotation(McpTool.class);
|
||||||
for (Object bean : toolBeans.values()) {
|
for (Object bean : toolBeans.values()) {
|
||||||
McpTool toolAnnotation = bean.getClass().getAnnotation(McpTool.class);
|
Class<?> userClass = org.springframework.util.ClassUtils.getUserClass(bean);
|
||||||
|
McpTool toolAnnotation = userClass.getAnnotation(McpTool.class);
|
||||||
|
|
||||||
for (Method method : bean.getClass().getDeclaredMethods()) {
|
for (Method method : userClass.getDeclaredMethods()) {
|
||||||
McpFunction functionAnnotation = method.getAnnotation(McpFunction.class);
|
McpFunction functionAnnotation = method.getAnnotation(McpFunction.class);
|
||||||
if (functionAnnotation != null) {
|
if (functionAnnotation != null) {
|
||||||
String baseName = functionAnnotation.name();
|
String baseName = functionAnnotation.name();
|
||||||
|
|||||||
Reference in New Issue
Block a user