bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

SpringBean作用域-創新互聯

目錄

創新互聯堅持“要么做到,要么別承諾”的工作理念,服務領域包括:做網站、成都網站建設、企業官網、英文網站、手機端網站、網站推廣等服務,滿足客戶于互聯網時代的敦煌網站設計、移動媒體設計的需求,幫助企業找到有效的互聯網解決方案。努力成為您成熟可靠的網絡建設合作伙伴!

什么是作用域呢 ?

那什么又是Spring Bean的作用域呢 ?

Spring框架默認Bean作用域是什么呢 ?

Spring Bean的作用域都有哪些呢 ?

如何設置Bean作用域


什么是作用域呢 ?

在JavaSE中,作用域就是指一個變量可生效的范圍. 就比如一個變量的作用域是方法的代碼塊的范圍,只在方法內部生效.

那什么又是Spring Bean的作用域呢 ?

我來給一下官方的定義: Spring Bean的作用域是指Bean在整個框架中的某種行為模式.

看著這官方定義是有點懵 啥叫行為模式.

那就在舉一個例子 : Singleton是單例作用域,那就是指對于一個Bean,它在整個Spring框架中只存在一份,是全局的共享的,如果要操作這個Bean,所有人都操作這一份Bean.

也就是當一個人將這個Bean被修改了,其他人讀取到的就是被修改之后的值.

Spring框架默認Bean作用域是什么呢 ?

我們來實戰演練一把,通過這個示例就可以知道Spring默認Bean 作用域是什么了.

有一個Bean為commonBean,假設張三來寫一個類來初始化這個Bean然后將Bean存儲到Spring中,李四去新創建一個對象來引用這個公共Bean(commonBean),然后使用并修改,王五要使用這個公共的Bean.

commonBean

public class CommonBean {
    //創建一個公共的對象供給兩個人去使用
    private String name;
    private int age;
    private int id;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    @Override
    public String toString() {
        return "CommonBean{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", id=" + id +
                '}';
    }
}

張三來寫一個類來初始化這個Bean然后將Bean存儲到Spring中

@Controller
public class CommonScope {
    //公共的類->供給其他人使用
    //使用Bean注解將公共類返回的公共Bean存到Spring中
    @Bean
    public CommonBean doCommonBean(){
        CommonBean commonBean = new CommonBean();
        commonBean.setName("Java");
        commonBean.setAge(19);
        commonBean.setId(2000);
        return commonBean;
    }
}

李四去新創建一個對象來引用這個公共Bean(commonBean),然后使用并修改

@Controller
public class ScopeController1 {
    @Autowired
    private CommonBean commonBean;

    public void doScopeController1() {
        //李四自己創建一個對象引用公共的Bean
        CommonBean commonBean1 = commonBean;
        System.out.println("修改前的數據" + commonBean);
        commonBean1.setName("C++");
        System.out.println("修改后的數據" + commonBean1);
    }
}

王五要使用這個公共的Bean.

@Controller
public class ScopeController2 {

    @Autowired
    private CommonBean commonBean;

    public void doScopeController2(){
        System.out.println("使用公共的Bean信息為 : " + commonBean);
    }
}

啟動類進行使用

public class App {
    //啟動類
    public static void main(String[] args) {
        //獲取到SpringContext上下文對象
        ApplicationContext context1 = new ClassPathXmlApplicationContext
                ("spring-config.xml");
        System.out.println("=================================");
        ScopeController1 scopeController1 = context1.getBean("scopeController1", ScopeController1.class);
        scopeController1.doScopeController1();
        System.out.println("=================================");
        ScopeController2 scopeController2 = context1.getBean("scopeController2", ScopeController2.class);
        scopeController2.doScopeController2();
    }
}

這個時候就會有情況發生我們接下來看運行結果

所以從這里就可以知道Spring框架默認Bean的作用域就是單例作用域.

Spring Bean的作用域都有哪些呢 ?

Spring一共有6種作用域.Spring在為Bean初始化的時候就會設置作用域.

分別為下面6種作用域

  • 單例作用域(singleton)

單例作用域是Spring默認的作用域.

單例作用域下 : Bean在SpringIOC容器只存在一個實例,也就是獲取Bean(context.getBean())和注入/裝配Bean(比如AutoWired注入3)操作Bean的都是同一個Bean

適用場景 : 單例作用域一般適用于無狀態的Bean(Bean的狀態不需要更新).

  • 多例作用域(prototype)

多例作用域也叫原型作用域

對于一個Bean,每次訪問這個Bean都會創建新的實例.

也就是在Spring中獲取Bean(context.getBean())或者注入Bean(AutoWired注入Bean)操作的這個Bean都是新創建的Bean

適用場景 : 多例作用域一般適用于有狀態的Bean(Bean的狀態需要更新).

  • 請求作用域(request)

在請求作用域下,每次HTTP請求都會創建新的Bean實例.

這個與prototype類似 但是不相同 prototype是每次訪問Bean就創建,而request是每次HTTP請求創建新的實例(每次HTTP請求也可能訪問多個Bean)

適用場景 : 請求作用域在Spring MVC場景下才能夠生效 適用于一次HTTP請求共享Bean

  • 會話作用域(session)

在會話作用域下,每次session會話都會創建一個新的實例

適用場景 : 請求作用域在Spring MVC場景下才能夠生效,適用于在一次會話共享Bean

  • 全局作用域(Application)

在一個Http Servlet Context 中創建一個實例

適用場景 : 請求作用域在Spring MVC場景下才能夠生效,適用于Web應用的上下文信息

  • WebSocket(了解即可)

在一個HTTP WebSocket的生命周期中,創建新的實例

適用場景 : 請求作用域在Spring MVC場景下才能夠生效,WebSocket的每次會話中,保存了?個Map結構的頭信息,將?來包裹客戶端消息頭。第?次初始化后,直到WebSocket結束都是同?個Bean

在Bean初始化的時候,就會為Bean設置其作用域.

Spring共有6種作用域

其中單例作用域和多例作用域在Spring框架中使用

請求作用域,會話作用域,全局作用域,WebSocket 只有在SpringMVC框架中才會生效.

如何設置Bean作用域

有兩種方式設置Bean的作用域

第一種是直接設置值

比如我們來設置多例作用域

第二種是通過枚舉的方式

比如我們來設置多例作用域

你是否還在尋找穩定的海外服務器提供商?創新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統配攻擊溯源,準確流量調度確保服務器高可用性,企業級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧

本文題目:SpringBean作用域-創新互聯
文章URL:http://vcdvsql.cn/article12/ddjogc.html

成都網站建設公司_創新互聯,為您提供網站建設自適應網站建站公司網站設計網站維護關鍵詞優化

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

網站建設網站維護公司