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”

经验分享 程序员 微信小程序 职场和发展