Spring 使用“自动连线”;byName“;忽略autowire候选=错误配置
根据Spring框架参考文档的定义,当bean的XML定义中将Spring 使用“自动连线”;byName“;忽略autowire候选=错误配置,spring,dependency-injection,autowired,Spring,Dependency Injection,Autowired,根据Spring框架参考文档的定义,当bean的XML定义中将autowire-candidate设置为false时,它会将bean从自动布线基础结构中排除。本节未讨论此案例的任何例外情况 当autowire被设置为byType时,此功能起作用。但是当它被设置为byName时,autowire-candidate=“false”配置被忽略,bean仍然是自动连接的 我的问题是: 这是否是设计而非文件化的(或) 这是一个错误(或错误) 我的配置中是否缺少某些内容 以下是相关源列表: Movie
autowire-candidate
设置为false
时,它会将bean从自动布线基础结构中排除。本节未讨论此案例的任何例外情况
当autowire
被设置为byType
时,此功能起作用。但是当它被设置为byName
时,autowire-candidate=“false”
配置被忽略,bean仍然是自动连接的
我的问题是:
- 这是否是设计而非文件化的(或)
- 这是一个错误(或错误)
- 我的配置中是否缺少某些内容
public class MovieDataStore {
// Just some dummy class
}
public class MovieDao {
private MovieDataStore movieDataStore;
public MovieDataStore getMovieDataStore() {
return movieDataStore;
}
public void setMovieDataStore(MovieDataStore movieDataStore) {
this.movieDataStore = movieDataStore;
}
}
MovieDao.java
public class MovieDataStore {
// Just some dummy class
}
public class MovieDao {
private MovieDataStore movieDataStore;
public MovieDataStore getMovieDataStore() {
return movieDataStore;
}
public void setMovieDataStore(MovieDataStore movieDataStore) {
this.movieDataStore = movieDataStore;
}
}
spring-context.xml片段
<bean id="movieDao" class="com.example.spring.MovieDao" autowire="byName"/>
<bean id="movieDataStore" class="com.example.spring.MovieDataStore"
autowire-candidate="false"/>
我希望它打印null
,因为我请求自动连线的唯一依赖项实际上被排除在自动连线之外。但是,上面的测试代码打印了以下内容:
com.example.spring.MovieDataStore@22915056
请注意,这仅在autowirebyName
的情况下发生。如果我按类型自动连线byType
,它会按预期打印null
我使用的是Spring框架版本4.3.5.RELEASE和Java 7。根据我提出的,它是经过设计的,没有文档记录
Juergen Hoeller对门票的评论:
这是一个旧的设计决策,其中autowire candidate=“false”仅影响基于类型的自动关联尝试,而不影响按名称直接引用。。。也不是autowire=“byName”。虽然后者可能有争议,但我现在不打算更改它,因为autowire=“byName”一开始是一种过时的机制。因此,我将把这变成一个文档问题