好久以前就想系統的學習和掌握Spring框架,可是拖了好久都沒有行動。如今趁着在外出差瑣事很少,就花時間來由淺入深的研究下Spring框架。Spring框架這幾年來已經發展成爲一個巨無霸產品。從最初的只是用來做爲依賴注入到如今已是沒法不包。其涉及的領域有依賴注入、MVC、JMS、Web flow、Batch job、Web service、Security…..幾乎是涵蓋了技術開發的全部方面。本人雖然從事Java語言開發時間不長,可是對Spring中的不少組件都有所涉獵,好比上面列出的那幾個都有用過。能夠說Spring是Java程序員必需要掌握的一個庫。java
如今Spring的最新的穩定版本是4.0.2,該版本中包含了大量的新特性,是比較重要的一次release。本系列將基本使用該版本進行講解。git
第一講就用一個簡單的例子開始吧,初步學會使用Spring-Context的依賴注入功能。程序員
首先使用maven建立一個新的項目。github
1
|
$: mvn archetype:generate |
建立成功後在pom.xml文件中加入對Spring-Context的依賴。spring
1 2 3 4 5 6 7 |
<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.0.2.RELEASE</version> </dependency> </dependencies> |
而後咱們建立一個MovieService的接口。bash
1 2 3 4 5 6 |
package huangbowen.net.service; public interface MovieService { String getMovieName(); } |
建立一個DefaultMovieService來實現這個接口。app
1 2 3 4 5 6 7 8 |
package huangbowen.net.service; public class DefaultMovieService implements MovieService { public String getMovieName() { return "A Touch of Sin"; } } |
而後建立一個Cinema類,會使用MoviceService來放電影。框架
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
package huangbowen.net.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component public class Cinema { @Autowired private MovieService movieService; public void printMovieName() { System.out.println(movieService.getMovieName()); } } |
創建一個Application類。maven
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
package huangbowen.net; import huangbowen.net.service.Cinema; import huangbowen.net.service.DefaultMovieService; import huangbowen.net.service.MovieService; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; @Configuration @ComponentScan public class Application { @Bean public MovieService getMovieService() { return new DefaultMovieService(); } public static void main( String[] args ) { AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(Application.class); Cinema cinema = applicationContext.getBean(Cinema.class); cinema.printMovieName(); } } |
Ok,運行main函數,獲得控制檯輸出:函數
1
|
A Touch of Sin |
本例子中主要使用Annotation功能來實現對MoviceService的注入。咱們將Cinema.java的頭部標註爲@Component說明該類交由Spring託管。而Cinema.java中的屬性MoviceService標註爲@Autowired,則Spring在初始化Cinema類時會從Application Context中找到類型爲MovieService的Bean,並賦值給Cinema。在Application.java中咱們聲明瞭一個類型爲MovieService的Bean。而且標註Application.java爲@Configuration,這是告訴Spring在Application.java中定義了一個或多個@Bean方法,讓Spring容器能夠在運行時生成這些Bean。@ComponentScan則會讓Spring容器自動掃描當前package下的標有@Component的class,這些class都將由Spring託管。
本例中的源碼請在個人GitHub上自行下載。