学习地址:https://www.bilibili.com/video/av35914008/(别问 问就是蹭流量)(https://www.majiaxueyuan.com/front/showcoulist)
通过注解方式进行控制反转和依赖注入(还是用User-UserDao-UserService的流程来)
是创建好了的对象User UserDao 以及UserService
这次不使用beans.xml文件,新建一个
目录
3.添加注解(Component,Autowired,Resource)
1.创建annotation的xml文件(名字随意)
new ->xml Configuretion->Spring Config
2.配置扫描包
在新建好的配置文件添加扫描包
<context:component-scan base-package="com.zqj"/>
<!-- 扫描包 扫描com.zqj下面的 -->
3.添加注解(Component,Autowired,Resource)
@component 使用来实现控制反转的,将对象权限赋予Spring
我把注解放到了User和 UserDao,UserService。让三个类
可以看到。在Spring的beans上看到已经加载的数据
接着是需要使用@AutoWired去实现依赖注入,也就是取数据
在使用到的对象上面添加注解 @Autowired
4.运行
运行测试代码
public class EntityTest {
public static void main(String[] args) {
ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext("annotation.xml");
UserService userService = (UserService) classPathXmlApplicationContext.getBean("userService");
userService.doUserService();
}
}
运行后可以看到
也就是说对象通过Spring都是能够得到的。
关于@AutoWired 和 @Resource的区别
@AutoWired是基于类型来判断的
@Resource是基于名称来判断的
举个栗子:
@Autowired 和 @Resource如果不添加名称是都是可以实现的因为类和名称都是一样的
我们在Componment上添加一个名称。
再来试试
如果名称不对,就会报错
执行的话就会说无法找到bean UserDao
将其该回来
现在就是正常的运行
以上