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

如何使用Spring框架實現注入和替換

如何使用Spring 框架實現注入和替換?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

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

首先配置 XML:

<bean id="author" class="net.deniro.spring4.bean.Author" scope="prototype"/>
<bean id="book" class="net.deniro.spring4.bean.Book"
   p:name="面紗">
</bean>

bean author 的 scope 設置為 prototype。

Book 類實現 BeanFactoryAware 接口:

public class Book implements BeanFactoryAware {
 ...
@Override
public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
  this.factory = beanFactory;
}
public Author getPrototypeAuthor() {
  return (Author) factory.getBean("author");
  }
}

單元測試:

ApplicationContext context;
@BeforeMethod
public void setUp() throws Exception {
  context = new ClassPathXmlApplicationContext("beans5-5.xml");
}
@Test
public void test(){
  Book book= (Book) context.getBean("book");
  System.out.println(book.getAuthor().hashCode());
  System.out.println(book.getAuthor().hashCode());
  System.out.println(book.getPrototypeAuthor().hashCode());
  System.out.println(book.getPrototypeAuthor().hashCode());

測試結果

從結果中可以發現,只有從 BeanFactory 中獲取得到的 Author 實例是不同的。

這種實現把應用與 Spring 框架綁定在了一起,是否有更好的解決方案呢?有,就是注入方法。

1 注入方法

Spring 容器依賴于 CGLib 庫,所以可以在運行期動態操作 Class 的字節碼,比如動態地創建 Bean 的子類或實現類。

BookInterface 接口:

public interface BookInterface {
  Author getAuthor();
}

XML 配置:

<!-- 方法注入-->
<bean id="author" class="net.deniro.spring4.bean.Author" scope="prototype"
   p:name="毛姆"
    />
<bean id="book2" class="net.deniro.spring4.bean.BookInterface">
  <lookup-method name="getAuthor" bean="author"/>
</bean>

單元測試:

BookInterface book= (BookInterface) context.getBean("book2");
Assert.assertEquals("毛姆",book.getAuthor().getName());
Assert.assertTrue(book.getAuthor().hashCode()!=book.getAuthor().hashCode());

通過這種配置方式,就可以為接口提供動態實現啦,而且這樣返回的 Bean 都是新的實例。

 所以,如果希望在一個 singleton Bean 中獲取一個 prototype Bean 時,就可以使用 lookup 來實現注入方法。

2 替換方法

在 Spring 中,可以使用某個 Bean 的方法去替換另一個 Bean 的方法。

假設 Book 中有一個 getName() 方法,用于獲取書名:

/**
 * 書名
 */
private String name;
public String getName() {
  return name;
}

我們現在新建一個 Bean,它實現了 MethodReplacer 接口,用于替換 Book 中的 getName() 方法:

public class Book4 implements MethodReplacer {
  @Override
  public Object reimplement(Object obj, Method method, Object[] args) throws Throwable {
    return "活著";
  }
}

配置:

<bean id="book3" class="net.deniro.spring4.bean.Book"
   p:name="燦爛千陽">
  <replaced-method name="getName" replacer="book4"/>
</bean>
<bean id="book4" class="net.deniro.spring4.bean.Book4"/>

測試:

Book book= (Book) context.getBean("book3");
assertEquals("活著", book.getName());

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注創新互聯行業資訊頻道,感謝您對創新互聯的支持。

分享標題:如何使用Spring框架實現注入和替換
當前路徑:http://vcdvsql.cn/article8/pdshop.html

成都網站建設公司_創新互聯,為您提供網站維護全網營銷推廣微信公眾號關鍵詞優化網站營銷手機網站建設

廣告

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

搜索引擎優化