Spring基于xml的ioc的配置

1 组件(Bean)信息声明配置(IoC)

  1. 目标

    Spring IoC 容器管理一个或多个 bean。这些 Bean 是使用您提供给容器的配置元数据创建的(例如,以 XML <bean/> 定义的形式)。

    我们学习,如何通过定义XML配置文件,声明组件类信息,交给 Spring 的 IoC 容器进行组件管理!

  2. 准备项目

    1. 创建maven工程(spring-ioc-xml-01)

    2. 导入SpringIoC相关依赖

      pom.xml

      <dependencies>
          <!--spring context依赖-->
          <!--当你引入Spring Context依赖之后,表示将Spring的基础依赖引入了-->
          <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-context</artifactId>
              <version>6.0.6</version>
          </dependency>
          <!--junit5测试-->
          <dependency>
              <groupId>org.junit.jupiter</groupId>
              <artifactId>junit-jupiter-api</artifactId>
              <version>5.3.1</version>
          </dependency>
      </dependencies>
      

1.1基于无参数构造函数

当通过构造函数方法创建一个 bean(组件对象) 时,所有普通类都可以由 Spring 使用并与之兼容。也就是说,正在开发的类不需要实现任何特定的接口或以特定的方式进行编码。只需指定 Bean 类信息就足够了。但是,默认情况下,我们需要一个默认(空)构造函数。

  1.  准备组件类
        public class HappyComponent {
    
            //默认包含无参数构造函数
    
            public void doWork() {
                System.out.println("HappyComponent.doWork");
            }
        }
        

2.  xml配置文件编写
    文件:resources/spring-bean-01.xml
    创建携带spring约束的xml配置文件
    -   bean标签:通过配置bean标签告诉IOC容器需要创建对象的组件信息
    -   id属性:bean的唯一标识,方便后期获取Bean!
    -   class属性:组件类的全限定符!
    -   注意:要求当前组件类必须包含无参数构造函数!
<?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">

    <bean id="happyComponent" class="com.lx.ioc_01.HappyComponent"></bean>
</beans>

1.2 基于静态工厂方法实例化

除了使用构造函数实例化对象,还有一类是通过工厂模式实例化对象。接下来我们讲解如何定义使用静态工厂方法创建Bean的配置 !

 1.  准备组件类
 public class ClientService {
    private static ClientService clientService = new ClientService();
    private ClientService() {}
    public static ClientService createInstance() {

        return clientService;
    }
}
2.  xml配置文件编写
	文件:resources/spring-bean-01.xml
	-   class属性:指定工厂类的全限定符!
    -   factory-method: 指定静态工厂方法,注意,该方法必须是static方法。
<?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">

    <bean id="clientService" class="com.lx.ioc_01.ClientService" factory-method="createInstance"></bean>
</beans>

1.3 基于实例工厂方法实例化

接下来我们讲解下如何定义使用实例工厂方法创建Bean的配置 !

1.  准备组建类
public class ClientServiceImpl {
}

public class DefaultServiceLocator {
    private static ClientServiceImpl clientService = new ClientServiceImpl();

    public ClientServiceImpl createClientServiceInstance() {
        return clientService;
    }
}
2. xml配置文件编写
   文件:resources/spring-bean-01.xml
   -   factory-bean属性:指定当前容器中工厂Bean 的名称。
   -   factory-method:  指定实例工厂方法名。注意,实例方法必须是非static的!
<?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">
    
    <bean id="defaultServiceLocator" class="com.lx.ioc_01.DefaultServiceLocator"></bean>
    <bean id="clientService" factory-bean="defaultServiceLocator" factory-method="createClientServiceInstance"></bean>
</beans>

2 图解IoC配置流程

在这里插入图片描述

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值