美文网首页
spring的controller的作用域

spring的controller的作用域

作者: BoYueStudio | 来源:发表于2020-12-07 22:47 被阅读0次

Q1

Spring的Controller是单例还是多例?

controller默认是单例的,不要使用非静态的成员变量,否则会发生数据逻辑混乱。正因为单例所以不是线程安全的。

代码小提示

1、不要在controller中定义成员变量。

2、万一必须要定义一个非静态成员变量时候,则通过注解@Scope(“prototype”),将其设置为多例模式。

3、在Controller中使用ThreadLocal变量

Q2

spring bean作用域?

singleton:单例模式,当spring创建applicationContext容器的时候,spring会初始化所有的该作用域实例,加上lazy-init就可以避免预处理;

prototype:原型模式,每次通过getBean获取该bean就会新产生一个实例,创建后spring将不再对其管理;

(下面是在web项目下才用到的)

request:搞web的大家都应该明白request的域了吧,就是每次请求都新产生一个实例,和prototype不同就是创建后,接下来的管理,spring依然在监听;

session:每次会话,同上;

global session: 全局的web域,类似于servlet中的application。

Q3

什么是单例模式?

单例模式是指在内存中只会创建且仅创建一次对象的设计模式。在程序中多次使用同一个对象且作用相同时,为了防止频繁地创建对象使得内存飙升,单例模式可以让程序仅在内存中创建一个对象,让所有需要调用的地方都共享这一单例对象。

1、单例模式有两种类型:

懒汉式:在真正需要使用对象时才去创建该单例类对象

饿汉式:在类加载时已经创建好该单例对象,等待被程序使用

2、懒汉式创建单例对象

懒汉式创建对象的方法是在程序使用对象前,先判断该对象是否已经实例化(判空),若已实例化直接返回该类对象。否则则先执行实例化操作。

3、饿汉式创建单例对象

饿汉式在类加载时已经创建好该对象,在程序调用时直接返回该单例对象即可,即我们在编码时就已经指明了要马上创建这个对象,不需要等到被调用时再去创建。

相关文章

  • spring的controller的作用域

    Q1 Spring的Controller是单例还是多例? controller默认是单例的,不要使用非静态的成员变...

  • SPRING BEAN的基础

    一、SPRING BEAN的定义: 二、SPRING BEAN的作用域: 作用域例子: your msg :p...

  • Spring Bean 作用域

    原文 :一文读懂Spring Bean作用域 - RelaxHeart网 Spring Bean的几种作用域 Sp...

  • Spring Bean的生命周期

    Spring 容器可以管理 singleton 作用域 Bean 的生命周期,在此作用域下,Spring 能够精确...

  • 11. SpringMVC-常用注解

    1) springMVC常用注解 注解作用域说明`@Controller类Controller标识`@Reques...

  • Spring

    Spring Bean 作用域 Spring 3 中为 Bean 定义了 5 中作用域分别为 singleton(...

  • 2.SpringIOC的Scope配置

    如何使用spring的作用域? 在spring2.0之前bean只有2种作用域即:singleton(单例)、no...

  • Spring_04_Bean的作用域

    Bean的作用域  当在Spring中定义个bean时,你必须声明bean的作用域选项.例如,为了强制Spring...

  • spring详解(二)

    ③容器中bean的作用域: |作用域|描述||---|---||singleton|单例模式,在整个Spring ...

  • SpringBoot的@RestController注解

    @RestController 在Spring中@RestController的作用等同于@Controller ...

网友评论

      本文标题:spring的controller的作用域

      本文链接:https://www.haomeiwen.com/subject/xyyxgktx.html