我正在使用注释创建一个服务:
@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)。我的问题是UserServiceImplTest
中的userService
变量是否总是由XML和注释中配置的同一个单例bean注入?我搜索了文档,但没有找到像这样的"混合"方法的解释。
在这种情况下,xml文件中定义的bean将覆盖从注释生成的bean。这是因为spring根据类名命名注释bean,第一个字母变为小写。除非你给它一个解释性的名字。不可能存在两个同名的bean,因此xml定义将覆盖注释bean。
在这里,您将得到一个名为userServiceImpl
的单例。