使用java反射提取注释值?
我有以下课程 我在服务类中自动连接了使用java反射提取注释值?,java,spring,reflection,spring-aop,java-ee-7,Java,Spring,Reflection,Spring Aop,Java Ee 7,我有以下课程 我在服务类中自动连接了someDao,作为@autowired someDao someDao。 我将服务中的逻辑称为someDao.getName(2) SomeServiceImpl.java SomeDao.java SomeDaoImpl.java SomeAspect.java CustomAnnotation具有@保留(RetentionPolicy.RUNTIME) 在上面的方面中,String name=myAnnotation.value()应该给我someval
someDao
,作为@autowired someDao someDao
。
我将服务中的逻辑称为someDao.getName(2)代码>
SomeServiceImpl.java
SomeDao.java
SomeDaoImpl.java
SomeAspect.java
CustomAnnotation
具有@保留(RetentionPolicy.RUNTIME)
在上面的方面中,String name=myAnnotation.value()
应该给我somevalue
,但它给的是null
。有什么建议吗?但若我将@CustomAnnotation(“somevalue”)
保留在接口中,那个么它就会给出值。注释接口方法好吗?这是因为默认的spring APO代理从接口而不是类获取方法。因此,当方法调用来自接口而不是类时
您有几个选择:
1.或者您将xml配置更改为,以获得代理接口后面的类,但我没有对此做太多研究
希望这有帮助,因为默认的spring APO代理从接口而不是类获取方法。因此,当方法调用来自接口而不是类时
您有几个选择:
1.或者您将xml配置更改为,以获得代理接口后面的类,但我没有对此做太多研究
希望这有帮助,因为默认的spring APO代理从接口而不是类获取方法。因此,当方法调用来自接口而不是类时
您有几个选择:
1.或者您将xml配置更改为,以获得代理接口后面的类,但我没有对此做太多研究
希望这有帮助,因为默认的spring APO代理从接口而不是类获取方法。因此,当方法调用来自接口而不是类时
您有几个选择:
1.或者您将xml配置更改为,以获得代理接口后面的类,但我没有对此做太多研究
希望这有助于等待,ismyAnnotation.value()
为您提供null
或ismyAnnotationnull
?Sotirios,myAnnotation.value为null。我从答案下面得到了答案。谢谢你的回复。等等,是myAnnotation.value()
给你null
还是myAnnotation
null
?Sotirios,myAnnotation.value是null。我从答案下面得到了答案。谢谢你的回复。等等,是myAnnotation.value()
给你null
还是myAnnotation
null
?Sotirios,myAnnotation.value是null。我从答案下面得到了答案。谢谢你的回复。等等,是myAnnotation.value()
给你null
还是myAnnotation
null
?Sotirios,myAnnotation.value是null。我从答案下面得到了答案。谢谢你的回答。阿诺,谢谢你的回答。我是用你的第三个解决方案做的。阿诺,谢谢你的回答。我是用你的第三个解决方案做的。阿诺,谢谢你的回答。我是用你的第三个解决方案做的。阿诺,谢谢你的回答。我是用你的第三个解决方案做的。
public class SomeServiceImpl{
@Autowired SomeDao someDao
//call dao methods using someDao
}
public interface SomeDao{
String getName(Int id);
}
public class SomeDaoImpl implements SomeDao{
@CustomAnnotation("somevalue")
public String getName(int id){
//logic
}
}
@Around("execution(public * *(..)) && @annotation(com.mycompany.CustomAnnotation)")
public Object procedeNext(ProceedingJoinPoint call) throws Throwable {
//Access annotation value
MethodSignature signature = (MethodSignature) call.getSignature();
Method method = signature.getMethod();
CustomAnnotation myAnnotation = method.getAnnotation(CustomAnnotation.class);
String name = myAnnotation.value();
//here i am expecting name value "somevalue" but it is returning null
}