1. 程式人生 > 其它 >set注入與構造器注入

set注入與構造器注入

spring

set注入與構造器注入

1、配置依賴

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.3.9</version>
        </dependency>
    </dependencies>

2、編寫dao.UserDao類

package com.xiang.dao;

/**
 * Created by IntelliJ IDEA.
 * User: xiang
 * Date: 2021/9/22 10:55
 */
public interface UserDao {
    String show();
}

3、編寫dao.impl.UserDaoimpl1/UserDaoimpl2類

package com.xiang.dao.impl;

import com.xiang.dao.UserDao;

/**
 * Created by IntelliJ IDEA.
 * User: xiang
 * Date: 2021/9/22 10:56
 */
public class UserDaoImpl1 implements UserDao {
    @Override
    public String show() {
        return "查詢使用者資訊1";
    }
}
package com.xiang.dao.impl;

import com.xiang.dao.UserDao;

/**
 * Created by IntelliJ IDEA.
 * User: xiang
 * Date: 2021/9/22 10:56
 */
public class UserDaoImpl2 implements UserDao {
    @Override
    public String show() {
        return "查詢使用者資訊2";
    }
}

4、編寫service.UserService類

package com.xiang.service;

/**
 * Created by IntelliJ IDEA.
 * User: xiang
 * Date: 2021/9/22 10:57
 */
public interface UserService {
String show();
}

5、編寫service.UserServiceImpl類

package com.xiang.service;

import com.xiang.dao.UserDao;
import com.xiang.dao.impl.UserDaoImpl1;

/**
 * Created by IntelliJ IDEA.
 * User: xiang
 * Date: 2021/9/22 10:57
 */
public class UserServiceImpl implements  UserService{
//    private UserDaoImpl1 userDaoImpl1 = new UserDaoImpl1();
    private UserDao userDao;

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

    /**
     * 構造方法
     * 構造器 注入
     * @param userDao
     */
   public  UserServiceImpl(UserDao userDao){
        this.userDao = userDao;
   }

    /**
     * 調方法
     * @return
     */
    @Override
    public String show() {
        return userDao.show();
    }
}

6、編寫測試類

package com.xiang.service;

import com.xiang.dao.impl.UserDaoImpl1;
import com.xiang.dao.impl.UserDaoImpl2;
import org.junit.Test;

/**
 * Created by IntelliJ IDEA.
 * User: xiang
 * Date: 2021/9/22 11:00
 */
public class UserServiceImplTest {

    /**
     * 普通方式查詢
     */
//    @Test
//    public void Test01() {
//        UserServiceImpl service = new UserServiceImpl();
//        System.out.println(service.show());
//    }

    /**
     * set 注入
     */
//    @Test
//    public void Test02() {
//        UserServiceImpl service = new UserServiceImpl();
//        service.setUserDao(new UserDaoImpl2());
//        System.out.println(service);
//        System.out.println(service.show());
//    }

    /**
     * set 注入
     */
//    @Test
//    public void Test03() {
//        UserServiceImpl service = new UserServiceImpl();
//        service.setUserDao(new UserDaoImpl1());
//        System.out.println(service);
//        System.out.println(service.show());
//    }

    /**
     * 構造器 注入
     */
    @Test
    public void Test04() {
        UserServiceImpl service = new UserServiceImpl(new UserDaoImpl2());
        System.out.println(service);
        System.out.println(service.show());
    }
}

7、執行結果