Spring 5配置对象三种方式

简介: 记录spring中三种配置对象的方式!

一.配置对象的基本概念

1.配置对象的三种方式

① XML配置方式(经典场景)
② 注解配置方式(JDK1.5+)
③ Java Config 配置方式(Spring4+)

2.配置对象的作用

利用Spring将引用解耦(对象以对象之间的引用是通过Spring IOC容器在运行时通过反射技术动态实现注入,从而实现解耦),降低耦合(低耦合,高内聚)性,减少资源开销,被引用对象做修改时引用对象无须修改就可以实现业务的升级,开发人员只需关注自己的业务即可。

在这里插入图片描述

3.三种配置的比较

在这里插入图片描述

二.XML配置方式实现

项目构建:使用IDEA创建一个Maven项目,项目名为spring-xml,项目创建完成后如下图所示

在这里插入图片描述

依赖导入:在pom.xml中导入Spring的依赖支持
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.20</version>
        </dependency>
    </dependencies>
Spring配置文件:在resources文件下创建名为applicationContext.xml配置文件

在这里插入图片描述
在这里插入图片描述
applicationContext.xml详细内容:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>
dao层:包含IEmpDao接口和EmpDao实现类

在这里插入图片描述
IEmpDao接口:

在这里插入图片描述
EmpDao实现类:
在这里插入图片描述

Application:创建一个Application类,作为程序的入口:
  • 以前创建对象(通过new方式创建对象):

在这里插入图片描述

运行效果:
在这里插入图片描述

  • 通过配置文件创建对象:

在applicationContext.xml配置文件中添加一个Bean对象:
在这里插入图片描述
在Application类中,就可以通过配置文件创建对象了( getBean()方法的行参就是配置文件中bean标签的name值 ):
在这里插入图片描述

运行效果:
在这里插入图片描述

service:包含一个员工业务类EmpService,通过业务类来实现员工添加。

EmpService.java( 一定不能少了setIEmpDao()方法,不然无法注入参数 )
在这里插入图片描述

在applicationContext.xml配置文件中,声明一个EmpService的bean对象通过 <property> 标签来初始化iEmpDao对象!( 配置文件方式创建EmpService对象 )
在这里插入图片描述
在Application中通过配置文件创建EmpService对象,进而实现添加员工业务。
在这里插入图片描述
运行效果:
在这里插入图片描述

注意在Application类中并没有使用setIEmpDao()方法来初始化IEmpDao对象,因为在配置文件中我们已经配置了EmpService的IEmpDao参数,所以在ApplicationContext对象创建后就已经初始化该对象。

在这里插入图片描述
运行效果:
在这里插入图片描述

使用配置文件创建对象的优点:在dao层新增一个IEmpDao的实现类EmpDaoExt作为EmpDao的替换类

在这里插入图片描述

将EmpDao更换为EmpDaoExt只需要在applicationContext.xml配置文件中将bean对象的class换成EmpDaoExt即可

在这里插入图片描述
在Application中实现如下代码:
在这里插入图片描述

运行效果( 通过上面的操作我们发现使用配置文件的方式创建对象,在更换dao中类的时候,无须修改servier层中的代码,只需要在配置文件中进行简单修改即可,这样的好处就是开发人只关心具体业务即可,无须关心下层提供的接口是如何实现的 ):
在这里插入图片描述

三.注解方式实现

1.Spring IOC注解

在这里插入图片描述

2.使用IOC注解的“套路”

  1. pom.xml 引入 spring-context 【已经完成】
  2. applicationContext.xml配置文件中设置 <component-scan>
  3. 使用@XXX注解让Spring IOC创建对象
  4. 利用@Resource 注入对象

根据上面的注解套路实现注解方式创建对象:

  • 步骤二(步骤1在前面已经完成):

( 这一步的作用就是扫描对应包中的注解 )
在这里插入图片描述

  • 步骤三:

    如果标签没有加参数,默认name为类小驼峰命名的变量名,如下的bean的name=empDaoExt

持久层添加 @Repository 注解(类似于前面的 <bean name="empDao" class="com.dudu.dao.EmpDaoExt"/> )
在这里插入图片描述
( @Repository 没有设置参数,默认bean对象的name为empDaoExt )

在这里插入图片描述
业务层添加注解@Service(类似于前面的 <bean name="empService" class="com.dudu.dao.EmpService"/> )

