自分のコードで@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();
}
}
何か不足していますか?
ご協力いただければ幸いです。
GetNames beanと呼ばれるコードのような情報を追加することはできません –
申し訳ありませんが、私はあなたを取得しませんでした。私は、GetName.java内のEmployee.javaのgetName()を使用しました。 –
これはうまくいかないはずです。 ' 'がありません。あなたが実際に使用しているコードとして投稿したコードとすべてを再コンパイルしてください。あなたが投稿したものでは、 "no-argument constructor"エラーが発生するはずです。 –
Oleg