Heim  >  Artikel  >  Java  >  Welche drei Arten der Frühlings-IOC-Injektion gibt es?

Welche drei Arten der Frühlings-IOC-Injektion gibt es?

青灯夜游
青灯夜游Original
2021-02-04 17:47:5717322Durchsuche

Die drei Möglichkeiten der Spring-IOC-Injektion sind: 1. Setter-Methodeninjektion Nachdem der Container die Bean durch Aufrufen des Parameterlosen Konstruktors oder der Parameterlosen statischen Factory-Methode instanziiert hat, ruft er die Setter-Methode der Bean auf. 2. Injektion der Konstruktormethode. 3. P-Namespace-Injektion.

Welche drei Arten der Frühlings-IOC-Injektion gibt es?

Die Betriebsumgebung dieses Tutorials: Windows7-System, Java8-Version, Dell G3-Computer.

Spring IOC (drei Methoden der Abhängigkeitsinjektion):

1. Setter-Methodeninjektion

Setter-Methodeninjektion ist, wenn der Container eine Bean durch Aufrufen eines Parameterlosen Konstruktors oder einer Parameterlosen statischen Factory-Methode instanziiert Danach wird die Setter-Methode der Bean aufgerufen, die eine Setter-basierte Abhängigkeitsinjektion implementiert.

package com.jpeony.spring.setter;
import com.jpeony.spring.common.HelloServiceImpl;public class HelloWord {
private HelloService helloService;
 
    // setter方式注入Bean
    public void setHelloService(HelloService helloService) {
        this.helloService = helloService;
    }
 
    @Override
    public void selfIntroduction() {
        // 向大家打招呼
        helloService.sayHello("大家好!");
    }
 
}
<?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">
    <!--
       Bean声明:
         该bean类似于javaConfig中的@Bean注解;
         用于创建bean的类通过class属性来指定,并且需要使用全限定的类名。
         通过id指定bean的ID。如果不显示指定,默认使用class的全限定名进行命名。
         eg:
         com.jpeony.spring.common.HelloServiceImpl#0,其#0是一个计数器的形式,
         用来区分相同类型的其他bean。
         使用自动化命名很方便,但是没有多少实际用处,还是建议自己给bean显示设定ID。
     -->
    <bean id="helloService" class="com.jpeony.spring.common.HelloServiceImpl"/>
 
    <!-- setter注入bean -->
    <bean id="HelloWord" class="com.jpeony.spring.setter.HelloWord">
        <property name="helloService" ref="helloService"/>
    </bean>
 
</beans>

2. Konstruktor-Abhängigkeitsinjektion wird durch Auslösen des Konstruktors einer Klasse über den Container erreicht, wobei jeder Parameter eine Abhängigkeit von anderen Klassen darstellt.
package com.jpeony.spring.setter;
import com.jpeony.spring.common.HelloServiceImpl;

public class HelloWord {
    private HelloService helloService;
 
    // 构造方法注入
    public HelloWord (HelloService helloService) {
        this.helloService = helloService;
    }
 
}
<?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">
    <!--
       Bean声明:
         该bean类似于javaConfig中的@Bean注解;
         用于创建bean的类通过class属性来指定,并且需要使用全限定的类名。
         通过id指定bean的ID。如果不显示指定,默认使用class的全限定名进行命名。
         eg:
         com.jpeony.spring.common.HelloServiceImpl#0,其#0是一个计数器的形式,
         用来区分相同类型的其他bean。
         使用自动化命名很方便,但是没有多少实际用处,还是建议自己给bean显示设定ID。
     -->
    <bean id="helloService" class="com.jpeony.spring.common.HelloServiceImpl"/>
 
    <!-- 构造方法注入bean -->
    <bean id="HelloWord" class="com.jpeony.spring.setter.HelloWord">
        <constructor-arg><ref bean="helloService"/></constructor-arg>
    </bean>
 
</beans>

3. !

Das obige ist der detaillierte Inhalt vonWelche drei Arten der Frühlings-IOC-Injektion gibt es?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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