1、@Autowired 注解:
首先在使用時候需要引入配置:
<!-- 該 BeanPostProcessor 將自動起作用,對標注 @Autowired 的 Bean 進行自動注入 --> <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>
在Spring MVC 中 由於配置了“ <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>”
故不使用引入上面自動注入也可實現指定注入功能。
@Autowired 可以標注在屬性,以及set方法上,以及構造函數上.進行標注,然后自動完成注入。
2、@Qualifier 注解:
如果配置了多個類型為 User 的 Bean, 那么我們在
@Autowired private User setUser(User user){ //.... }
會出現錯誤,這個時候我們就需要對注入的對象指定讀取Bean的名稱,則所以 @Autowired 和 @Qualifier 結合使用時,自動注入的策略就從 byType 轉變成 byName 了。
@Autowired private User setUser(@Qualifier("user1") User user){ //.... } public class Recommender { @Autowired @Qualifier("main") private MovieCatalog log; }
@Autowired 可以對成員變量、方法以及構造函數進行注釋,而 @Qualifier 的標注對象是成員變量、方法入參、構造函數入參。正是由於注釋對象的不同,所以 Spring 不將 @Autowired 和 @Qualifier 統一成一個注釋類。
3、@Required注解:
@Required注解檢查 但他只檢查屬性是否已經設置而不會測試屬性是否非空
4、@Resource 寫在屬性或者是setter方法上,按照名稱注入 可以配置name="...",
如果不配置則提取 setter方法名,該bean必須存在。
@Resource(name="user")
private User user;
5、@Component,@Service,@Controller,@Repository 注解:
Spring 2.5 中除了提供 @Component 注釋外,還定義了幾個擁有特殊語義的注釋,它們分別是:@Repository、@Service 和 @Controller。在目前的 Spring 版本中,這 3 個注釋和 @Component 是等效的,但是從注釋類的命名上,很容易看出這 3 個注釋分別和持久層、業務層和控制層(Web 層)相對應。雖然目前這 3 個注釋和 @Component 相比沒有什么新意,但 Spring 將在以后的版本中為它們添加特殊的功能。所以,如果 Web 應用程序采用了經典的三層分層結構的話,最好在持久層、業務層和控制層分別采用 @Repository、@Service 和 @Controller 對分層中的類進行注釋,而用 @Component 對那些比較中立的類進行注釋。
6、@PostConstruct 注解,標識Bean在初始化的時候執行,
@PreDestroy 注解,表示在Bean在對象銷毀的時候執行。
@PostConstruct public void init() { } @PreDestroy public void destory() { }
7、@Scope 注解 設置作用域:
prototype,singleton 注意spring2.0后 又增加了request ,session和global session 4個作用區域