我正在使用注释创建服务:
@Service
@Repository
public class UserServiceImpl implements UserService {
private String defaultPassword;
@Autowired
private UserRepository userRepository;
// ...
@Override
public void setDefaultPassword(String defaultPassword) {
this.defaultPassword = defaultPassword;
}
@Override
public String getDefaultPassword() {
return defaultPassword;
}
}
我想使用Spring XML配置而不是通过注释来配置defaultPassword
值,所以我在XML定义中添加了以下内容:
<bean id="userServiceImpl" class="com.test.service.UserServiceImpl">
<property name="defaultPassword" value="youmustchangethis" />
</bean>
然后,我写下测试:
public class UserServiceImplTest extends AbstractServiceImplTest {
@Autowired
private UserService userService;
// ...
}
我在注释和XML声明中使用bean名称(使用bean id)。我的问题是userService
中的UserServiceImplTest
变量是否总是由在XML和注释中配置的相同单例bean注入?我已经搜索了文档,但没有找到&hybrid;&#39; hybrid&#39;像这样的方法。
答案 0 :(得分:4)
在这种情况下,在xml文件中定义的bean将覆盖从注释生成的bean。这是因为spring命名注释bean基于类名,第一个字母变为小写。除非你给它一个explit名称。不能存在两个同名的bean,因此xml定义会覆盖注释1。
你最终会在这里找到一个名为userServiceImpl
的单身人士。