V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
chenfang
V2EX  ›  程序员

Spring 的 @Service 注解使用到自定义注解上,不生效,有人知道这是为什么么

  •  
  •   chenfang · 2022-12-26 13:58:53 +08:00 · 1919 次点击
    这是一个创建于 700 天前的主题,其中的信息可能已经有所发展或是发生改变。
    @Target({ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Transactional
    @Service(value = "AAA")
    public @interface TransactionalService {
    
    
    
    
    
    }
    
    @TransactionalService
    public class AService {
    
        public void save(){
            System.out.println("save");
        }
    }
    
    

    环境:

    spring-boot 2.7.6

    我自定义了一个注解,然后 @Service(value = "AAA"),接下来使用这个注解, 但是这个 AService 对象的名称是 AService,而不是 AAA

    这是哪里有问题?

    8 条回复    2022-12-26 18:05:14 +08:00
    Bromine0x23
        1
    Bromine0x23  
       2022-12-26 14:08:58 +08:00
    value 没法这样设置,要在自定义注解上添加一个 value 属性,然后用 @AliasFor 标注
    running17
        2
    running17  
       2022-12-26 14:20:40 +08:00   ❤️ 1
    楼上说的对,而且你可以用
    ```
    @AliasFor(annotation = Service.class)
    String value() default "AAA";
    ```
    来实现你的需求
    urnoob
        3
    urnoob  
       2022-12-26 15:27:50 +08:00
    其实我有个问题 op 和 2l 这种做法有什么场景场景要用的 ? 就为了省一个注解?
    xwayway
        4
    xwayway  
       2022-12-26 17:10:26 +08:00
    @urnoob #3 我觉得你说得对,自定义注解应该是对功能的增强,而不是对细节的隐藏,而且这样给了 service 一个 default 值的话,总觉得有点隐患
    sulinwork
        5
    sulinwork  
       2022-12-26 17:12:50 +08:00
    我这样写是生效的 不知道为啥楼主不行
    sulinwork
        6
    sulinwork  
       2022-12-26 17:17:04 +08:00
    @sulinwork 抱歉 确实需要
    @AliasFor(annotation = Service.class)
    String value();
    才会生效
    chenfang
        7
    chenfang  
    OP
       2022-12-26 17:54:11 +08:00
    @xwayway 这个问题倒是没啥场景,只是我在测试注解属性覆盖的时候,发现的一个小问题,只是想搞明白为啥不生效
    Bromine0x23
        8
    Bromine0x23  
       2022-12-26 18:05:14 +08:00
    @urnoob @xwayway
    value 设置默认值是不妥。
    至于组合注解确实很有用,Spring 里面就大量使用,甚至 @Service 本身也是。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5553 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 07:51 · PVG 15:51 · LAX 23:51 · JFK 02:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.