Set注入
开发工具与关键技术:eclipse Java
作者:rr
撰写时间:2020年8月8日
下面先介绍一下我们的老写法,一个直接写死的写法。
首先是用户层:
接口:
public interface UserDao {
void getUser();
}
一个UserDao接口给它一个get方法。
类:
public class UserDaoImpl implements UserDao{
public void getUser(){
System.out.println(“老写法”);
}
}
建一个UserDaoImpl类,连接UserDao接口,然后引用get方法进行输出。
业务层:
private UserDao userDao=new UserDaoOraclempl();
public void getUser(){
UserDao.getUser();
}
直接new出需要用的类,用get方法便可以了。
可以直接测试一下,下面是测试源代码:
public class MyTest {
public static void main(String[] args){
//用户实际调用的是业务层,dao层它们是不需要接触的
UserService userService= new UserServiceImpl();
userService.getUser();
}
}
但是这个方法在我们之前的业务中,用户如果有需求的话,我们就需要根据用户的需求去修改我的源代码! 但是如果我的代码量十分庞大的话,修改一次的成本非常贵,对于我们来说是一个十分大的代价。
下面进入set注入:
用户层:
public class UserDaoImpl implements UserDao{
public void getUser(){
System.out.println(“set注入”);
}
}
用户层跟上面get方法是一样的。
业务层:
Public static void main(String[] args){
private UserDao userDao;
//set进行动态实现值的注入
public void setUserDao(UserDao userDao){
this.userDao=userDao;
}
public void getUser(){
userDao.getUser();
}
}
通过set方法实现动态值的注入
测试层:
public class MyTest {
public static void main(String[] args){
//用户实际调用的是业务层,dao层它们是不需要接触的
UserService userService= new UserServiceImpl();
((UserServiceImpl) userService).setUserDao(new UserDaoSqlserviceImpl());
userService.getUser();
}
}
利用set注入的方法,我们可以不用修改业务层的任何代码,只需要修改一下你调用到的类便可。
以上是我从“狂神说Java”里学习的一个简单的小知识,如有不明白的可以去https://www.bilibili.com/video/BV1WE411d7Dv里学习一下。