1. 程式人生 > >Spring 學習筆記1--三種例項化Bean方法、註解

Spring 學習筆記1--三種例項化Bean方法、註解

首先通過一個簡單的程式學習Spring在程式中的運用。

定義一個介面:

package com.spring.interfacebean; 

public interface PersonBean 
{ 
   void show(); 
}
這個介面的實現類:

package com.spring.implbean; 
import com.spring.interfacebean.PersonBean; 
 
public class UserBean implements PersonBean 
{ 

   public void show() 
   { 
       System.out.println("Hello world"); 
   } 
}
Spring配置的xml程式碼:

<?xml version="1.0" encoding="UTF-8"?> 
寫一個測試類,呼叫上述程式實現功能:
package com.spring.test; 
 
import org.junit.Test; 
import org.springframework.context.ApplicationContext; 
import org.springframework.context.support.ClassPathXmlApplicationContext; 
import com.spring.interfacebean.PersonBean; 
public class TestClass 
{ 
    @Test 
    public void testMethod() throws Exception 
    { 
       //讀取配置檔案 
        ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml"); 
        //獲取UserBean的例項 
       PersonBean bean=(PersonBean)ctx.getBean("userBean"); 
       //呼叫方法 
       bean.show(); 
    } 
}
該程式是通過例項化bean的方法來實現功能。在Spring中對bean的例項化有三種方法。

1,使用類構造器例項化物件

2,使用靜態工廠的方法例項化物件

3,使用例項工廠的方法例項化物件

三種例項化物件的程式碼如下所示:

<?xml version="1.0" encoding="UTF-8"?> 

    
    
BeanFactory類的程式碼如下所示:

package com.spring.factory; 

import com.szy.spring.implbean.UserBean; 
import com.szy.spring.interfacebean.PersonBean; 
 
public class BeanFactory 
{ 
    //使用靜態工廠的方法例項化使用 
   public static PersonBean UserBeanService() 
   { 
        return new UserBean(); 
    } 
    
   public PersonBean getUserBeanService() 
   { 
       return new UserBean(); 
    } 
}  

在Spring中的註解:

@Service :用於標註配置業務層(service層)元件

@Cotroller:用於標註配置控制層元件

@Reponsitory:用於標註一般的DAO層Bean物件

@Component:泛指元件,對一般不好歸入以上三種中的一種是使用


Spring的自動裝配:

       自動裝配是指不用顯示的手動配置java Bean之間的依賴關係,而是讓Spring依據某種規則自動將合適的物件注入目標物件中。Spring中常用@Autowire和@Resource進行自動裝配。

@Autowire:預設是按照物件的資料型別進行自動裝配

       @Autowire

       private UserDao userDao;

Spring框架會自動將型別為UserDao的物件注入進來。

@Resource:預設是按照名稱或者ID進行自動裝配,只有找不到匹配的名稱或者ID時才按照型別進項裝配

      @Resource(name="userDao")

      private UserDao userDao;

Spring框架在執行時會根據名稱或者ID為“userDao”的物件注入進來。