• 请不要在回答技术问题时复制粘贴 AI 生成的内容
chenfang
V2EX  ›  程序员

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

  •  
  •   chenfang · Dec 26, 2022 · 2715 views
    This topic created in 1260 days ago, the information mentioned may be changed or developed.
    @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 replies    2022-12-26 18:05:14 +08:00
    Bromine0x23
        1
    Bromine0x23  
       Dec 26, 2022
    value 没法这样设置,要在自定义注解上添加一个 value 属性,然后用 @AliasFor 标注
    running17
        2
    running17  
       Dec 26, 2022   ❤️ 1
    楼上说的对,而且你可以用
    ```
    @AliasFor(annotation = Service.class)
    String value() default "AAA";
    ```
    来实现你的需求
    urnoob
        3
    urnoob  
       Dec 26, 2022
    其实我有个问题 op 和 2l 这种做法有什么场景场景要用的 ? 就为了省一个注解?
    xwayway
        4
    xwayway  
       Dec 26, 2022
    @urnoob #3 我觉得你说得对,自定义注解应该是对功能的增强,而不是对细节的隐藏,而且这样给了 service 一个 default 值的话,总觉得有点隐患
    sulinwork
        5
    sulinwork  
       Dec 26, 2022
    我这样写是生效的 不知道为啥楼主不行
    sulinwork
        6
    sulinwork  
       Dec 26, 2022
    @sulinwork 抱歉 确实需要
    @AliasFor(annotation = Service.class)
    String value();
    才会生效
    chenfang
        7
    chenfang  
    OP
       Dec 26, 2022
    @xwayway 这个问题倒是没啥场景,只是我在测试注解属性覆盖的时候,发现的一个小问题,只是想搞明白为啥不生效
    Bromine0x23
        8
    Bromine0x23  
       Dec 26, 2022
    @urnoob @xwayway
    value 设置默认值是不妥。
    至于组合注解确实很有用,Spring 里面就大量使用,甚至 @Service 本身也是。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1226 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 23:35 · PVG 07:35 · LAX 16:35 · JFK 19:35
    ♥ Do have faith in what you're doing.