IOC控制反转

按照平时的习惯,创建spring项目
在这里插入图片描述
dao中:

//User:
public interface User {
    void getUer();
}

//UserImpl
public class UserImpl implements User {
    @Override
    public void getUer() {
        System.out.println("user impl");
    }
}

//StudentImpl
public class StudentImpl implements User{
    @Override
    public void getUer() {
        System.out.println("Student Impl");
    }
}

//TeacherImpl
public class TeacherImpl implements User{
    @Override
    public void getUer() {
        System.out.println("Teacher Impl");
    }
}

service中

//UserService
public interface UserService {
    void getUser();
}
//UserServiceImp
public class UserServiceImpl implements UserService{

    private User user=new UserImpl();
    @Override
    public void getUser() {
        user.getUer();
    }
}

当在测试代码中测试时,想要获得StudentImpl、TeacherImpl中的信息时只有通过修改源代码来获得,很不方便。

有一种方法就是通过set的方法:

//UserService:
public interface UserService {
    void getUser();
    void setUser(User user);
}

//UserServiceImpl
public class UserServiceImpl implements UserService{

    private User user;

    public void setUser(User user){
        this.user=user;
    }
    @Override
    public void getUser() {
        user.getUer();
    }
}

在测试代码中:

UserService userService = new UserServiceImpl();
userService.setUser(new TeacherImpl());
userService.getUser();

通过set的方法可以自己来new一个对象,不需要通过修改源码的方式。

使用IOC:
就是通过不使用new对象的方式来实现多态,也不需要set的方法

在resource文件下创建Spring Config文件:

<?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 id="user"  class="org.example.dao.UserImpl"></bean>
    <bean id="student"  class="org.example.dao.StudentImpl"></bean>

</beans>

id代表的就是 对象名
class表示对应的实现类的位置

在测试代码中:

//bean.xml代表的resource文件夹下的xml文件
ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
//使用getBean的方法得到对象
User user = (User) context.getBean("student");
user.getUer();
  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值