2017-12-03 33 views
1

自分のコードで@Autowiredアノテーションをいくつか行っていましたが、疑問に遭遇しました。名前がの場合、となっていますが、GetName.javaにEmployee Beanがどこに挿入されているのかわかりません。私は注釈を使用して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(); 

} 
} 

何か不足していますか?

ご協力いただければ幸いです。

+0

GetNames beanと呼ばれるコードのような情報を追加することはできません –

+0

申し訳ありませんが、私はあなたを取得しませんでした。私は、GetName.java内のEmployee.javaのgetName()を使用しました。 –

+0

これはうまくいかないはずです。 ''がありません。あなたが実際に使用しているコードとして投稿したコードとすべてを再コンパイルしてください。あなたが投稿したものでは、 "no-argument constructor"エラーが発生するはずです。 – Oleg

答えて

関連する問題