猿问

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

我是 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 + "]";

    }



}



慕尼黑的夜晚无繁华
浏览 296回答 3
3回答

慕村9548890

句子中存在一些副词问题,可能会阻止您正确理解它。它可以更容易理解如下:您不能自动装配所谓的简单属性,例如这些简单属性的基元、字符串和类(和数组)。无论如何,它的实际意思是任何原语、字符串和原语类(即像整数这样的包装器类)、原语/字符串/包装器数组都不能自动装配。自动装配的本质帮助我们连接用户定义的(当然还有框架定义的)类,而由于涉及的歧义,所有上述内容在默认情况下连接起来可能非常复杂。

子衿沉夜

您不能自动连接基本类型,如(int、boolean、long、short、byte)等等。自动装配只能对作为对象类(直接或间接)的子类的类进行。所以基本上,自动装配只是您在依赖类中引用类的对象(或 Bean)。作为 int、double、byte 所有这些不是对象而是原始类型,它们不能自动装配。但是您可以使用这些原始类型的对象计数器部分,例如String、Integer、Boolean您可以自动装配这些。

忽然笑

实际上你可以创建一个类类型的bean:<bean id="myClass" class="java.lang.Class" factory-method="forName">&nbsp; &nbsp;<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")&nbsp;private int autowiredInt;
随时随地看视频慕课网APP

相关分类

Java
我要回答