spring初学 1

先导包:

org.springframework spring-webmvc 5.3.21

Dao层
写一个接口注意是interface类型!

写这个接口的实现类

业务层:
因为它起到的作用和Dao层类似,所以直接写成一样的。

实现类:

调用的是Dao层的接口,所以new一个对象。

测试一下,new一个业务层的对象。
`import com.www.service.UserServiceImpl;
import com.www.userDao.UserDao;
import com.www.userDao.UserDaoImpl;

public class mytest1 {
public static void main(String[] args)
{
//用户调用的是业务层,Dao层用户不会去接触
//业务层调用Dao层去查。
UserServiceImpl userService = new UserServiceImpl();
userService.getUser();
}
}
`

再增加一个实现类:

想要实现这个类,有两种方法,一种是再创建一个测试,里面直接调用这个类(不推荐!!!)
`import com.www.userDao.UserDaoMySqlImpl;

public class mytest2 {
public static void main(String[] args)
{
//用户调用的是业务层,Dao层用户不会去接触
//业务层调用Dao层去查。
UserDaoMySqlImpl userDaoMySql = new UserDaoMySqlImpl();
userDaoMySql.getUser();
}
}
`
另一种就是改原本调用类里面的接口

里面的UserDaoImpl()改成UserDaoMySqlImpl()
这样也可实现,但是这个更改了我们的代码,所以也很麻烦。
需求再增加时,还得去改这个位置。
代码量非常大。
尽量让自己的程序不动,让它自适应。

因此产生了如下写法:

用set方法实现动态注入
在test中传入数据

用户的需求不会再修改我们的源代码,不会破环程序稳定性。
使用一个set接口好处:之前程序主动创建对象,控制权在程序员手上,用了set注入后程序变成了被动的接收对象。
这就是控制反转。
这种思想从本质上解决了问题,程序员不必再管理对象的创建,系统耦合性大大降低,可以更加专注地在业务实现上。
这是ioc的原型。

posted @ 2022-07-07 15:19  吕洞玄  阅读(18)  评论(0编辑  收藏  举报