Heim > Java > javaLernprogramm > Hauptteil

Detaillierte Erklärung, wie Spring Objekte erstellt

零下一度
Freigeben: 2017-07-21 22:09:02
Original
2329 Leute haben es durchsucht

Informationen zum Aufbau von Spring finden Sie unter: Eine kurze Analyse des Aufbaus des Spring-Frameworks. Vor dem Testen sollten Sie die Umgebung konfigurieren und die relevanten Jar-Pakete importieren. Von Spring erstellte Objekte befinden sich standardmäßig im Singleton-Modus, sofern dies nicht über den Bereich angegeben wird.

1. Objekte über Konstruktoren erstellen.

2.1 Wert mit Konstruktor ohne Argumente + Setter-Methode einfügen

Die einfachste Möglichkeit zum Erstellen eines Objekts besteht darin, dass Sie nur einen Konstruktor ohne Argumente benötigen (in der Klasse ist kein Konstruktor geschrieben). , der Standardwert ist Es gibt einen Konstruktor. Wenn ein Konstruktor geschrieben wird, wird der Standardkonstruktor ohne Argumente nicht automatisch erstellt!!) und die Setter-Methode des Feldes.

Personenklasse:

Detaillierte Erklärung, wie Spring Objekte erstellt
package com.mc.base.learn.spring.bean;public class Person {private String name;private Integer id;    public String getName() {return name;
    }public void setName(String name) {this.name = name;
    }public Integer getId() {return id;
    }public void setId(Integer id) {this.id = id;
    }

    @Overridepublic String toString() {return "Person [name=" + name + ", id=" + id + "]";
    }

}
Nach dem Login kopieren
Detaillierte Erklärung, wie Spring Objekte erstellt

XML-Konfiguration:

Detaillierte Erklärung, wie Spring Objekte erstellt
<?xml  version="1.0" encoding="UTF-8"?><beans><bean><property></property><property></property></bean>    
</beans>
Nach dem Login kopieren
Detaillierte Erklärung, wie Spring Objekte erstellt

Das Wesentliche ist:

SpringContext verwendet einen Konstruktor ohne Parameter, um ein Objekt zu erstellen, und verwendet dann die Setter-Methode, um einen Wert zuzuweisen. Wenn der Parameterlose Konstruktor nicht vorhanden ist, wird daher ein Fehler gemeldet, wenn der Spring-Kontext das Objekt erstellt.

Detaillierte Erklärung, wie Spring Objekte erstellt
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'person' defined in class path resource [applicationContext.xml]: Instantiation of bean failed; 
nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.mc.base.learn.spring.bean.Person]: No default constructor found; 
nested exception is java.lang.NoSuchMethodException: com.mc.base.learn.spring.bean.Person.
Nach dem Login kopieren
Detaillierte Erklärung, wie Spring Objekte erstellt

2.2 Verwendung parametrischer Konstruktion Die Funktion wird direkt in die

Person-Klasse eingefügt:

Detaillierte Erklärung, wie Spring Objekte erstellt
package com.mc.base.learn.spring.bean;public class Person {private String name;private Integer id;    public Person(String name, Integer id) {super();this.name = name;this.id = id;
    }public String getName() {return name;
    }public void setName(String name) {this.name = name;
    }public Integer getId() {return id;
    }public void setId(Integer id) {this.id = id;
    }

    @Overridepublic String toString() {return "Person [name=" + name + ", id=" + id + "]";
    }

}
Nach dem Login kopieren
Detaillierte Erklärung, wie Spring Objekte erstellt

XML-Konfiguration:

Detaillierte Erklärung, wie Spring Objekte erstellt
<?xml  version="1.0" encoding="UTF-8"?><beans><bean><constructor-arg></constructor-arg><constructor-arg></constructor-arg></bean>    
</beans>
Nach dem Login kopieren
Detaillierte Erklärung, wie Spring Objekte erstellt

2. Erstellen Sie Objekte mit statischen Factory-Methoden.

