javascript
Spring创建对象的三种方式以及创建时间
創(chuàng)建對(duì)象的三種方式:? ? ?
? ? ? ?1、采用默認(rèn)的構(gòu)造函數(shù)創(chuàng)建
?????? 2、采用靜態(tài)工廠方法
????????? 1、寫一個(gè)靜態(tài)工廠方法類
?????????????? public class HelloWorldFactory {
????????????????? public static HelloWorld getInstance(){
???????????????????? return new HelloWorld();
????????????????? }
?????????????? }
????????? 2、在spring的配置文件中進(jìn)行聲明
??????????????? <bean id="helloWorld2" class="com.itheima05.spring.bean.HelloWorldFactory"
?????????????????????????? factory-method="getInstance"></bean>
??????????????? 告訴spring容器利用HelloWorldFactory類中的getInsatance靜態(tài)方法產(chǎn)生對(duì)象
??????????????? 但是具體的對(duì)象的創(chuàng)建的過程是由程序員來完成的
?????? 3、實(shí)例工廠方法
????????? 1、寫一個(gè)實(shí)例工廠類
????????????? public class HelloWorldFactory {
????????????????? public HelloWorld getInstance(){
???????????????????? return new HelloWorld();
????????????????? }
?????????????? }
????????? 2、在spring的配置文件中
??????????? 1、<bean id="helloWorld3" class="com.itheima05.spring.bean.HelloWorldFactory2"></bean>
?????????????????? spring容器為HelloWorldFactory2創(chuàng)建對(duì)象
??????????? 2、<bean id="helloWorldFactory" factory-bean="helloWorld3" factory-method="getInstance"></bean>
????????????????? 告訴spring容器,利用helloWorld3對(duì)象調(diào)用getInstance方法
?
創(chuàng)建對(duì)象的時(shí)機(jī)
? ? ? ? ? 1、在默認(rèn)的情況下,在spring容器啟動(dòng)的時(shí)候創(chuàng)建對(duì)象
?????????????????? 在spring配置文件中,只要根據(jù)以上的三種方式的其中一種配置了,spring容器就會(huì)創(chuàng)建對(duì)象
?????????????????? 好處:spring容器和web容器整合的時(shí)候,當(dāng)web容器啟動(dòng)的時(shí)候就可以初始化spring容器了,如果這個(gè)時(shí)候
?????????????????????????? spring容器內(nèi)部有錯(cuò)誤,則直接會(huì)報(bào)錯(cuò)
?????????????????? 如果該bean中存放著大量的數(shù)據(jù),而且數(shù)據(jù)的初始化發(fā)生在創(chuàng)建對(duì)象的時(shí)候,這個(gè)時(shí)候,數(shù)據(jù)會(huì)過早的駐留在內(nèi)存中
? ? ? ? ? 2、如果在spring的配置文件中一個(gè)bean的配置中有l(wèi)azy-init="true",那么該bean在調(diào)用getBean方法時(shí)創(chuàng)建對(duì)象
?????????????????? 不好處:不能過早的發(fā)現(xiàn)錯(cuò)誤
?????????????????? 好處:按照需求加載數(shù)據(jù)(什么時(shí)候要什么時(shí)候加載)
轉(zhuǎn)載于:https://www.cnblogs.com/lzy1991/p/5353176.html
總結(jié)
以上是生活随笔為你收集整理的Spring创建对象的三种方式以及创建时间的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PHP安装编译错误及解决办法
- 下一篇: SVN错误:Attempted to l