gpt4 book ai didi

java - 在一个实例 bean 上同时使用注解和 XML 配置

转载 作者:行者123 更新时间:2023-11-30 07:23:12 24 4
gpt4 key购买 nike

我正在使用注解创建服务:

@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 注入(inject)?我搜索了文档,但没有找到对这种“混合”方法的解释。

最佳答案

在这种情况下,在 xml 文件中定义的 bean 将覆盖从注释生成的 bean。这是因为spring根据类名命名注解bean,首字母小写。除非你给它一个明确的名字。不能存在两个同名的 bean,因此 xml 定义会覆盖注解。

你最终得到一个名为 userServiceImpl 的单例。

关于java - 在一个实例 bean 上同时使用注解和 XML 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12154968/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com