春的IoC(制御の反転)3

パートI:SpringのIoC(制御の反転)2

前回の記事beans.xmlでは、インスタンス化する必要のあるクラスオブジェクトを指定しました。オブジェクトを作成するために呼び出され、デフォルト工法無パラメータが建設されていません。これが良いテストです:次のように、次のカテゴリを変更します。SpringIoC

UserServiceImpl

public class UserServiceImpl implements UserService{
    
    

    private UserDao userDao;

    // set注入
    public void setUserDao(UserDao dao){
    
    
        this.userDao = dao;
    }

    public UserServiceImpl(){
    
    
        System.out.println("UserServiceImpl无参数构造!");
    }

    public UserServiceImpl(UserDao dao){
    
    
        this.userDao = dao;
        System.out.println("UserServiceImpl有参构造!");
    }

    public void getUserService() {
    
    
        userDao.getUser();
    }
}

この時点でテストします。

public class myTest {
    
    

    @Test
    public void Test(){
    
    
        // create and configure beans
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        UserService userService = (UserService) context.getBean("userService");
        userService.getUserService();
    }
}

それでもを呼び出すとTest、問題はありません。テスト結果は次のとおり
ここに画像の説明を挿入します
です。デフォルトのコンストラクターは引数なしのコンストラクターであることがわかります。
次にbeans.xml、変更オブジェクトを次のように渡します。

<?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
        https://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="mySqlDao" class="com.dao.UserMySQLImpl"/>
    <bean id="oracleDao" class="com.dao.UserOracleImpl"/>

    <bean id="userService" class="com.service.UserServiceImpl">
        <constructor-arg type="com.dao.UserDao" ref="oracleDao"/>
    </bean>
</beans>

着信タイプと参照を指定します。
次に、実行しTestます。
ここに画像の説明を挿入します
コンストラクターパラメーターがドキュメントアドレスを渡します:https//docs.spring.io/spring-framework/docs/current/reference/html/core.html#beans-constructor-injection


参照ビデオアドレス:https//www.bilibili.com/video/BV1WE411d7Dv?p = 6

おすすめ

転載: blog.csdn.net/qq_26460841/article/details/115035505