欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Spring內核研究-通過(guò)工廠(chǎng)注入
Spring內核研究-通過(guò)工廠(chǎng)注入
    Spring專(zhuān)門(mén)設計了對工廠(chǎng)模式支持,你可以使用靜態(tài)工廠(chǎng)方法來(lái)創(chuàng )建一個(gè)Bean,也可以使用實(shí)例工廠(chǎng)的方法來(lái)創(chuàng )建Bean。下面分別介紹這2種方法。
靜態(tài)工廠(chǎng)注入
    定義一個(gè)Bean使用自己類(lèi)上的靜態(tài)工廠(chǎng)方法來(lái)創(chuàng )建自己。
我們繼續使用上一篇文章《Spring內核研究-Lookup方法注入》的例子來(lái)說(shuō)明如何使用靜態(tài)工廠(chǎng)創(chuàng )建Bean。
context.xml
    factory-menthod定義了userDao Bean使用UserDao類(lèi)的getInstance方法來(lái)創(chuàng )建自己的實(shí)例。userManager仍然通過(guò)lookup方法獲得userDao。Lookup方法并不關(guān)心一個(gè)Bean的實(shí)例時(shí)怎樣創(chuàng )建的,所以可以混合使用lookup方法和factory-menthod方法。
xml version="1.0" encoding="UTF-8"?>DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN""http://www.springframework.org/dtd/spring-beans.dtd"><beans> <bean name="userManager" class="research.spring.beanfactory.ch2.UserManager"> <lookup-method name="getUserDao" bean="userDao" /> bean> <bean name="userDao" class="research.spring.beanfactory.ch2.UserDao"
 factory-method="getInstance" / >beans>

UserDao.java
    增加一個(gè)getInstance方法來(lái)創(chuàng )建自己的實(shí)例。
package research.spring.beanfactory.ch2;public class UserDao {public static UserDao getInstance() {return new UserDao("static factory method");}private String name = "";public UserDao(String name) {this.name = name;}public void create() {System.out.println("create user from - " + name);}}

Test.java
package research.spring.beanfactory.ch2;
import org.springframework.beans.factory.xml.XmlBeanFactory;import org.springframework.core.io.ClassPathResource;
public class Test {public static void main(String[] args) {XmlBeanFactory factory=new XmlBeanFactory(new ClassPathResource(
"research/spring/beanfactory/ch2/context.xml"));UserManager manager=(UserManager) factory.getBean("userManager");manager.createUser();}}

運行Test.java,你會(huì )看到:

create user from - static factory method

這說(shuō)明userDao使用它自己得靜態(tài)工廠(chǎng)創(chuàng )建得。
 
靜態(tài)工廠(chǎng)方法存在一些限制:
  1. 靜態(tài)工廠(chǎng)方法上不能有參數,也不能在Spring種定義靜態(tài)工廠(chǎng)方法的參數。
  2. 靜態(tài)工廠(chǎng)方法只能是public的,不能是private或protected的。
  3. 靜態(tài)工廠(chǎng)方法不能和構造函數注入一起使用。下面的定義時(shí)不能正常工作的:

 

 

package research.spring.beanfactory.ch2;import org.springframework.beans.factory.xml.XmlBeanFactory;import org.springframework.core.io.ClassPathResource;public class Test {public static void main(String[] args) {XmlBeanFactory factory=new XmlBeanFactory(new ClassPathResource(
"research/spring/beanfactory/ch2/context.xml"));UserManager manager=(UserManager) factory.getBean("userManager");manager.createUser();}}
實(shí)例工廠(chǎng)注入
    定義一個(gè)Bean使用這個(gè)Bean的工廠(chǎng)對象上的工廠(chǎng)方法來(lái)創(chuàng )建自己。
我們定義一個(gè)UserDao的Factory來(lái)創(chuàng )建UserDao。
UserDaoFactory.java
package research.spring.beanfactory.ch2;public class UserDaoFactory{public UserDao getUserDao(){return new UserDao("UserDaoFactory");}}
修改context.xml:
xml version="1.0" encoding="UTF-8"?>DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN""http://www.springframework.org/dtd/spring-beans.dtd"><beans> <bean name="userManager" class="research.spring.beanfactory.ch2.UserManager"> <lookup-method name="getUserDao" bean="userDao" /> bean> <bean name="userDao" class="research.spring.beanfactory.ch2.UserDao"
 factory-bean
="userDaoFactory" factory-method="getUserDao" > bean> <bean name="userDaoFactory" class="research.spring.beanfactory.ch2.UserDaoFactory">bean>beans>

再次運行Test.java你會(huì )看到:
create user from – UserDaoFactory
 
    通過(guò)上面的配置Spring已經(jīng)使用userDaoFactory實(shí)例的工廠(chǎng)方法來(lái)創(chuàng )建userDao了。
  • factory-bean定義了工廠(chǎng)Bean
  • factory-method定義了工廠(chǎng)方法
 

 

    實(shí)例工廠(chǎng)和靜態(tài)工廠(chǎng)一樣都存在相同的限制:
  1. 靜態(tài)工廠(chǎng)方法上不能有參數,也不能在Spring種定義靜態(tài)工廠(chǎng)方法的參數。
  2. 靜態(tài)工廠(chǎng)方法只能是public的,不能是private或protected的。
  3. 靜態(tài)工廠(chǎng)方法不能和構造函數注入一起使用。

 

   
    和靜態(tài)工廠(chǎng)不同的是:
  •  實(shí)例工廠(chǎng)方法不能是靜態(tài)的,而靜態(tài)工廠(chǎng)方法必須是靜態(tài)的。

 

    通過(guò)上面的例子我們看到Spring對工廠(chǎng)模式對了完整的支持。但是這里還是需要說(shuō)明,如果使用IoC模式設計的系統一般情況下不需要為任何Bean做工廠(chǎng)類(lèi)。在我的觀(guān)點(diǎn)里,工廠(chǎng)模式僅僅是遺留系統,使用依賴(lài)注入模式可以取代工廠(chǎng)模式。Spring對工廠(chǎng)的支持僅僅是為了可以很好的集成遺留系統。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
springLookup方法注入
工廠(chǎng)模式講解, 引入Spring IOC
別再BeanFactory和FactoryBean傻傻分不清楚
Spring中的BeanFactory定義Bean
yanghuw的專(zhuān)欄,第一個(gè)Spring程序
spring階段性的一點(diǎn)感受
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久