spring學習5-註解式bean配置+Junit簡易使用

隔了兩天,忙着面試,快累死了,終於有空來寫博客了。好了,發完牢騷,進入咱們今天的學習。面試

上篇spring學習4-bean配置文件中學習了使用xml配置文件配置bean,是否是以爲不淡定,每寫一個類,就得來註冊一下,xml文件得多大。好在spring中提供另外一種bean的配置方式,使用註解配置bean。spring

首先得了解一下註解,註解是jdk1.5才添加的新特性,具體註解怎麼寫,我就很少說了,我在osc博客裏搜到一篇很不錯的文章,不瞭解的童鞋能夠去瞧瞧Java註解總結api

配置文件仍是免不了的,須要在配置文件中使用<context:component-scan>標籤才能讓spring去掃描註解。先準備一下前期工做吧。app

在spring的api文檔xsd-config能夠找到context的命名空間,把加粗的兩行加入到applicationContext.xml裏。框架

 

下一步,咱們在配置文件中加入bean掃描的標籤,其中只有一個屬性,base-package,指定須要掃描的包maven

  
< context:component-scan base-package ="com.example.spring" ></ context:component-scan >

這樣咱們的註解就能夠被掃描到了,工具

題外話,在網上搜到能夠用測試用例來測試咱們寫的代碼,不用每次都寫學習

  
ApplicationContext context = new ClassPathXmlApplicationContext( " applicationContext.xml " ); Car car = (Car) context.getBean( " car " );

這樣的代碼了。測試

-------------------------------------我是華麗的分割線---------------------------------------spa

先講一下怎麼測試

首先在pom.xml裏須要加入兩個包,一個是junit4,一個是spring的測試框架,原來建立maven工程自帶的junit版本過低,很差用。

  
< dependency > < groupId > org.springframework </ groupId > < artifactId > spring-test </ artifactId > < version > 3.2.8.RELEASE </ version > < scope > runtime </ scope > </ dependency > < dependency > < groupId > junit </ groupId > < artifactId > junit </ artifactId > < version > 4.11 </ version > </ dependency >

而後咱們寫一下測試類,就叫CarTest好了,名字隨便。

  
@RunWith(SpringJUnit4ClassRunner. class ) @ContextConfiguration(locations = " classpath:applicationContext.xml " ) public class CarTest { @Test public void demo1(){ } }

整個測試類框架大概就是這樣子

第一行@RunWith(SpringJUnit4ClassRunner.class)是整合spring和junit4用的

第二行@ContextConfiguration(locations="classpath:applicationContext.xml")是指定applicationContext.xml文件

demo1方法上的註解就是標註這個方法由junit運行,須要運行測試用例的時候按下圖來,在方法名上點右鍵,選debug as或是run as中的 JUnit Test便可,很是方便

image 

-------------------------------------我是華麗的分割線再一次出現---------------------------------------

如今咱們修改一下以前的Car類和Engine類

在QiyouEngine類名上面一行添加 @Component("qiyouEngine"),這個的做用和xml配置中Bean id=」qiyouEngine」是同樣的

在Car類中咱們在private IEngine engine;上面添加兩個標記,第一標記標識自動裝配,這個標記是按類型進行裝配的,若是是有多個類實現了IEngine,就須要寫@Qualifier("qiyouEngine")指明bean的id是哪一個,否則spring會報錯,說找到多個實現了IEngine類。

  
@Autowired @Qualifier( " qiyouEngine " ) private IEngine engine;

這是一種寫法,spring推薦使用另外一個標籤@Resource,兩種方法效果是同樣的

  
@Resource(name = " qiyouEngine " ) private IEngine engine;

使用了自動裝配標籤,本來set的方法就能夠去掉了,spring使用的是asm工具,直接操做字節碼注入類,沒有set的方法也是能夠注入的。

最後須要說明的一點,註解的方式只試用類是咱們本身寫的,或是咱們能夠進行修改代碼的纔有用,若是是第三方類,就只能老老實實的用xml配置文件了。

相關文章
相關標籤/搜索