spring自帶的對(duì)象怎么放入ioc容器 spring bean class作用?
spring bean class作用?1.作用Bean標(biāo)簽是主要是用于配置對(duì)象,讓spring來(lái)創(chuàng)建家族的。默認(rèn)情況下它動(dòng)態(tài)創(chuàng)建的是類中的無(wú)參構(gòu)造函數(shù)。假如沒(méi)有無(wú)參構(gòu)造函數(shù)則不能創(chuàng)建成功。2.屬性i
spring bean class作用?
1.作用
Bean標(biāo)簽是主要是用于配置對(duì)象,讓spring來(lái)創(chuàng)建家族的。
默認(rèn)情況下它動(dòng)態(tài)創(chuàng)建的是類中的無(wú)參構(gòu)造函數(shù)。假如沒(méi)有無(wú)參構(gòu)造函數(shù)則不能創(chuàng)建成功。
2.屬性
id:給對(duì)象在容器中提供一個(gè)僅有標(biāo)有,用于獲取對(duì)象。
class:更改類的全限制要求屬性名,主要用于反射修改對(duì)象。默認(rèn)情況下動(dòng)態(tài)鏈接庫(kù)無(wú)參構(gòu)造函數(shù)。
scope:指定你對(duì)象的作用范圍。
二、Bean標(biāo)簽的屬性
Bean標(biāo)簽中的scope屬性,主要用于詳細(xì)解釋bean的作用域。取值萬(wàn)分感謝:
singleton:默認(rèn)值,單例的。代表在Spring Ioc容器中只能一個(gè)Bean實(shí)例。
prototype:多例的。在這一瞬間從Spring容器中聲望兌換時(shí)都會(huì)直接返回兩個(gè)新的實(shí)例。
request:WEB項(xiàng)目中,Spring創(chuàng)建戰(zhàn)隊(duì)一個(gè)Bean的對(duì)象,將對(duì)象存進(jìn)到request域中。
session:WEB項(xiàng)目中,Spring創(chuàng)建角色一個(gè)Bean的對(duì)象,將對(duì)象轉(zhuǎn)存到session域中。
globalsession:WEB項(xiàng)目中,作用于集群環(huán)境(Porlet)的會(huì)話范圍(全局會(huì)話范圍)。要是沒(méi)有集群環(huán)境(Portlet)那就globalSession超過(guò)session。
init-method:更改類中的初始化方法名稱。
destroy-method:重新指定類中消毀方法名稱。
三、Bean標(biāo)簽的scope屬性
scope屬性t只能證明
單例singletont對(duì)象只創(chuàng)建角色四次,容器修改時(shí)創(chuàng)建戰(zhàn)隊(duì)
原型prototypet每全局函數(shù)一次就創(chuàng)建角色三個(gè)新的對(duì)象,對(duì)象動(dòng)態(tài)鏈接庫(kù)時(shí)修改
requestt每次來(lái)HTTP幫忙時(shí)創(chuàng)建家族一個(gè)實(shí)例
sessiont根據(jù)每個(gè)HTPPsession修改一個(gè)實(shí)例
1.測(cè)試scope“singleton”
singleton:默認(rèn)值,單例的。代表在Spring Ioc容器中唯有一個(gè)Bean實(shí)例。
lt?xmlversion#341.0#34encoding#34UTF-8#34?rlm
ltbeansxmlns##34
txmlns:xsi##34
txsi:schemaLocation##34dstrok
tltbeanid#34p#34class##34cgtlt/beangt
lt/beansgt
package
importorg.junit.Test
import
import
import
/**
*類只能說(shuō)明:
*tt測(cè)試Bean標(biāo)簽的scope屬性
*@guoqianliang1998.
*/
welfareclassDemo{
tpublicvoidtestScope(){
ttApplicationContextacnewClassPathXmlApplicationContext(#34applicationContext.xml#34)
ttPersonp1(Person)(#34p#34)
ttPersonp2(Person)(#34p#34)
ttPersonp3(Person)(#34p#34)
(p1)
(p2)
(p3)
t
“prototype”
prototype:多例的。在這一瞬間從Spring容器中查看時(shí)都會(huì)回個(gè)新的實(shí)例。
lt?xmlversion#341.0#34encoding#34UTF-8#34?r26
ltbeansxmlns##34
txmlns:xsi##34
txsi:schemaLocation##34a8
tltbeanid#34p#34class##34scope#34prototype#34gtlt/beangt
lt/beansgt
package
importorg.junit.Test
import
import
import
/**
*類那說(shuō)明:
*tt測(cè)試Bean標(biāo)簽的scope屬性
*@guoqianliang1998.
*/
privateclassDemo{
tpublicvoidtestScope(){
ttApplicationContextacfunClassPathXmlApplicationContext(#34applicationContext.xml#34)
ttPersonp1(Person)(#34p#34)
ttPersonp2(Person)(#34p#34)
ttPersonp3(Person)(#34p#34)
(p1)
(p2)
(p3)
四、scope#34singleton#34給他的線程安全問(wèn)題
單例模式下,在對(duì)象實(shí)體類的成員位置通過(guò)增改改,很有可能會(huì)演變成線程安全問(wèn)題。
而寫(xiě)在函數(shù)內(nèi)部(只是局部位置)則肯定不會(huì)直接導(dǎo)致線程安全問(wèn)題,這是而且對(duì)象每當(dāng)調(diào)用函數(shù),都會(huì)在??臻g中界域空間,函數(shù)執(zhí)行完就后退,生命周期短。
package
import
import
/**
*類只能證明:
*tt實(shí)體類Person
*@guoqianliang1998.
*/
publicclassPerson{
tprivateStringname
t//如果不是對(duì)list接受增改改,肯定影響到線程安全問(wèn)題。
tpublicListltStringgt list new ArrayListltStringgt()
t//無(wú)參構(gòu)造
tpublicPerson(){
t}
t//有參構(gòu)造
tpublicPerson(String name){
name
t}
tpublicvoidtalk(){
(#34talk方法...#34)
t}
}
spring是對(duì)什么進(jìn)行操作?
Spring是一個(gè)開(kāi)源的輕量級(jí)的應(yīng)用程序開(kāi)發(fā)框架,其目的是簡(jiǎn)化后企業(yè)的應(yīng)用程序開(kāi)發(fā),降底侵蝕性,Spring提供給的IOC和AOP功能,可以將組件之間的耦合度降到最多,便于后期的維護(hù)和可以升級(jí),實(shí)現(xiàn)了軟件的高內(nèi)聚低耦合思想。
使用Spring框架變更土地性質(zhì)的時(shí)候不僅也可以不使用Spring本身需要提供的功能外,還也可以不使用第三方框架和技術(shù)來(lái)全部整合應(yīng)用,是可以自由的選擇常規(guī)哪種技術(shù)去開(kāi)發(fā)。