一.注解:
注解分為兩類,一種是使用bean的(@Autowired , @Resource),一種是注冊bean的(@Component , @Repository , @ Controller , @Service , @Configration)
1.@Bean注解
@Bean 標識一個用於配置和初始化一個由SpringIoc容器管理的新對象的方法,類似於XML配置文件的<bean/>,一般與@Configration注解配合使用
注冊bean
2.@Service注解
首先,在配置root-config.xml文件中加一行:
加上這一行以后,將自動掃描路徑下面的包,如果一個類帶了@Service注解,將自動注冊到Spring容器,不需要再在applicationContext.xml文件定義bean了
類似作用的還包括@Component、@Repository、@Controller:
3.@Component注解
把普通pojo實例化到spring容器中,相當於配置文件中的
<bean id="" class=""/>泛指各種組件,就是說當我們的類不屬於各種歸類的時候(不屬於@Controller、@Services等的時候),我們就可以使用@Component來標注這個類
4.@Repository注解
用於標注數據訪問組件,即DAO組件,再稍微大點的項目里,使用xml的bean定義來配置會大大增加代碼體積且不易維護,所以引入了自動掃描的機制,它的作用和在xml文件中使用bean節點配置組件時一樣的。
5.@Controller注解
當組件屬於控制層時,則使用@Controller注解
被Controller標記的類就是一個控制器,這個類中的方法,就是相應的動作
6.@Configration注解
@Configuration用於定義配置類,可替換xml配置文件,被注解的類內部包含有一個或多個被@Bean注解的方法,這些方法將會被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext類進行掃描,並用於構建bean定義,初始化Spring容器
需要注意的是:
@Configuration不可以是final類型;
@Configuration不可以是匿名類;
嵌套的configuration必須是靜態類。
Bean注解主要用於方法上,有點類似於工廠方法,當使用了@Bean注解,我們可以連續使用多種定義bean時用到的注解,譬如用@Qualifier注解定義工廠方法的名稱,用@Scope注解定義該bean的作用域范圍,譬如是singleton還是prototype等。
使用bean
7.@Autowired 注解
它可以對類成員變量、方法及構造函數進行標注,完成自動裝配的工作。 通過 @Autowired的使用來消除 set ,get方法。
@Autowired注解可用於為類的屬性、構造器、方法進行注值。默認情況下,其依賴的對象必須存在(bean可用)如果容器中包含多個同一類型的Bean,那么啟動容器時會報找不到指定類型bean的異常,解決辦法是結合@Qualifier注解進行限定,指定注入的bean名稱
8.@Resource注解
@Resource和@Autowired注解都是用來實現依賴注入的。只是@Autowired按byType自動注入,而@Resource默認按 byName自動注入
@Resource依賴注入時查找bean的規則
既不指定name屬性,也不指定type屬性,則自動按byName方式進行查找。如果沒有找到符合的bean,則回退為一個原始類型進行進行查找,如果找到就注入。
只是指定了@Resource注解的name,則按name后的名字去bean元素里查找有與之相等的name屬性的bean。
只指定@Resource注解的type屬性,則從上下文中找到類型匹配的唯一bean進行裝配,找不到或者找到多個,都會拋出異常
既指定了@Resource的name屬性又指定了type,則從Spring上下文中找到唯一匹配的bean進行裝配,找不到則拋出異常
除此之外還有很多注解
9.@Override注解
標示當前的方法定義將覆蓋超類中的方法他告訴我們同時也告訴編譯器我們的這些方法肯定覆蓋了類**里面的方法,如果注釋掉類**里面的方法 那么就會報錯,它需要全部覆蓋某個接口的方法。
10.@ComponentScan注解
@ComponentScan告訴Spring 哪個packages 的用注解標識的類 會被spring自動掃描並且裝入bean容器。
例如,如果你有個類用@Controller注解標識了,那么,如果不加上@ComponentScan,自動掃描該controller,那么該Controller就不會被spring掃描到,更不會裝入spring容器中,因此你配置的這個Controller也沒有意義。
11.@PropertySouce注解
通過@PropertySource注解將properties配置文件中的值存儲到Spring的 Environment中,Environment接口提供方法去讀取配置文件中的值,參數是properties文件中定義的key值。
12.@ImportResource注解和@Import注解
@Import注解是引入帶有@Configuration的java類。
@ImportResource是引入spring配置文件.xml
13.@RequestMapping
是一個用來處理請求地址映射的注解,可用於類或方法上。用於類上,表示類中的所有響應請求的方法都是以該地址作為父路徑。
14.@responseBody注解
@responseBody注解的作用是將controller的方法返回的對象通過適當的轉換器轉換為指定的格式之后,寫入到response對象的body區,通常用來返回JSON數據或者是XML數據
---------------------
版權聲明:本文為CSDN博主「雲 」的原創文章,遵循CC 4.0 by-sa版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_42106981/article/details/82839156