重温Spring框架(一、基本应用之三:依赖注入的实战小例子)

40 篇文章 0 订阅

UserDAO接口:

package com.ssm.dao;

/**
 * @author YuusukeUchiha
 * @date 2020/6/16 12:59
 * @ide IntelliJ IDEA
 */
public interface UserDAO {
    public boolean login(String loginName, String loginPwd);
}

UserDAOImpl 实现类:

package com.ssm.impl;

import com.ssm.dao.UserDAO;

/**
 * @author YuusukeUchiha
 * @date 2020/6/16 13:02
 * @ide IntelliJ IDEA
 */
public class UserDAOImpl implements UserDAO {

    @Override
    public boolean login(String loginName, String loginPwd) {
        if (loginName.equals("admin") && loginPwd.equals("123456")) {
            return true;
        }
        return false;
    }
}

UserService接口:

package com.ssm.service;

/**
 * @author YuusukeUchiha
 * @date 2020/6/16 13:04
 * @ide IntelliJ IDEA
 */
public interface UserService {

    public boolean login(String loginName, String loginPwd);

}

UserServiceImpl实现类:

package com.ssm.impl;

import com.ssm.dao.UserDAO;
import com.ssm.service.UserService;

/**
 * @author YuusukeUchiha
 * @date 2020/6/16 13:05
 * @ide IntelliJ IDEA
 */
public class UserServiceImpl implements UserService {

    // 使用接口UserDAO声明对象,添加setter方法,用于依赖注入
    UserDAO userDAO;

    public void setUserDAO(UserDAO userDAO) {
        this.userDAO = userDAO;
    }

    /**
     * 实现接口中的方法
     *
     * @param loginName
     * @param loginPwd
     * @return
     */
    @Override
    public boolean login(String loginName, String loginPwd) {

        // 调用userDAO中的login()方法
        return userDAO.login(loginName, loginPwd);
    }
}

applicationContext.xml配置文件:

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p" xmlns:util="http://www.springframework.org/schema/util"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">

    <!--    配置一个bean,将指定类配置给Spring,让Spring创建其对象的实例-->


    <!--   配置创建UserDAOImpl的实例-->
    <bean id="userDAO" class="com.ssm.impl.UserDAOImpl"></bean>

    <!--    配置创建UserServiceImpl的实例-->
    <bean id="userService" class="com.ssm.impl.UserServiceImpl">

        <!--    这里将name属性设置为userDAO,代表UserServiceImpl类中的userDAO属性需要注入值。
                name属性的值可以通过ref属性或者value属性指定。
                当使用ref属性时,表示对SpringIOC容器中的某个Bean实例的引用。

                这里引用了前一个<bean>元素中创建的UserDAOImpl类中的实例userDAO,
                并将该实例赋值给了UserServiceImpl类中的userDAO属性,
                从而实现了依赖关系的注入。

                UserServiceImpl类中的userDAO属性值是通过调用setUserDAO()方法完成注入的,
                这种注入方式称为“设值注入”,该方式是Spring推荐使用的。
        -->
        <property name="userDAO" ref="userDAO"/>

    </bean>


</beans>

TestSpringDI主类:

package com.ssm;

import com.ssm.impl.UserServiceImpl;
import com.ssm.service.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * @author YuusukeUchiha
 * @date 2020/6/16 14:33
 * @ide IntelliJ IDEA
 */
public class TestSpringDI {

    public static void main(String[] args) {

        // 初始化Spring容器,加载applicationContext.xml配置
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");

        // 通过容器获取配置中的UserServiceImpl的实例
        UserService userService = (UserServiceImpl) ctx.getBean("userService");
        UserServiceImpl userServiceImpl = (UserServiceImpl) ctx.getBean("userService");

        boolean flag1 = userService.login("admin", "123456");
        boolean flag2 = userServiceImpl.login("admin", "123456");

        if (flag1) {
            System.out.println("接口---登陆成功");
        } else {
            System.out.println("接口---登陆失败");
        }

        if (flag2) {
            System.out.println("类---登陆成功");
        } else {
            System.out.println("类---登陆失败");
        }
    }
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值