我有以下界面
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
吗?
答案 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){
...
}
};
}