欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

class作用

錢斌斌2年前22瀏覽0評論

class作用?

1.作用

Bean標簽是用于配置對象,讓 spring 來創建的。

默認情況下它調用的是類中的無參構造函數。如果沒有無參構造函數則不能創建成功。

2.屬性

id:給對象在容器中提供一個唯一標識,用于獲取對象。

class:指定類的全限定類名,用于反射創建對象。默認情況下調用無參構造函數。

scope:指定對象的作用范圍。

二、Bean標簽的屬性

Bean標簽中的scope屬性,用于描述bean的作用域。取值如下:

singleton:默認值,單例的。代表在Spring Ioc容器中只有一個Bean實例。

prototype:多例的。每一次從Spring容器中獲取時都會返回一個新的實例。

request :WEB 項目中,Spring 創建一個 Bean 的對象,將對象存入到 request 域中。

session :WEB 項目中,Spring 創建一個 Bean 的對象,將對象存入到 session 域中。

global session :WEB 項目中,作用于集群環境(Porlet)的會話范圍(全局會話范圍)。如果沒有集群環境(Portlet)那么globalSession 相當于 session。

init-method:指定類中的初始化方法名稱。

destroy-method:指定類中銷毀方法名稱。

三、Bean標簽的scope屬性

scope屬性 說明

單例singleton 對象只創建一次,容器創建時創建

原型prototype 每調用一次就創建一個新的對象,對象調用時創建

request 每次HTTP請求時創建一個實例

session 針對每個HTPP session創建一個實例

1.測試scope=“singleton”

singleton:默認值,單例的。代表在spring Ioc容器中只有一個Bean實例。

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

<bean id="p" class="com.gql.entity.Person" c></bean>

</beans>

package com.ql.scope;

import org.junit.Test;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.gql.entity.Person;

/**

* 類說明:

* 測試Bean標簽的scope屬性

* @guoqianliang1998.

*/

public class Demo {

@Test

public void testScope() {

ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");

Person p1 = (Person) ac.getBean("p");

Person p2 = (Person) ac.getBean("p");

Person p3 = (Person) ac.getBean("p");

System.out.println(p1);

System.out.println(p2);

System.out.println(p3);

?

2.scope=“prototype”

prototype:多例的。每一次從Spring容器中獲取時都會返回一個新的實例。

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

<bean id="p" class="com.gql.entity.Person" scope="prototype"></bean>

</beans>

package com.ql.scope;

import org.junit.Test;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.gql.entity.Person;

/**

* 類說明:

* 測試Bean標簽的scope屬性

* @guoqianliang1998.

*/

public class Demo {

@Test

public void testScope() {

ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");

Person p1 = (Person) ac.getBean("p");

Person p2 = (Person) ac.getBean("p");

Person p3 = (Person) ac.getBean("p");

System.out.println(p1);

System.out.println(p2);

System.out.println(p3);

四、scope="singleton"帶來的線程安全問題

單例模式下,在對象實體類的成員位置進行增刪改,可能會引發線程安全問題。

而寫在函數內部(局部位置)則不會引發線程安全問題,這是因為對象每一次調用函數,都會在棧空間中開辟空間,函數調用完就退出,生命周期短。

package com.gql.entity;

import java.util.ArrayList;

import java.util.List;

/**

* 類說明:

* 實體類Person

* @guoqianliang1998.

*/

public class Person {

private String name;

//如果對list進行增刪改,可能引發線程安全問題。

public List<String> list = new ArrayList<String>();

//無參構造

public Person() {

}

//有參構造

public Person(String name) {

this.name = name;

}

public void talk(){

System.out.println("talk方法...");

}

}