为了账号安全,请及时绑定邮箱和手机立即绑定

您不能自动装配所谓的简单属性,例如基元、字符串和类

您不能自动装配所谓的简单属性,例如基元、字符串和类

慕尼黑的夜晚无繁华 2021-08-25 17:21:42
我是 Spring 的新手,正在寻找细节学习。我正在阅读有关自动装配的内容并You cannot autowire so-called simple properties such as primitives, Strings, and Classes (and arrays of such simple properties) 在此处阅读。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 + "]";    }}
查看完整描述

3 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

句子中存在一些副词问题,可能会阻止您正确理解它。

它可以更容易理解如下:

您不能自动装配所谓的简单属性,例如这些简单属性的基元、字符串和类(和数组)。

无论如何,它的实际意思是任何原语、字符串和原语类(即像整数这样的包装器类)、原语/字符串/包装器数组都不能自动装配。

自动装配的本质帮助我们连接用户定义的(当然还有框架定义的)类,而由于涉及的歧义,所有上述内容在默认情况下连接起来可能非常复杂。


查看完整回答
反对 回复 2021-08-25
?
子衿沉夜

TA贡献1828条经验 获得超3个赞

  • 您不能自动连接基本类型,如(int、boolean、long、short、byte)等等。

  • 自动装配只能对作为对象类(直接或间接)的子类的类进行。

所以基本上,自动装配只是您在依赖类中引用类的对象(或 Bean)。作为 int、double、byte 所有这些不是对象而是原始类型,它们不能自动装配。

但是您可以使用这些原始类型的对象计数器部分,例如StringIntegerBoolean您可以自动装配这些。


查看完整回答
反对 回复 2021-08-25
?
忽然笑

TA贡献1806条经验 获得超5个赞

实际上你可以创建一个类类型的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;


查看完整回答
反对 回复 2021-08-25
  • 3 回答
  • 0 关注
  • 295 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信