自定義攔截器 1.什麼是攔截器 說明: 攔截器與過濾器的區別 SpringMVC 的攔截器(Interceptor)與 Java Servlet 的過濾器(Filter)類似,它主要用於攔截用戶的請求並做相應的處理,通常應用在許可權驗證、記錄請求信息的日誌、判斷用戶是否登錄等功能上。 SpringMV ...
1.使用@Inject和@Named進行依賴註入
(1) Spring提供了對JSR 330標準註解的支持,因此我們也可以使用JSR 330標準註解來進行依賴註入,不過,在此之前,我們得先使用maven添加相關依賴,如下
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>
(2) JSR 330標準註解提供了@Inject註解進行依賴註入,它的作用同@Autowired,我們可以將它用於變數,方法或構造函數參數上,如下
@Component
public class ExampleA {
//使用@Inject註解,來進行依賴項的註入,它的作用跟@Autowired是完全一樣的,只不過它是java提供的註解,Spring對其作了實現
@Inject
private ExampleB exampleB;
private ExampleC exampleC;
@Inject
public ExampleA(ExampleC exampleC) {
this.exampleC = exampleC;
}
}
(3) @Named註解的作用同@Qualifier註解,也是指定候選的bean的名稱,排除其他依賴項的干擾
@Component
public class ExampleA {
//使用@Named註解標識候選bean的名稱,如果容器中存在多個ExampleB實例,則選擇其中bean的名稱為exampleB的那個bean進行註入
@Inject
@Named("exampleB")
private ExampleB exampleB;
}
2.@Named註解與@ManagedBean註解
(1) @Named註解與JSR 250中的註解@ManagedBean可以用來替換掉@Component註解,如下
//使用@Named註解定義一個bean,沒錯,@Named註解還可用在類上,用於聲明一個bean,下麵這個例子等同於@Component("aaa")
@Named("aaa")
public class ExampleA { }
//此外,我們還可以用@ManagedBean註解來聲明一個bean
@ManagedBean("bbb")
public class ExampleB { }
//開啟註解掃描,則Spring也會把被@Named註解與@ManagedBean註解標註的bean添加至容器中
@Configuration
@ComponentScan(basePackages = "cn.example.spring.boke")
public class Config { }
(2) @Component註解可以組合衍生出其他註解,如@Service,@Controller註解等,而@Named註解與@ManagedBean註解不具備這一功能