ssh搭建後的簡化
簡單來說就是把applicationcontext.xml這份配置文件裡面的bean都換成了相應的注解,大大的減少了代碼量,提高代碼的可閱讀性
例子源碼:http://pan.baidu.com/s/1o7R5S8q
例如:
平時我們都要在applicationcontext.xml這份配置文件裡面的實例化對象,給對象的屬性注入值啊這些的
你們是不是覺得這樣寫起來很麻煩呢?
那現在我們就開始教大家如何使用注解,把這一堆煩人的代碼統統去掉吧
在使用注解之前,我們首先要先在applicationcontext.xml寫上一句話
<context:component-scan base-package="news"/>
下面這個標簽的一些相關信息:
<!-- <context:component-scan>: 有一個use-default-filters屬性,該屬性默認為true, 這就意味著會掃描指定包下的全部的標有注解的類,並注冊成bean. 可以發現這種掃描的粒度有點太大,如果你只想掃描指定包下面的Controller, 該怎麼辦?此時子標簽<context:incluce-filter>就起到了勇武之地。如下所示 <context:component-scan base-package="news" use-default-filters="false"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan> 如果use-dafault-filters在上面並沒有指定,默認就為true, 也就意味著你現在加<context:exclude-filter/>跟沒加是一樣的 所有你要記住,你若想要用到<context:component-scan>的子標簽, 必須要把use-dafault-filters的值改為false 當然還有一個是與之相反的而已這裡就不啰嗦了 上面這一對解釋換成一句話就是: Use-dafault-filters=”false”的情況下:<context:exclude-filter>指定的不掃描,<context:include-filter>指定的掃描 <context:component-scan>的base-package屬性作用:設置要被掃描的包 --> (本案例不用到,只是用了一個全盤掃描,以上內容只是為了讓大家充分了解它) <context:component-scan base-package="news"/>
好了,現在開始跟大家一個個的注解慢慢分析它的作用吧:
首先我們來說一下類的注解吧
實例化一個類對象有四個注解可以用
@Service
@Repository
@Controller
@Entity
為了規范,我們一般會這樣寫(當然你不這樣分也沒影響)
@Service實例化業務邏輯類(也即是我們的ServiceImpl),@Repository實例化數據層類,
@Controller實例化Action類,@Entity實例化實體類
對了,別忘了類的注解還有一個很重要的@Scope(value="prototype")
這個注解的意思是:非單例,也就是說不同的用戶使用的是不同的對象,很有用,若不加這句,那麼大家都訪問同一個對象,很容易炸了的
類的注解就講到這裡,下面來說下全局變量的注解吧!
jdk提供的注解:
@Autowired
@Qualifier(name="beanId")
若不寫@Qualifier(name="beanId"),默認按類型匹配相應的bean(建議不寫,這樣會讓代碼閱讀性高點)
spring提供的注解
@Resource(name="beanId")
若不寫(name="beanId"),默認按變量名稱匹配相應的bean(建議不寫,這樣會讓代碼閱讀性高點)
例如下圖