我是Spring的新手,正在寻找详细的知识。我正在阅读有关自动装配的知识,并阅读了You cannot autowire so-called simple properties such as primitives, Strings, and Classes (and arrays of such simple properties)
here。
1)我不明白Classes
在这里是什么意思?
2)他们说您不能自动连接素数,但是我尝试了Integer
包装类,但是它们仍然没有用,为什么?请参见下面的代码。
豆类:
<bean id="teacher" class="com.climesoft.webapp.model.Teacher"
autowire="byName">
</bean>
<bean id="id" class="java.lang.Integer">
<constructor-arg value="20" />
</bean>
此处的Java类:
public class Teacher {
private String name;
// private int id;
private Integer id; // for autowiring
private String phone;
private Course course;
public Course getCourse() {
return course;
}
public void setCourse(Course course) {
this.course = course;
}
public Teacher() {
System.out.println("Calling Teacher No Param Constructor");
}
public Teacher(String name, Integer id, String phone) {
this.name = name;
this.id = id;
this.phone = phone;
System.out.println("Calling Teacher Param Constructor");
}
public String getName() {
System.out.println("Calling Teacher getName");
return name;
}
public void setName(String name) {
System.out.println("Calling Teacher setName");
this.name = name;
}
public Integer getId() {
System.out.println("Calling Teacher getId");
return id;
}
public void setId(Integer id) {
System.out.println("Calling Teacher setId");
this.id = id;
}
public String getPhone() {
System.out.println("Calling Teacher getPhone");
return phone;
}
public void setPhone(String phone) {
System.out.println("Calling Teacher setPhone");
this.phone = phone;
}
@Override
public String toString() {
return "Teacher [name=" + name + ", id=" + id + ", phone=" + phone + ", course=" + course + "]";
}
}
答案 0 :(得分:1)
该句子存在一些代名词问题,可能会阻止您正确理解它。
它可能更容易理解,如下所示:
您不能自动连接所谓的简单属性,例如基元, 这样的简单属性的字符串和类(和数组)。
无论如何,这实际上意味着任何原语,字符串和原语类(即包装器类(如Integer),原语/字符串/包装器的数组)都不能自动装配。
自动装配从本质上帮助我们连接用户定义的类(当然也定义了框架),而上述所有东西在默认情况下由于涉及的模棱两可可能非常复杂。
答案 1 :(得分:0)
因此,基本上,自动装配不算什么,但是您要在依赖类中引用该类的对象(或Bean)。作为int,double,所有这些不是对象而是原始类型的字节都无法自动装配。
但是您可以使用诸如 String , Integer , Boolean 之类的原始类型的对象对应部分。
>答案 2 :(得分:-1)
实际上,您可以创建Class类型的bean:
<bean id="myClass" class="java.lang.Class" factory-method="forName">
<constructor-arg value="com.MyClass"/>
</bean>
您可以自动连接int:
<bean id="autowiredInt" class="java.lang.Integer" factory-method="valueOf">
<constructor-arg value="100"/></bean>
然后:
@Autowired @Qualifier("autowiredInt")
private int autowiredInt;
或者您可以使用@Value注释。