java - 为什么即使提供了参数,spring bean 也会运行默认构造函数?
问题描述
我是春天的新手。我创建了一个带有默认构造函数和两个参数的类。我在 bean xml 文件中定义了它。但是当我运行应用程序时,它仍然运行默认构造函数而不是带参数的构造函数。我在这里找不到我做错了什么。这是代码:
构造函数ArgsApp.java
package com.kirancyrusken.springDemo;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class ConstructorArgsApp {
public static void main(String[] args) {
//1. Create ApplicationContext
ApplicationContext ctx = new ClassPathXmlApplicationContext("beans-cp.xml");
//2 Create the bean
Organization org = (Organization) ctx.getBean("myorg");
//3. invoke the company slogan the bean
org.corporateSlogan();
System.out.println(org);
//4. Close the application Context (container)
((ClassPathXmlApplicationContext) ctx).close();
}
}
组织.java
package com.kirancyrusken.springDemo;
public class Organization {
private String companyName;
private int yearOfIncorporation;
public Organization() {
}
public Organization(String companyName, int yearOfIncorporation) {
this.companyName = companyName;
this.yearOfIncorporation = yearOfIncorporation;
}
public void corporateSlogan() {
String slogan = "We build the ultimate driving machines";
System.out.println(slogan);
}
@Override
public String toString() {
return "Organization [companyName=" + companyName + ", yearOfIncorporation=" + yearOfIncorporation + "]";
}
}
bean-cp.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="myorg"
class="com.kirancyrusken.springDemo.Organization">
<constructor-arg value="BMW"></constructor-arg>
<constructor-arg value="1929"></constructor-arg>
</bean>
解决方案
在使用 ClassPathXmlApplicationContext 时,会加载目录资源下的 beans.xml。如果文件存在于其他任何地方,则不会加载
推荐阅读
- custom-wordpress-pages - 使用密码打开只读 URL
- php - 使用 symfony 强制重新加载浏览器历史记录
- ruby-on-rails - 如何在 .html.slim 文件之间传递 ruby 变量
- regex - 有没有办法使用 PrestoDB 优化以下插入?
- oauth - 我可以自定义 WSO2 APIM 令牌响应 JSON 属性吗?
- android - Giphy SDK 不适用于 proguard / r8 启用
- git - Git 合并:就像在 'Merge pull request #8 from githubUser/branch'
- python-3.x - Python:为每行子图绘制不同的图形背景颜色
- enterprise-architect - Enterprise Architect:在序列图中创建返回消息
- python - 在 Pygame 中滚动无限背景