`
ericxu131
  • 浏览: 189532 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

反射+annotation模拟spring2.5的@Autowired标签访问private变量

阅读更多
这段时间用了一下spring 2.5的@Autowired注释来做依赖注入,感觉真的不错,省掉了get、set的方法,整个类也看起来更加舒服了。
在这期间对于@Autowired注释访问private的变量一直感到很好奇,查了一下相关资料,写了一个小例子。不过没看过@Autowired的源码,不确定是不是这样做的,应该差不多吧。
代码如下:

1.声明了一个注释
@Retention(RetentionPolicy.RUNTIME)
public @interface TestAnno {
	
}


2.声明了一个含有private变量a的类
public class TestAnnotation {
	@TestAnno
	private String a;

	public String getA() {
		return a;
	}

	public void setA(String a) {
		this.a = a;
	}

}


3.通过反射为a赋值
public class MainTest {
	public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException {
		TestAnnotation ta=new TestAnnotation();
		Field[] fs=TestAnnotation.class.getDeclaredFields();
		for(int i=0;i<fs.length;i++){
			if(fs[i].isAnnotationPresent(TestAnno.class)){
				fs[i].setAccessible(true);
				fs[i].set(ta, "你好");
			}
		}
		System.out.println(ta.getA());
	}
}

关键是fs[i].setAccessible(true);这个方法,如果不设置这个方法则会抛出java.lang.IllegalAccessException的异常。网上也有人说setAccessible有安全性限制不要随便乱用。不过至少可以做到
分享到:
评论
1 楼 jakoes 2009-07-24  
最好赋一下源码

相关推荐

    spring annotation注解

    Spring Annotation 注解 Spring 框架中的注解是用于在 Java 类中添加元数据的,通过这些元数据,Spring 框架可以在运行时提供更多的功能。 Spring 框架提供了多种类型的注解,例如 @Autowired、@Resource、@...

    基于Spring@Autowired注解与自动装配详谈

    在Spring 2.5中引入了@Autowired注解,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。使用@Autowired可以消除set、get方法,从而简化程序的开发。 在使用@Autowired时,需要在...

    spring中Autowired和Qulifier注解

    在Spring框架中,`@Autowired`和`@Qualifier`注解是两个非常重要的依赖注入...通过阅读和分析`spring_0900_IOC_Annotation_Autowired_Qulifier`中的源码和示例,可以更深入地理解它们的实现细节和使用技巧。

    javaSpring注解入门[参考].pdf

    Java Spring注解入门 Java Spring框架中,注解是一种非常重要的概念,它可以帮助我们简化配置文件的编写,并提高代码的可读性和维护性。在本节中,我们将学习如何使用Spring注解来实现属性的自动装配。 1. 使用...

    spring基础

    Spring 2.5 引入了 @Autowired 注释,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。 @Autowired 按照类型来装配 改变如下: package com.baobaotao; import org.springframework.beans....

    spring注解说明文档

    在类的成员变量上使用`@Autowired`,Spring容器会在运行时自动找到合适的依赖并注入。例如,在`UserManagerImpl`类中,我们可以通过如下方式声明`UserDao`的依赖: ```java public class UserManagerImpl ...

    Spring基于注释(Annotation)的配置.pdf

    ### Spring基于注释(Annotation)的配置 #### 一、`@Autowired` 注释 `@Autowired` 是Spring框架提供的一种自动装配机制,用于简化Bean的依赖注入过程。该注解可以应用于类成员变量、方法及构造函数,帮助实现按...

    Spring如何注入Date类型的变量

    在Spring框架中,注入Date类型的变量是一个常见的需求,特别是在处理日期和时间相关的业务逻辑时。这篇博客将探讨如何在Spring中有效地注入Date对象到bean的属性中。首先,我们需要了解Spring依赖注入的基本概念,它...

    spring注解使用

    ### Spring注解使用详解 #### 一、Spring 注解概述 Spring 框架通过引入注解极大地简化了 Java 应用程序的开发过程。在 Spring 中,使用注解可以替代传统的 XML 配置文件来定义 Bean 和管理依赖关系。这不仅减少了...

    spring annotation example

    在Spring框架中,注解(Annotation)是一种元数据,它提供了简化配置、增强代码可读性和减少XML配置文件的方法。本示例将深入探讨如何在Java Maven项目中使用Spring注解进行开发。 首先,让我们了解Spring的核心...

    Spring整合Junit框架进行单元测试Demo

    import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; @ContextConfiguration(locations = {"classpath:spring-context.xml"}) public...

    Spring Annotations 卡片

    自从Spring 2.5版本引入了基于注解的配置选项后,开发人员不再受限于XML配置文件的繁琐,而是能够更加直观、简洁地定义和管理应用程序中的bean。 - **@Autowired**:用于自动装配bean,可以作用于字段、构造器或...

    详解Java的Spring框架中的注解的用法

    【Java Spring注解详解】 在Java的Spring框架中,注解的使用极大地简化了配置,提高了开发效率。本文将深入探讨Spring注解的用法,特别是如何利用注解来注入属性。 1. **使用Spring注解注入属性** 在Spring框架...

    [springBoot系列]--springBoot注解大全.pdf

    示例代码:@Componentpublic class UserService { @Autowired private UserRepository userRepository;}@PathVariable:用于从请求的 URI 中获取参数,这些参数在 URI 中用大括号 {} 包裹。例如:/api/users/{id},...

    springmvc常用注解标签详解

    - `@Resource` 并非 Spring 的注解,而是来自 Java 的标准库 javax.annotation.Resource,但 Spring 支持它的使用。它既可以按名称(byName)也可以按类型(byType)注入。 - `@Autowired` 是 Spring 提供的注解...

    spring famework 基于注解配置示例

    然而,随着注解(Annotation)技术的发展,Spring框架引入了基于注解的配置,使得代码更加简洁、直观。本示例将详细介绍如何使用注解配置实现Spring框架的注入。 首先,我们需要了解几个关键的注解: 1. `@...

    spring+hibernate+struts2 +mybatis整合笔记

    import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.spring...

    spring boot 连接thymeleaf的很简单的Demo

    import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation....

    spring mvc注释文档

    Spring MVC作为Spring框架的重要组成部分之一,在Spring 2.5版本中引入了基于注解的配置方式,这使得开发者能够更便捷地构建Web应用程序。相比于传统的基于XML的配置方式,基于注解的配置更加简洁、直观,同时也提高...

Global site tag (gtag.js) - Google Analytics