Spring第二天Spring基于注解的IOC以及IOC的案例

在这里插入图片描述

基于注解的配置和基于XML的配置,目的都是一样的,都是为了降低程序的耦合性,只是形式不一样而已,基于注解的IOC配置比XML要简单许多

我们将注解分为4类
1、创建对象的
2、注入数据的
3、改变作用范围的
4、和生命周期相关的
在这里插入图片描述
刚开始我们的xml文件时空的
在这里插入图片描述在这里插入图片描述
当我们运行程序的时候,程序报错了
在这里插入图片描述
因为程序并不知道注解在哪个地方,所以这时候在xml中就要配置了,之前的xml是这样
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

注入数据的注解,也就是注入成员变量的注解,将成员变量注入到spring容器中,这个成员变量也是一个接口类型,注入的是这个接口的实现类对象在这里插入图片描述在这里插入图片描述

在这里插入图片描述在这里插入图片描述在这里插入图片描述
用两个注解实在是太麻烦了,这里可以用一个注解@Resource
在这里插入图片描述在这里插入图片描述在这里插入图片描述

改变作用范围的注解
在这里插入图片描述
改为多例模式之后,打印的就是false了
在这里插入图片描述

基于XML的IOC案例

先导入坐标
在这里插入图片描述
建表
在这里插入图片描述在这里插入图片描述
创建实体类
在这里插入图片描述
补全业务层接口里的方法
在这里插入图片描述
业务层实现类
在这里插入图片描述
持久层实现类
在这里插入图片描述在这里插入图片描述在这里插入图片描述

XML的配置
在这里插入图片描述
在这里插入图片描述

成功打印
在这里插入图片描述在这里插入图片描述

Spring的新注解@Configuration 和 @ComponentScan

上面xml中的内容只是把我们自己在类上添加的注解等同的xml内容省去了,但是还有数据库连接的一些配置参数这些xml文件中的内容怎么省去呢??

下图中的这些内容该怎么省去呢
在这里插入图片描述

新建一个类,这个类作为配置类
在这里插入图片描述

@Bean注解
在这里插入图片描述在这里插入图片描述
一个细节问题,如果用@Bean配置方法时,如果方法有参数,spring框架回去容器中查找有没有可用的bean对象,查找的方式和Autowired注解的作用是一样的

@Configuration和@ComponentScan注解的方式是一样的
在这里插入图片描述在这里插入图片描述
但这时候肯定会报错,因为代码中用到了bean.xml,谁让你那么冲动了???这么急着删它
在这里插入图片描述
那这该怎么办呢??
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

细节问题:当配置类作为AnnotationConfigApplicationContext对象创建的参数时,@Configuration注解是可以不写的,因为它会自动根据这个参数去找到这个类

在这里插入图片描述

那又该怎么办?三种解决办法
第一种:我们把子配置类上面再加一个@Configuration注解,然后在@ComponentScan注解后面再加一个包名!那如果不加@Configuration的话可以吗?答案是不行的,必须得加。因为@ComponentScan扫描类里面的配置方法注解@Bean @Scope时,必须要扫描到这个类是配置类,因此必须要有@Configuration注解在这里插入图片描述

第二种:在参数后面再添加一个字节码文件作为参数
在这里插入图片描述

第三种方法:引入一个新的注解@Import
在这里插入图片描述

Spring的新注解 PropertySource

在这里插入图片描述
新建一个properties文件
在这里插入图片描述在这里插入图片描述
但是@Vaule注解怎么会自动到properties文件中读取那些属性呢?
这时候新的注解闪亮登场@PropertySource

在这里插入图片描述
在这里插入图片描述

这时候我们发现用纯注解的方式,其实也并没有多么省事,那什么时候用注解,什么时候用XML配置呢?

如果是我们自己写的类,一般我们用注解的方式比较好
如果是jar包中的类,一般我们用xml配置的方式比较好
反正就是哪种比较方便,就用哪种

Spring整合junit问题分析

在这里插入图片描述在这里插入图片描述在这里插入图片描述
junit根本就不知道spring框架,也就是@Test测试时,根本就没有IOC容器生成

解决办法:

在这里插入图片描述
配置文件的路径如果是用配置类 则在@ContextConfigurations注解后面加上
classes=配置类.class

配置文件的路径如果是用xml作为配置,则在@ContextConfigurations注解后面加上
locations=“classpath:bean.xml”
在这里插入图片描述在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42350785/article/details/106902028
今日推荐