Statische Factory-Objekte werden beim Laden des Containers erstellt.

Detaillierte Erklärung, wie Spring Objekte erstellt
package com.mc.base.learn.spring.factory;import com.mc.base.learn.spring.bean.Person;public class PersonStaticFactory {    public static Person createPerson(){return new Person();
    }    /** * 工厂方法带有参数如何处理?
     * @Title: createPerson 
     * @Description: TODO(这里用一句话描述这个方法的作用) 
     * @param  @param id
     * @param  @param name
     * @param  @return 
     * @return Person    返回类型 
     * @throws     */public static Person createPerson(Integer id,String name){return new Person(name,id);
    }
}
Nach dem Login kopieren
Detaillierte Erklärung, wie Spring Objekte erstellt
    <span style="color: #008000;"><!--<span style="color: #008000;">静态的工厂方法核心是class+factory-method <span style="color: #008000;">--><span style="color: #0000ff;"><span style="color: #800000;"><span style="color: #ff0000;"><span style="color: #0000ff;"><span style="color: #ff0000;"><span style="color: #0000ff;"><span style="color: #ff0000;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #800000;"><span style="color: #0000ff;"><br>    <span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"> <span style="color: #0000ff;">bean <span style="color: #ff0000;">id<span style="color: #0000ff;">="person"<span style="color: #ff0000;"> class<span style="color: #0000ff;">="com.mc.base.learn.spring.factory.PersonStaticFactory"<span style="color: #ff0000;"> factory-method<span style="color: #0000ff;">="createPerson"<span style="color: #0000ff;">><br><span style="color: #008000;"><!--<span style="color: #008000;">通过property方法向createPerson传递参数 <span style="color: #008000;">--></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><br>        <property name="name" value="LiuChunfu"></property><br>        <property name="id" value="125"></property><br>    <br></span></span></span></span></span></span></span></span></span>
Nach dem Login kopieren

Der Test läuft wie folgt ab:

    @Testpublic void testName() throws Exception {
        ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
        Person person=ac.getBean("person3", Person.class);
        System.out.println(person);//Person [name=LiuChunfu, id=125]}
Nach dem Login kopieren

3. Erstellen Sie Objekte über Instanzfabriken.

Instanzfabrik ruft Objekte über Instanzen auf, aber die erhaltenen Objekte befinden sich letztendlich im Single-Interest-Modus. Die von der Instanzfabrik und der statischen Fabrik erstellten Objekte sind beide im Singleton-Modus. Der Unterschied zwischen den beiden ist der tatsächliche Unterschied beim Erstellen des Objekts. Die statische Fabrik wird erstellt, wenn der Container erstellt wird, und die Instanzfabrik wird erstellt, wenn die Methode erstellt wird heißt. Leser, die das Singleton-Musterdesign (Hungry-Man-Stil und Lazy-Man-Stil) in Java-Designmustern kennen, müssen hier über Erfahrung mit dem statischen Factory-Muster und dem Instanz-Factory-Muster verfügen.

Detaillierte Erklärung, wie Spring Objekte erstellt
package com.mc.base.learn.spring.factory;import com.mc.base.learn.spring.bean.Person;public class PersonFactory {public Person createInstance() {return new Person();
    }
}
Nach dem Login kopieren
Detaillierte Erklärung, wie Spring Objekte erstellt
    <bean></bean><bean><property></property><property></property></bean>
Nach dem Login kopieren
    @Testpublic void testName() throws Exception {
        ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
        Person person=ac.getBean("person4",Person.class);
        System.out.println(person);//Person [name=LiuChunfu, id=125]}
Nach dem Login kopieren

Natürlich können Sie beim Erstellen eines Objekts und der oben genannten Parameterübergabe zusätzlich zur Übergabe der Standardparameter beim Erstellen des Objekts die Parameter auch später über die Setter-Methode übergeben.

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung, wie Spring Objekte erstellt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage