springboot中的设计模式

springboot的注入默认范围是单例,但是实际上是有几个范围可选的,如下:

1)singleton: 单例,默认

2)prototype:多例

3)request:在一次http请求内有效

4)session:在一个用户会话内有效

5)globalSession:在全局会话内有效

一、一个类只有唯一一个实例

这种情况最简单也最常见,我们可以在类上标识@Component,然后再需要这个实例的地方通过@Autowired直接依赖注入。

二、一个类有有限多个实例,且是在编码时是可知的

一个实践中的例子是DataSource,一个项目中用到多个数据库,就会有多个DataSource的实例。

具体有几个,是提前确定写在配置文件的,这种情况的Bean可以通过@Bean(name = "master")的方式创建Bean

然后通过@Autowired@Qualifier("master")的方式引用对应名称的Bean

请参考在springboot中使用jdbcTemplate(2)-多数据源

三、原型模式,一个类有无限多个实例,每次调用生成新实例

这种情况需要在定义Bean时指定原型模式@Scope("prototype"),

在引用Bean的时候使用@Lookup注解,就可以每次都生成一个新对象

请参考springboot中使用原型模式(二)

四、一个类有多个实现类,每个实现类都有且只有一个实例

这种就是典型的工厂方法,具体实现请参考springboot中使用工厂方法

五、spring中的观察者模式

spring事件监听参考Spring事件监听(转)

六、spring中的模板模式

请参考Spring之bean生命始末

七、spring中恶职责链模式

springboot中使用职责链模式(转)

posted @ 2022-07-12 13:21  Mars.wang  阅读(1812)  评论(1编辑  收藏  举报