내가 실수를 범한 코드에서 @Autowired 주석을 사용하고있었습니다. 나는 이름을 John으로 받고 있는데 GetName.java에 Employee 빈을 주입 한 곳이 없다. 비록 내가 annotation을 사용하여 autowiring하지 않았더라도 bean은 주입되었다. 생성자를 사용하는 동안 염두에 두어야 할 몇 가지 구체적인 전제 조건이 있습니까?@Autowired를 사용하지 않고 Bean을 삽입하려고합니다.
Employee.Java
package com.sample.employee;
public class Employee {
public String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
GetName.java
package com.sample.salary;
import org.springframework.beans.factory.annotation.Autowired;
import com.sample.employee.Employee;
public class GetName {
// @Autowired
public Employee emp;
// @Autowired
public GetName(Employee emp) {
this.emp = emp;
}
public void displayName() {
System.out.println(emp.getName()); //prints John
}
}
spring.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
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"
xmlns:context="http://www.springframework.org/schema/context">
<context:annotation-config />
<!-- <context:component-scan base-package="com.sample.employee"/> -->
<bean id="empl" class="com.sample.employee.Employee">
<property name="name" value="John" />
</bean>
<bean id="GetNames" class="com.sample.salary.GetName"/>
</beans>
MainClass.java
package com.sample.employee;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.sample.salary.SalaryCalculator;
public class MainCLass {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
GetName cal = (GetName) context.getBean("GetNames");
cal.displayName();
}
}
,745,
나는 뭔가를 놓치고 있습니까?
도움을 주시면 감사하겠습니다.
GetNames bean이라고 부르는 코드와 같은 정보를 더 추가 할 가능성은 희박합니다 –
미안하지만 당신을 얻지 못했습니다. GetName.java에서 Employee.java의 getName()을 사용했습니다. –
작동하지 않아야합니다.' '이 없습니다. 모든 코드와 실제로 사용한 코드로 게시 한 코드를 모두 다시 컴파일해야합니다. 게시 한 내용으로 "인수가없는 생성자"오류가 발생해야합니다. –
Oleg