SpringBoot默认注入单例模式所带来的的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot默认注入单例模式所带来的的问题相关的知识,希望对你有一定的参考价值。

参考技术A 18周6-11,6-12

单例模式中不能有任何私有的变量,这样写每次有一个访问就会修改这里面的值,因为单例模式跟静态变量很像全局只有一个,这样当有并发访问的时候数据就会变得不一样,所以需要开启多例模式或者在每次需要这个对象的时候就去new一个。

注入springboot的IOC容器中的对象的时候,当前的这个类也需要在容器当中。

当我们需要多例模式的时候可以使用:

首先在被加入到容器当中的类上打上@Scope注解然后传入参数

然后在注入的类上可以使用 三种方法 注入:

一、多注入几个对象

二、对象工厂(@Scope中不需要传入ProxyMode参数)

三、动态代理(主要)

这个方法要在被注入的类的@Scope注解里面在传入一个参数ProxyModel

这样就可以在每次访问这个接口的时候实例化的对象都是不同的了。

springboot配置文件读取

参考技术A springboot支持多种配置文件读取方式,了解这些方式有助于查询和定位问题以及选择合适的方式进行开发。

springboot默认的配置文件是application.properties,其存放的位置可以有以下几种,从上到下按照优先级排序如下,注意,当存在重复的配置文件时,高优先级的的将会覆盖低优先级的。

若不想使用默认的application.properties配置文件,也可以自定义配置文件名,有两种方式:

这里可以一次性将所有的配置全部加载进入配置文件,然后在使用到的类中注入Configuration 实例,使用get方法获取属性。

在实际工作中,需要根据开发、测试和生产配置不同环境的配置文件。可以在合适的路径下(见第一节配置文件位置)存放 application-dev.properties,application-test.properties,application-prod.properties 三个配置文件分别代表三个不同的环境,在springboot应用启动时传入指定的参数,例如 --spring.profiles.active=prod 指定使用 application-prod.properties 文件,另外也可以采用将 spring.profiles.active=prod 配置到系统环境变量中,使用 --spring.config.location=../config/application-spring.profiles.active.properties ,springboot还支持加载多个不同的配置文件,例如
--spring.profiles.active=prod,test

以上是关于SpringBoot默认注入单例模式所带来的的问题的主要内容,如果未能解决你的问题,请参考以下文章

bean的作用域

Spring 单例模式和多例模式

既然spring中注入用单例,为了解决多线程安全问题,还得用theardlocal为每个线程创建共

将单例注入 Spring Boot 应用程序上下文

spring使用单例 线程怎么解决并发

SpringBoot(11)-单例中使用AutoWired