2017-12-03 3 views
1

내가 실수를 범한 코드에서 @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,

나는 뭔가를 놓치고 있습니까?

도움을 주시면 감사하겠습니다.

+0

GetNames bean이라고 부르는 코드와 같은 정보를 더 추가 할 가능성은 희박합니다 –

+0

미안하지만 당신을 얻지 못했습니다. GetName.java에서 Employee.java의 getName()을 사용했습니다. –

+0

작동하지 않아야합니다.''이 없습니다. 모든 코드와 실제로 사용한 코드로 게시 한 코드를 모두 다시 컴파일해야합니다. 게시 한 내용으로 "인수가없는 생성자"오류가 발생해야합니다. – Oleg

답변

관련 문제