Spring之BeanFactory快速入门

目录

一:概述

二:快速入门


一:概述

          Spring的BeanFactory的开发步骤如下:

  • 程序代码-----》第三方-----》配置清单---》Bean类
  • 程序代码-----》第三方-----》配置文件---》UserServicelmpl/UserDaoImpl

          BeanFactory,以Factory结尾,表示它是一个工厂类(接口), 它负责生产和管理bean的一个工厂。在Spring中,BeanFactory是IOC容器的核心接口,它的职责包括:实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。

          BeanFactory只是个接口,并不是IOC容器的具体实现,但是Spring容器给出了很多种实现,如 DefaultListableBeanFactory、XmlBeanFactory、ApplicationContext等,其中**XmlBeanFactory就是常用的一个,该实现将以XML方式描述组成应用的对象及对象间的依赖关系**。XmlBeanFactory类将持有此XML配置元数据,并用它来构建一个完全可配置的系统或应用。

          它为其他具体的IOC容器提供了最基本的规范,例如DefaultListableBeanFactory,XmlBeanFactory,ApplicationContext 等具体的容器都是实现了BeanFactory,再在其基础之上附加了其他的功能。

         原始的BeanFactory无法支持spring的许多插件,如AOP功能、Web应用等。ApplicationContext接口,它由BeanFactory接口派生而来。现在一般使用ApplicationnContext,其不但包含了BeanFactory的作用,同时还进行更多的扩展。

         BeanFactory实际上是实例化,配置和管理众多bean的容器。 这些bean通常会彼此合作,因而它们之间会产生依赖。 BeanFactory使用的配置数据可以反映这些依赖关系中,一个BeanFactory可以用接口org.springframework.beans.factory.BeanFactory表示, 这个接口有多个实现。 最常使用的的简单的BeanFactory实现是org.springframework.beans.factory.xml.XmlBeanFactory。

           几乎所有被BeanFactory管理的用户代码都不需要知道BeanFactory, 但是BeanFactory还是以某种方式实例化。

二:快速入门

  1. 导入Spring的jar包或Maven坐标;

 <!--Spring核心-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.3.23</version>
    </dependency>

 2.定义UserService接口及其UserServicelmpl实现类;

public interface IUserService {}
public class UserServiceImpl implements IUserService {}

3.创建beans.xml配置文件, 将UserServiceImpl的信息配置到该xml中;

  <bean id="userService"  class="com.tangyuan.service.impl.UserServiceImpl"></bean>

4.编写测试代码, 创建BeanFactory, 加载配置文件, 获取UserService实例对象。

  //创建工厂对象
        DefaultListableBeanFactory beanFactory=new DefaultListableBeanFactory();
        //创建读取器(xml文件)
        XmlBeanDefinitionReader reader=new XmlBeanDefinitionReader(beanFactory);
        //读取配置文件给工厂
         reader.loadBeanDefinitions("beans.xml");
       //根据id获取Bean实例对象
         IUserService userService = (IUserService) beanFactory.getBean("userService");
         System.out.println(userService);//com.tangyuan.service.impl.UserServiceImpl@2a18f23c

上面使用BeanFactory完成了loC思想的实现, 下面去实现以下DI依赖注入:

  1. 定义UserDao接口及其UserDaolmpl实现类;

public interface IUserService {}
public class UserServiceImpl implements IUserService {}

2.修改UserServicelmpl代码, 添加一个setUserDao(UserDao userDao) 用于接收注入的对象;

  //BeanFactory去调用该方法  从容器中获得userDao设置到此处
    public void setUserDao(UserDao userDao) {
        System.out.println("BeanFactory去调用该方法获得userDao设置到此处"+userDao);
    }

3.修改beans.xml配置文件, 在UserDaolmpl的<bean>中嵌入<property>配置注入;

  <!--配置UserServiceImpl-->
    <bean id="userService"  class="com.tangyuan.service.impl.UserServiceImpl">
        <property name="userDao" ref="userDao"></property>
    </bean>
  • name---->与setUserDao形成对应,大写变成小写
  • ref------》引入Bean的id

4.修改测试代码, 获得UserService时, setUserService方法执行了注入操作。

 //创建工厂对象
        DefaultListableBeanFactory beanFactory=new DefaultListableBeanFactory();
        //创建读取器(xml文件)
        XmlBeanDefinitionReader reader=new XmlBeanDefinitionReader(beanFactory);
        //读取配置文件给工厂
         reader.loadBeanDefinitions("beans.xml");
       //根据id获取Bean实例对象
         IUserService userService = (IUserService) beanFactory.getBean("userService");
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值