限制用户仅限自动装配接口

问题描述 投票:2回答:1

我有以下界面

public interface MTS{
   public SrvResponse sendMessage(MTSModel msg);
   public SrvResponse sendMessage(MTSModel msg, Type type);
}

实施

@Component
public class MTSImpl implements MTS {...}

我可以限制用户只在春季启动时自动装配接口private @Autowired MTS service;而不是MTSImpl吗?

java spring spring-boot
1个回答
2
投票

我可以限制用户仅自动装配私人@Autowired MTS服务接口;春季靴子不是MTSImpl?

Spring不对注射提供此类限制。 作为替代方案,您可以通过在不使用的包中使用package private(默认访问修饰符)来“保护”您的实现类与客户端:

package foo.internal;
class MTSImpl implements MTS {
   ...
}

或者要完全隐藏它,您可以将其定义为匿名类:

@Bean
public MTS getMts() {
    return new MTS() {

       @Override
       public SrvResponse sendMessage(MTSModel msg){           
         ...
       }
       @Override
       public SrvResponse sendMessage(MTSModel msg, Type type){
         ...
       }

    };
}
© www.soinside.com 2019 - 2024. All rights reserved.