目录
这里要介绍下很重要的一个东西,注解。可以帮助我们节省很多事情,因为使用bean标签去注册组件过程还是很繁琐的
除了实例工厂外我们都有使用到class属性,实例工厂用的是factory-bean,factory-method
☆☆☆☆☆注解
在说注解之前还是要强调下Spring的核心是什么?控制反转和依赖注入!
注册组件
之前是写了个bean标签进行注册(解耦到配置文件中)
注解方法:设置个包目录,使用注解来注册组件,设置了一个包目录,找到所有的类,遍历,是否包含组件注册功能的注解
扫描包配置
类上使用组件注册功能的注解
@Component
@Service service层的组件可以使用这个注解
@Repository 通常针对dao层组件,也就是mapper层组件
@Controller(SpringMVC阶段才会去使用)
可以使用注解的value属性指定组件id;如果没有使用value属性,默认的组件id是类名的首字母小写
取出组件(注入功能)
容器中的组件里才可以使用注入功能
值的注入
以上这部操作值和成员变量是紧密耦合在一起的,我们可以通过properties配置文件(通过key-value的方式)来实现值和变量之间的解耦,如下所示
加前缀可以区分出这是不同功能的参数,并且直接写username或者password这些参数很容易引用到系统变量
然后还要告诉spring应用你要加载这个配置文件,才能从配置文件中取出来
值
然后在serviceimpl类中需要使用这种符号引用
组件注入
注入功能:为容器中的组件的成员变量赋值,维护组件之间的依赖关系
注意:注入功能要在容器中的组件里使用,组件一定是要从spring容器中取出来的才能维护组件之间的依赖关系
使用@Autowired(最常用,默认按照类型注入)来给组件注入值,这个值实际上和从容器直接取出的userDao是同一个值,这里还是要强调下,我们维护的是组件之间的依赖关系,和我上一篇文章中介绍的图是一样的。
@Autowired+@Qualifier是组合id的方式组件注册
以上就是我们使用的三组注解
Scope和生命周期
@Scope:直接写在类上
单元测试
目的是为了方便的测试组件提供的方法
从容器中取出组件
👉 之前取出方式:applicationContext.getBean
👉 当前:注入功能的注解
相当于把单元测试类当成是容器中的组件,使用注入功能的注解
准备工作,额外引入一个依赖spring-test
加载配置文件步骤:
引入类运行器---加载classpath路径下的XXX.xml文件