Springboot注解@Target用法

本文详细解析了Java注解的使用范围,通过@Target注解指定注解适用的元素类型,如方法、类、接口、构造器等。并介绍了如何在package-info.java文件中使用注解,以及创建自定义注解的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、@Target用法
java.lang.annotation.Target     用于设定注解范围
java.lang.annotation.ElementYype     Target通过ElementType来指定注解适用范围的枚举集合

1.ElementType用法

取值

    注解适用范围

METHOD  可用于描述方法上
TYPE  
 
用于描述类、接口(包括注解类型)或enum声明上
ANNOTATION——TYPE
 
用于注解类型上(被@interface修饰的类型)
CONSTRUCTOR  用于描述构造器上
 
FIELD  
 
用于描述域
LOCAL_VARIABLE  
 
用于描述局部变量
Package
 
用于记录java文件的package信息
PARAMETER  可用于参数上

重点说明:ELEMENT.PACKAGE   它并不是使用在一般的类中,而是使用在固定文件package-info.java中,
这里需要强调命名一定是“package-info”。由于package-info并不是合法的类,使用Eclipse创建的类方式会提示不合法,所以需要以创建文件的形式创建package-info.java


定义使用范围PACKAGE

@Target({ElementType.PACKAGE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public@interface  AsynLog {
  
}

那么创建文件:package-info.java  内容如下:

@AsynLog
package org.my.commons.logs.annotation; 

/**
 * 日志自定义注解
 * 方法级
 */
@Target({ElementType.METHOD})  
//注解只能在ElementType表示此类只能用设定的范围内使用,否则编译报错。
//例如,ElementTyoe.METHOD 表明注解只能使用在类的方法上,超出使用范围将会编译异常。
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Log {
    /**
     *用户要保存到日志的自定义信息
     *必传
     */
    String info();

    /**
     * 用户要保存到日志的参数和值  的索引, 从0开始
     * 默认不保存
     * 若要保存参数列表的第2,3个,则传"1,2"
     */
    String args() default "";
}

转载自:https://blog.youkuaiyun.com/u012992462/article/details/80675932

Spring Boot 中,并不存在名为 `@DB` 的标准注解。这可能是对其他特定框架扩展或自定义注解的误解。通常情况下,在处理数据库连接和操作时,开发者会使用诸如 `@Repository`, `@PersistenceContext`, 或者 `@Transactional` 这样的注解来管理数据访问层组件。 如果确实存在一个名为 `@DB` 的自定义注解,则其具体用法取决于该注解的设计目的以及实现逻辑。为了更好地理解如何在一个假设场景下创建并使用这样的注解,可以考虑如下例子: ### 创建自定义 @DB 注解 首先定义一个新的 Java 注解类型,命名为 `DB`: ```java import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) public @interface DB { String value() default "default"; } ``` 此代码片段展示了如何声明一个简单的自定义注解 `@DB`[^4]。 ### 应用 @DB 注解到 Repository 类 接着可以在某个负责与数据库交互的服务类上应用这个新创建的注解: ```java import org.springframework.stereotype.Repository; @Repository @DB(value="myDatabaseConnection") public class MyCustomRepo { public void performDbOperation(){ System.out.println("@DB annotation is used here."); } } ``` 上述代码中,通过给定参数指定了具体的数据库连接名称 `"myDatabaseConnection"` 给 `value()` 属性[^5]。 然而需要注意的是,实际项目里很少直接这样做;更常见的方式是利用现有的 Spring Data JPA 接口或其他持久化技术所提供的特性来进行开发工作。对于想要控制不同环境下的资源配置情况,应该借助于像 `application.yml` 文件中的 profile-specific settings 或者配合 `@Profile` 和 `@ConditionalOnProperty` 等条件判断型注解一起完成相应需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值