java - 如何在 ApplicationContext.xml 中定义一个没有构造函数的 bean?
问题描述
我有一堂课
public class DataStore {
public String name;
public String username;
public String password;
public String token;
public String connectionString;
public String type;
public String scheme;
public boolean usesBasicAuth;
public boolean usesBearerAuth;
}
我需要在另一个项目中为它创建一个 bean。但我需要以某种方式填写这些字段。问题是我不能使用<constructor-arg ... />
,因为没有构造函数。
下面的代码导致 BeanCreationException:“无法解析匹配的构造函数”
<bean id="dataStore"
class="com.fressnapf.sdk.dataaccess.services.DataStore">
<constructor-arg index="0" value="${spring.datastore.name}"/>
...
</bean>
解决方案
假设,您有公共(您的 getter 和 setter)属性,并且只有“默认(无 args)构造函数”,那么您可以将配置更改为:
<bean id="dataStore" class="com.fressnapf.sdk.dataaccess.services.DataStore">
<property name="connectionString" value="..."/>
<!-- ... -->
</bean>
使用property
而不是constructor-arg
.
文档(Spring 4.2):https ://docs.spring.io/spring/docs/4.2.x/spring-framework-reference/html/xsd-configuration.html
推荐阅读
- javascript - React Native:是否可以在 onPanResponderMove 中停止 PanResponder 事件?
- angular - 将 angular-universal 部署到 apache 服务器(Angular 9)
- python - How to implement Integer+MyObject()?
- c# - Visual Studio 2019 无法将运行时连接字符串转换为其设计时等效项
- javascript - Bcrypt.compare 不比较密码
- reactjs - react-google-maps 点击地图获取坐标
- javascript - 加载页面上所有数据时的 Javascript/JQuery 事件
- ruby - 在 restclient 标头中添加多种内容类型
- mysql - 如果表为空,则插入多条记录
- ios - 如何处理嵌套的 Observable 字段?