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

时间:2018-03-01 09:29:35

标签: java spring spring-boot

我有以下界面

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吗?

1 个答案:

答案 0 :(得分: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){
         ...
       }

    };
}