在这里插入图片描述

  • 步骤四:
@Resource标签的name在这里一定要指向对应dao中的EmpDao或EmpDaoExt中的一个bean的name名,不然会报错(dao中只有一个的情况下,可以不填name,因为会按类型进行注入)。

对象的注入使用 @Resource 标签,作用相当于前面配置文件中的 <property> ,并且该方式不需要使用setIEmpDao()方法:

在这里插入图片描述

Application中执行main方法:
在这里插入图片描述
运行效果:
在这里插入图片描述

四.Java Config方式实现

1.Java Config配置套路

  1. pom.xml 引入spring-context
  2. 创建Config类,无需创建XML
  3. @Configuration类说明
  4. @Bean声明对象
  5. AnnotationConfigApplicationContext加载配置类

创建一个Maven项目,项目名为spring-javaconfig,创建成功如下图所示:
在这里插入图片描述
根据上面的套路,完成对象的创建:

  • 步骤1:pom.xml 引入spring-context

在这里插入图片描述

  • 步骤2,3,4
dao层:IEmpDAO接口,二个接口实现类EmpDAO,EmpDAOExt

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

Service层:EmpService业务层

在这里插入图片描述
创建SpringConfig类:

  • @Configuration 替代XML,成为IOC容器主要配置来源
  • @Bean 用于初始化对象,bena的name默认为方法名称,在方法的内部手动进行实例化的操作,并将对象return返回

在这里插入图片描述

  • 步骤5: AnnotationConfigApplicationContext加载配置类

在这里插入图片描述
运行效果:
在这里插入图片描述

相关文章
|
23天前
|
Java Spring
Spring boot 运行服务jar外配置配置文件方式总结
Spring boot 运行服务jar外配置配置文件方式总结
137 0
|
3天前
|
XML Java 测试技术
Spring5入门到实战------17、Spring5新功能 --Nullable注解和函数式注册对象。整合JUnit5单元测试框架
这篇文章介绍了Spring5框架的三个新特性:支持@Nullable注解以明确方法返回、参数和属性值可以为空;引入函数式风格的GenericApplicationContext进行对象注册和管理;以及如何整合JUnit5进行单元测试,同时讨论了JUnit4与JUnit5的整合方法,并提出了关于配置文件加载的疑问。
Spring5入门到实战------17、Spring5新功能 --Nullable注解和函数式注册对象。整合JUnit5单元测试框架
|
21天前
|
Java 测试技术 数据库
Spring Boot中的项目属性配置
本节课主要讲解了 Spring Boot 中如何在业务代码中读取相关配置,包括单一配置和多个配置项,在微服务中,这种情况非常常见,往往会有很多其他微服务需要调用,所以封装一个配置类来接收这些配置是个很好的处理方式。除此之外,例如数据库相关的连接参数等等,也可以放到一个配置类中,其他遇到类似的场景,都可以这么处理。最后介绍了开发环境和生产环境配置的快速切换方式,省去了项目部署时,诸多配置信息的修改。
|
3天前
|
运维 Java Nacos
Spring Cloud应用框架:Nacos作为服务注册中心和配置中心
Spring Cloud应用框架:Nacos作为服务注册中心和配置中心
|
21天前
|
监控 NoSQL Java
Spring Boot Actuator 使用和常用配置
Spring Boot Actuator 使用和常用配置
36 5
|
23天前
|
监控 druid Java
spring boot 集成配置阿里 Druid监控配置
spring boot 集成配置阿里 Druid监控配置
122 6
|
23天前
|
Java Spring
spring boot 中默认最大线程连接数,线程池数配置查看
spring boot 中默认最大线程连接数,线程池数配置查看
42 4
|
22天前
|
Java Spring
spring cloud gateway在使用 zookeeper 注册中心时,配置https 进行服务转发
spring cloud gateway在使用 zookeeper 注册中心时,配置https 进行服务转发
41 3
|
23天前
|
XML JSON Java
spring,springBoot配置类型转化器Converter以及FastJsonHttpMessageConverter,StringHttpMessageConverter 使用
spring,springBoot配置类型转化器Converter以及FastJsonHttpMessageConverter,StringHttpMessageConverter 使用
118 1
|
8天前
|
Java Spring
Spring Boot Admin 授权配置
Spring Boot Admin 授权配置
14 0