本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
转载自夜明的孤行灯
本文链接地址: https://www.huangyunkun.com/2016/03/06/spring-framework-4-3-new/
Spring Framework 4.3有两个有趣的改动,第一个是单一构造函数的自动注入,第二个就是注入依赖条件的配置。
来看看之前版本的代码
@Service public class FooService { private final FooRepository repository; @Autowired public FooService(FooRepository repository) { this.repository = repository } }
@Autowired注解是一个很关键的东西,如果你忘记了,那么运行就会出现null错误。在新版本中,你无需这个注解了,Spring会自动处理这种情况。当然,这个功能同样对@Configuration等有效。
新的ObjectProvider可以提供两个特别的方法getIfAvailable和getIfUnique。比如这种
@Service public class FooService { private final FooRepository repository; public FooService(ObjectProvider<FooRepository> repositoryProvider) { this.repository = repositoryProvider.getIfUnique(); } }
具体的实现可以参考DefaultListableBeanFactory,比如
public Object getIfUnique() throws BeansException { DependencyDescriptor descriptorToUse = new DependencyDescriptor( descriptor ) { @Override public boolean isRequired() { return(false); } @Override public Object resolveNotUnique( Class<?> type, Map<String, Object> matchingBeans ) { return(null); } }; if ( this.optional ) { return(new OptionalDependencyFactory().createOptionalDependency( descriptorToUse, this.beanName ) ); }else { return(doResolveDependency( descriptorToUse, this.beanName, null, null ) ); } }
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
转载自夜明的孤行灯
本文链接地址: https://www.huangyunkun.com/2016/03/06/spring-framework-4-3-new/