注解怎么实现?

java反射的理解以及从注解中获取到值,并赋值给类中的属性

要了解注解先知道反射,往下看

开始反射
//获取 类
Class dogClass = Class.forName("com.ertiao.dog");

//生成 构造器 获取构造方法的结构 可以是有参构造方法和无参构造方法 
//无参构造方法
 Constructor<dog> dogConstructor =dogClass.getConstructor(); 
 //有参构造方法
 Constructor<dog> dogConstructor =dogClass.getConstructor(String.class,int.class);

//生成 dog实例对象 (无参构造方法生成对象,想有参的话调用有参的构造器生成)
Dog dog = dogConstructor.newInstance();

//获取类中的私有方法  	(只是包含当前类的方法)
Method[] methods = dogClass.getDeclaredMethods();

//获取类中的私有属性	(包括私有的属性)
Field[] fields = dogClass.getDeclaredFields();

//开启暴力反射对私有属性进行赋值 可以对私有的属性和方法使用
field.setAccessible(true);

//属性进行赋值
field.set(对象,值)

//获取注解对象
field.getAnnoation(注解.class)

//总结小例子 获取 类 中 属性 的注解
解释:
注解.class 是我们自定义的注解 如果不清楚怎么自定义注解可以搜索 自定义注解
field  	当前属性加入了自定义注解 才会对这个属性进行赋值 
filed 	只是一个别名 实际代表的是 类中的加了自定义注解的属性

前置条件:
1、需要有自定义注解
2、在使用的地方加上自定义注解

步骤:
1、遍历类中所有的属性
2、检查属性上有没有该注解
for(Field field: fields){
	  //获取属性上的注解
	 注解 annoation=field.getAnnoation(注解.class)
	 //判断属性中有没有该注解
	if(annoation!=null){
		//获取注解中的值
		String value=annoation.value();
		//对dog对象的filed属性进行赋值 值为value 
		filed.set(dog,value)
	}

}
Spring Boot 是一个基于 Spring 框架的简化配置和快速启动的应用程序开发工具。它提供了一系列的默认配置,使得开发者可以快速地构建出一个具备基本功能的 Web 应用程序,而无需过多地关注诸如数据库连接、日志系统等基础组件的配置。 ### 少用注解的原因及解决策略 在 Spring Boot 中,尽管它可以自动识别并配置一些常见的框架元素,如数据源、缓存服务、消息队列客户端等,但这并不意味着你不需要了解和使用注解。实际上,在某些特定场景下,正确使用注解对于应用的正常运行至关重要: #### 1. 自定义依赖管理 当需要集成的第三方库不在 Spring Boot 默认支持的列表内时,你需要手动添加依赖,并通过注解来指定依赖的实现。例如,如果你的项目需要集成 Elasticsearch 作为搜索引擎,你需要添加相应的 Maven 或 Gradle 配置,并通过 `@EnableElasticsearchRepositories` 等注解启用相应功能。 #### 2. 自定义配置选项 Spring Boot 提供了一种基于属性文件 (`application.properties` 或 `application.yml`) 的配置机制,但有时为了更精细地控制应用的行为,可能需要在代码中注入额外的配置信息。这时,可以通过 `@Value`, `@Autowired`, 和 `@Bean` 注解来读取和处理这些配置值,并将其用于自定义的初始化或计算逻辑。 #### 3. 创建自定义的启动和组件 虽然 Spring Boot 可以从主的包名自动检测到启动,但如果需要更复杂的应用结构(比如多模块应用),就需要明确地创建和使用 `@SpringBootApplication` 标记的作为启动点。同时,如果想要包含更多的组件或配置,可以使用嵌套的组件,并在其中声明必要的 `@Bean` 方法或配置。 #### 4. 集成自定义服务或中间件 为了实现特定业务逻辑,可能需要引入外部的服务或中间件(如 API 调用、异步任务处理)。此时,通过使用 `@RestController`, `@Service`, `@Async` 等注解,你可以编写具体的业务逻辑,并利用 Spring 的 AOP 和并发支持功能。 ### 相关问题: 1. **如何在 Spring Boot 中集成非官方支持的依赖**? - 解决方案通常涉及添加 POM 或 Gradle 配置,并适当使用注解来指示依赖的使用方式,例如通过 `@ComponentScan` 扫描依赖提供的。 2. **如何在 Spring Boot 中处理复杂的依赖注入**? - 使用组合注解 (`@Autowired`, `@Qualifier`, `@Resource`) 来定位和控制依赖的注入过程,以及通过配置 (`@Configuration`) 和 @ConfigurationProperties(`@Data`) 实现动态属性绑定。 3. **何时应该避免过度依赖注解**? - 当应用设计变得更加复杂,涉及到大量自定义逻辑、高度耦合的组件交互时,应考虑减少对注解的直接依赖,转而采用更为细粒度的配置管理和架构模式(如微服务拆分、领域驱动设计),以提高系统的灵活性和维护性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值