Spring 5配置对象三种方式

一.配置对象的基本概念

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详细内容:

扫描二维码关注公众号,回复: 14425948 查看本文章
<?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加载配置类

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

猜你喜欢

转载自blog.csdn.net/weixin_42753193/article/details/125299457
今日推荐