gpt4 book ai didi

java - 如何强制某些服务只能从服务层调用

转载 作者:行者123 更新时间:2023-12-02 12:46:00 25 4
gpt4 key购买 nike

我想要一些 @Component bean,它们只能从 @Service bean 调用,而不能从其他 bean 调用。我该如何强制执行?我不想改变 Maven 包装。需要运行事务怎么样?但这只是运行时而不是编译时检查。

最佳答案

添加一个方面来拦截服务方法调用。

@Around("execution(* MyComponent)")
public void wrapAround(ProceedingJoinPoint joinPoint) throws Throwable
{
joinPoint.proceed();
}

查看更多here

然后检查调用者类别

public class KDebug {
public static String getCallerClassName() {
StackTraceElement[] stElements = Thread.currentThread().getStackTrace();
for (int i=1; i<stElements.length; i++) {
StackTraceElement ste = stElements[i];
if (!ste.getClassName().equals(KDebug.class.getName()) && ste.getClassName().indexOf("java.lang.Thread")!=0) {
return ste.getClassName();
}
}
return null;
}
}

来自here

检查调用者类是否有注解

for (Annotation annotation : Caller.class.getAnnotations()) {

并查找调用者是否有@Service注解。如果没有抛出异常

关于java - 如何强制某些服务只能从服务层调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44779802/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com