1. 程式人生 > >spring例項化bean的幾種方式

spring例項化bean的幾種方式

1.使用類構造器實現例項化(bean的自身構造器)

 1 <bean id = "orderService" class="cn.itcast.OrderServiceBean"/> 

2.使用靜態工廠方法實現例項化

複製程式碼
1 <bean id = "personService" class = "cn.itcast.OrderFactory" factory-method     = "createOrder"/>
2 public class OrderFactory{
3     private static OrderFactory orderFactory = new
OrderFactory(); 4 private OrderFactory(); 5 public static OrderFactory createOrder(){ 6 return OrderFactory; 7 } 8 }
複製程式碼

3.使用例項化工廠方法實現例項化(通過別的實體的bean)

複製程式碼
 1 <bean id = "personServiceFactory" class = "cn.itcast.service.OrderFactory"/>
 2 <bean id = "persionService" factory-bean = "personServiceFactory" foctory-method = "createOrder"/>
 3
public class OrderFactory{ 4 private static OrderService orderService = new OrderService(); 5 private OrderFactory(); 6 public static OrderService createOrderServiceBean{ 7 return OrderService; 8 } 9 10 }
複製程式碼

  我們通常把負責載入bean的BeanFactory或者ApplicationContext叫做Spring容器。兩者都是通過xml配置檔案載入bean,ApplicationContext和BeanFacotry相比,主要區別在於BeanFacotry是延遲載入,在呼叫getBean()的時候才例項化要get的bean。如果Bean的某一個屬性無法注入,這時候才會丟擲異常;而ApplicationContext預設,在初始化自身的時候就會對所有的bean做例項化,除非對bean設定lazy-init="true",這樣有利於檢查所依賴屬性是否能注入。

  另外,ApplicationContext提供了更多的擴充套件功能,如對要載入的資原始檔的國際化’處理,對BeanPostProcessor的處理,所以在J2EE應用中,通常情況下我們都選擇使用ApplicationContext。不管是使用BeanFactory還是ApplicationContext,Spring 預設以singleton的方式初始化bean.

  對於BeanFactory的初始化,通常用下面的程式碼:

1 ClassPathResource resource = new ClassPathResource("beans.xml");
2 BeanFactory factory = new XmlBeanFactory(resource);

  對於ApplicationContext的初始化,通常在web.xml中配置:

複製程式碼
1 <context-param>    
2         <param-name>contextConfigLocation</param-name>
3         <param-value>
4             classpath:conf/Appcontext.xml
5         </param-value>
6 </context-param>
7 <listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>
複製程式碼

  或者

ApplicationContext context = new ClassPathXmlApplicationContext(
new String[] {"applicationContext.xml", "applicationContext-part2.xml"});

相關推薦

spring例項bean方式

1.使用類構造器實現例項化(bean的自身構造器)  1 <bean id = "orderService" class="cn.itcast.OrderServiceBean"/>  2.使用靜態工廠方法實現例項化 1 <bean id =

Spring例項bean的三方式

概述 學習一下Spring IOC bean的三種例項化方式。 構造方法 靜態工廠方法 例項工廠方法 預設構造方法例項化bean 最常用的初始化bean方式 public class Person { private String name; pr

04--Spring例項Bean的三方式

上一小節已經新建了Gradle模組用來測試(如果沒有也沒關係,不影響接下來的分析,可以直接在Spring的spring-beans模組下測試即可)。接下來回顧一下Spring中的一些知識點,以便於更好的的分析原始碼,本小節分析一下Spring例項化bean的三種

Spring-- Ioc 容器Bean例項場景

Bean例項化的幾種場景 1、BeanDefinitionRegistryPostProcessor例項化:標準BeanFactoryPostProcessor的擴充套件,BeanFactoryPostProcessor的作用是用來進一步定義註冊的BeanDefiniti

Spring例項Bean的三方式_例項工廠方法

第一步:Bean3實體 public class Bean3 { } 第二步:工廠 public class Bean3Factory { public Bean3 createBean3(){ return new Bean3();

Spring例項Bean的三方式Bean的型別

1.使用類構造器例項化  [預設的類構造器] 1 <bean id=“orderService" class="cn.itcast.OrderServiceBean"/> 2.使用靜

Spring 獲取bean 方式

讀取 獲取 static ava ade beans java ride .html 轉載自: http://www.cnblogs.com/luoluoshidafu/p/5659574.html 1.讀取xml文件的方式,這種在初學入門的時候比較適用 。     A

spring 獲取bean方式

這種方式適合於採用Spring框架的B/S系統,通過ServletContext物件獲取ApplicationContext物件,然後在通過它獲取需要的類例項。 這個類提供了方便的功能,這樣你就不必去記 ServletContext 中屬性的名字。 它的getWebApplicationContext() 

Spring獲取bean方式

方法四:繼承自抽象類WebApplicationObjectSupport 說明:類似上面方法,呼叫getWebApplicationContext()獲取WebApplicationContext 方法五:實現介面ApplicationContextAware 說明:實現該介面的setAppl

Bean例項的三方式

-------------------siwuxie095 Bean 例項化的三種方式 1、Bean 例項化,即 在 Spring 的核心配置檔案中建立物件 編寫一個普通類(

.NET中JSON的序列和反序列方式

存儲 ati mas int font javascrip AS memory 種類 一、什麽是JSON JSON(JavaScript Object Notation, JS 對象簡譜) 是一種輕量級的數據交換格式。它基於 ECMAScript (歐洲計算機協會制

在C#中,Json的序列和反序列方式總結(轉載)

在這篇文章中,我們將會學到如何使用C#,來序列化物件成為Json格式的資料,以及如何反序列化Json資料到物件。 什麼是JSON? JSON (JavaScript Object Notation) is a lightweight data-interchange format.

Spring建立物件的方式

     * 1)、包掃描+元件標註註解(@Controller/@Service/@Repository/@Component)[自己寫的類]      * 2)、@Bean[匯入的第三方包裡面的元件] 參考部落格:Spring註解@Conditional-

Spring啟用profile的方式

1、配置web.xml:通過配置context-param指定ContextLoaderListener初始化用到的引數;如下,可啟用test的profile。 <?xml version="1.0" encoding="UTF-8"?> <web-app vers

Spring的事物有方式?談談spring事物的隔離級別和傳播行為?

宣告式事務    使用spring宣告式事務,spring使用AOP來支援宣告式事務,會根據事務屬性,自動在方法呼叫之前決定是否開啟一個事務,並在方法執行之後決定事務提交或回滾事務。 事務的隔離級別: 資料庫系統提供了4種事務隔離級別,在這4種隔離級別中,Serial

物件序列方式的比較

定義一個待傳輸的物件UserVo: Java程式碼   public class UserVo{       private String name;       private int age;       private long phone;       private List<Us

在C#中,Json的序列和反序列方式總結

在這篇文章中,我們將會學到如何使用C#,來序列化物件成為Json格式的資料,以及如何反序列化Json資料到物件。 首先,解釋一下json  Json【javascript物件表示方法】,它是一個輕量級的資料交換格式,我們可以很簡單的來讀取和寫它,並且它很容易被計算機轉化和生成,它是完全獨立於語言的。 Jso

c++類例項的兩方式

/* * HelloWorld.cpp * * Created on: 2016年7月13日 * Author: zroad */ #include<iostream> #include<cstring> #inc

時間序列--視覺方式

一:隨時間變化的線性曲線 除了最常見的,還可以設定分組,比如 from pandas import Series from pandas import DataFrame from pandas import TimeGrouper from matplotlib import pyplot