Spring通过工厂方法进行配置

在Spring的世界中, 我们通常会利用 xml配置文件 或者 annotation注解方式来配置bean实例!

在第一种利用 xml配置文件 方式中, 还包括如下三小类

  1. 反射模式(我们前面的所有配置都是这种模式)
  2. 工厂方法模式
  3. Factory Bean模式

其中反射模式最常见, 我们需要在bean 配置中配置我们需要的bean object的全类名。

上面bean 里面的class属性就是全类名, Spring利用java反射机制创建这个bean object。

工厂方法模式

在工厂方法模式中, Spring不会直接利用反射机制创建bean对象, 而是会利用反射机制先找到Factory类,然后利用Factory再去生成bean对象。

而Factory Mothod的具体使用方式也分两种, 分别是静态工厂方法 和 实例工厂方法。

静态工厂方法方式

所谓静态工厂方式就是指Factory类不本身不需要实例化, 这个Factory类中提供了1个静态方法来生成bean对象

下面是例子

里面定义了1个静态的bean 容器map. 然后提供1个静态方法根据Car 的id 来获取容器里的car对象。

然后我们再定义1个工厂类CarStaticFactory

xml配置

 

小结

由上面的例子, 静态工厂方法方式是非常适用于作为1个bean容器, 只不过bean集合定义在工厂类里面而不是项目xml配置文件里面。 

缺点也比较明显, 把数据写在class里面而不是配置文件中违反了我们程序猿的常识和spring的初衷。当然优点就是令人恶心的xml配置文件更加简洁。所以,工厂方法的配置,了解一下就行了,个人建议不要在项目中使用。

实例工厂方法方式

所谓实例工厂方式也很容易看懂, 就是工厂类里面的getBean 方法不是静态的, 也就是说要先实例1个工厂的对象, 才能依靠这个工厂对象去调用getBean 方法获得bean 对象。

看代码:

小结

显然,实例化工厂方法比静态工厂方法,要灵活一些,没把数据写死在工厂类里,但是实际开发中,用的最多的还是反射模式! 

 

 

 

相关推荐

  1. spring缓存通用配置

    2024-07-21 17:30:01       36 阅读
  2. Spring Cloud Gateway通过配置文件方式提供路由服务

    2024-07-21 17:30:01       23 阅读
  3. Spring 事务管理配置方法

    2024-07-21 17:30:01       20 阅读
  4. Spring Boot 如何进行多环境配置

    2024-07-21 17:30:01       27 阅读
  5. Spring通过Spring收集自定义注解标识的方法

    2024-07-21 17:30:01       37 阅读
  6. Spring设计模式之工厂方法

    2024-07-21 17:30:01       51 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-21 17:30:01       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-21 17:30:01       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-21 17:30:01       45 阅读
  4. Python语言-面向对象

    2024-07-21 17:30:01       55 阅读

热门阅读

  1. 力扣题解(盈利计划)

    2024-07-21 17:30:01       18 阅读
  2. Mysql在linux安装报错

    2024-07-21 17:30:01       17 阅读
  3. 大型网站核心架构要素

    2024-07-21 17:30:01       15 阅读
  4. 看过来!看过来!python九大数据类型大整合!

    2024-07-21 17:30:01       15 阅读
  5. centos软件安装

    2024-07-21 17:30:01       20 阅读
  6. 内存屏障:程序员的“隐形护盾”

    2024-07-21 17:30:01       17 阅读
  7. 比较 WordPress 的 Baklib 和 BetterDocs

    2024-07-21 17:30:01       18 阅读
  8. npm install 出现canvas错误

    2024-07-21 17:30:01       14 阅读
  9. 作为一名程序员,怎样写出高效简洁的代码?

    2024-07-21 17:30:01       17 阅读
  10. python 爬虫技术 第02节 基础复习

    2024-07-21 17:30:01       16 阅读