public void initGetter(ActionInvocation invocation) {
HttpServletRequest request = ServletActionContext.getRequest();
Class actionClass = invocation.getAction().getClass();
Field[] fields = actionClass.getDeclaredFields();
for (Field field : fields) {
Annotation[] annotations = field.getDeclaredAnnotations();
for (Annotation annotation : annotations)
if (annotation instanceof GetterAndSetter) {
GetterAndSetter getterAndSetter = (GetterAndSetter)annotation;
field.setAccessible(true);
try {
Object value = field.get(invocation.getAction());
request.setAttribute(field.getName(), value);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
例子2:
/**
*
*/
package annotation;
import java.lang.annotation.Annotation;
import annotation.FirstTag.ALLNAME;
/**
* @author Qianmz
* @date Mar 26, 2010/11:10:56 PM
*/
public class TagClazz {
@FirstTag(name="Qianmz",id=1000,lastName=ALLNAME.ZHAO)
public void doExecute(){
}
public static void main(String[] args) {
TagClazz tc = new TagClazz();
try {
Annotation[] ann =
tc.getClass().getMethod("doExecute").getAnnotations();
for(Annotation an : ann){
System.out.println(an.getClass());
System.out.println(an.annotationType());
System.out.println(((FirstTag)an).name());
System.out.println(((FirstTag)an).id());
System.out.println(((FirstTag)an).lastName());
}
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
}
}
================================
result:
interface annotation.FirstTag
Qianmz
1000
ZHAO
分享到:
相关推荐
当我们通过反射API访问Annotation时,会得到实现该接口的对象,从而获取成员信息。 4. **标准Annotation**:Java 5.0引入了三个标准Annotation,包括`@Override`、`@Deprecated`和`@ SuppressWarnings`。`@Override...
通过这个简单的示例,我们可以看到,结合Java的注解和反射功能,可以轻松地实现Bean到SQL语句的转换,大大简化了数据操作的代码,提高了代码的可读性和可维护性。在大型项目中,这样的工具或框架如MyBatis、...
在IT行业中,注解(Annotation)是Java编程语言的一个...通过自定义注解和对应的处理机制,我们可以实现代码的自动化处理、验证、配置等高级功能。在实际开发中,合理运用注解能够提高代码的可读性、可维护性和灵活性。
在IT行业中,Spring框架是Java开发中的核心工具之一,它为开发者提供了许多强大的功能,包括依赖注入、面向切面编程(AOP)等。本文将深入探讨如何利用Spring的注解式AOP和反射机制来实现日志记录,以便更好地理解和...
Annotation的本质是一种特殊类型的注解,它允许开发者向编译器、JVM或者工具提供关于代码的额外信息,比如接口实现、序列化、代码生成等。 1. **Annotation定义**: Annotation的定义格式通常为`public @interface...
2. **自定义 Annotation**:除了预定义的 Annotation,开发者还可以定义自己的 Annotation 类型,并通过注解处理器来处理这些 Annotation,实现特定的功能。 3. **运行时可见性**:有些 Annotation 在编译时有效,...
在Java编程中,反射、注解(Annotation)和泛型是三个非常重要的特性,它们各自在不同的场景下发挥着关键作用。这篇博文“利用java反射、注解及泛型模拟ORM实现”旨在探讨如何结合这三种技术来实现对象关系映射(ORM...
在Java编程语言中,Annotation(注解)是一种元...通过定义自己的注解,我们可以实现代码的元数据化,从而实现自动化、验证、监控等多种功能。理解并熟练掌握自定义Annotation的使用,对于提升Java开发能力至关重要。
这样,我们就可以在运行时通过反射机制获取该方法上的`Loggable`注解信息,从而实现自动的日志记录功能。 #### 六、总结 Annotation作为Java 1.5版本的一个重要特性,极大地提高了代码的可读性和可维护性,同时也...
- 配置管理:Spring框架利用反射和Annotation实现依赖注入。 7. **注意事项与性能影响**: 尽管反射提供了强大的功能,但过度使用会导致代码复杂性增加,并可能影响性能,因为反射操作比直接调用方法更慢。因此,...
`javax.annotation-api-1.3.2.jar` 包是Java标准版(Java SE)中的一个关键组件,它包含了用于开发和实现注解的API。这个API主要用于提供一些预定义的注解,这些注解可以增强代码的功能性和可维护性,同时减少对传统...
- **Spring Framework**:使用了多种注解来实现依赖注入、事务管理等功能。 - **Hibernate/JPA**:使用注解简化了实体映射的过程。 - **JUnit**:通过 `@Test`、`@Before`、`@After` 等注解来组织单元测试代码。 - *...
在实际开发中,注解与反射相结合,可以实现动态配置、AOP(面向切面编程)、持久化框架等多个领域的重要功能。例如,Spring AOP通过分析`@Aspect`注解定义的切面,实现横切关注点的自动化处理。 总之,Java注解是...
通过自定义注解和处理器,开发者可以扩展Java平台的功能,实现更灵活和模块化的代码设计。 总结来说,Java注解是增强代码可读性、简化代码维护和提高开发效率的重要工具。通过创建和使用注解,我们可以将元数据嵌入...
这些元数据可以被编译器、JVM或其他工具读取,以实现诸如代码分析、代码生成、测试、性能监控等多种功能。常见的注解有@Override、@Deprecated等。 2. **JSR 305**:JSR(Java Specification Request)305是Java...