spring的註解使用
1.註解測試
在xml裏面配置
<context:component-scan base-package="cn.ql"></component-scan>
component-scan:指定Spring掃描的包,例如你在裏面配置的是cn.ql,那麽spring會掃描cn.ql.xxx的所有的包
base-package:配置包名(掃描這個包以及這個包裏面所有的子包)
第一組註解:(用來創建對象交給spring管理)
@component
這個裏面的value屬性給這個類指定唯一的名字如果不指定那麽默認就是當前類的名字
@component:這個適合用於所有的類
@controller:適合用於web層,當然用在別個層也是可以的,只不過spring給你提供的都是見名知意的效果
那麽我們就盡量也用到見名知意的效果
裏面的value屬性,也是指定當前類的唯一,如果不寫那麽默認是當前類的名稱
@service:用於service層
裏面的value屬性跟上面是一樣的效果的
@repository:用於dao層
value:跟上面的效果都是一樣的
第二組註解,(自動註入對象)
他是替代了xml裏面的<property>
<set></set>
<list></list>
<array></array>
<map></map;
<props>
<prop></prop>
</props>
</property>
中的這幾個標簽
@Autowired
1.按照接口類型自動註入
2.如果有多個實現類,再按照屬性名的id從spring容器裏面去找
@Qualifier 配置到屬性
按照的指定的id從容器裏面找,他可以指定id的名字
@Autowired 和 @Qualifier 配合使用
查找對象
1.按照接口的類型去找
2.按照@qualifier指定的名稱去找
@Resource : jdk提供的註解(按照指定的bean的id從容器裏面去尋找)
裏面的name賦值必須是唯一的,他相當於id
註意:使用註解的註入方式不需要提供set方法
@value:可以給私有屬性賦值,但這種方式用的比較少,因為如果用value賦值的話太麻煩還不如我們直接username=xxx這樣賦值方便呢
但是他還有個功能就是可以讀取配置文件裏面的內容
配置文件裏面有個
jdbc.username=root
難麽我們就可以這樣配置
@value("${jdbc.username}"):這樣就可以了,使用的是Spring_el表達式
private String username;
但是使用這個的前提條件是配置文件必須的在配置文件xml裏面配置交給spring管理
<bean id="propertySource"
class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
<property name="location" value="classpath:jdbc.properties"></property>
</bean>
3:第三組註解是聲明對象的生命周期的:
@scope:指定對象的作用域
singleton:單列默認就是單列的
prototype:多列(struts2的動作類交給spring管理的時候必須的使用多列)
request:基本不用
session:基本不用@postConstruct:指定初始化方法
@preDestroy:指定銷毀的方法(銷毀的方法:只能是在單列的情況下使用)
spring3之後提供了一套全新的註解,使用這套註解完全替換xml裏面的配置
第四 純註解的配置方式
使用這些註解主要是用來配置spring的
@configuration:定義到類上:聲明此類是一個配置類
@componentScan:指定掃描的包(開啟對註解的支持)
basepackages:指定掃描的包@ComponentScan裏面的一個屬性(裏面寫的是指定掃描的包和這個包的所有子包)
使用註解的方式進行配置的時候:
1.我們自己寫的代碼交給spring管理的時候,需要在類上使用@component @controller等註解來做
2.外部jar包提供的類,我們就需要使用@Bean配置到方法,交給spring管理
@Bean:定義到方法上
2.用@Bean配置的方法這個方法的返回值會交給spring管理的.
name:bean的唯一標示
@Import:導入其他的配置類
裏面的value屬性:配置其他類的字節碼文件
第五:使用spring提供的測試環境進行junit單元測試
1.導入spring中對測試環境提供的jar包:spring-test.jar
2.在測試類上使用註解的形式配置單元測試環境
@RunWith(SpringJunit4ClassRunner.class):指定單元測試的運行環境
@ContextConfiguration:
裏面的兩個屬性分別用在xml配置文件上和註解
locations(String類型單位xml位置) :針對的是xml配置方式
classes(配置類的字節碼對象) :針對註解的配置方法
單元測試類是不需要交給spring管理的,因為浪費資源
spring的註解使用