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("类---登陆失败");
}
}
}