springboot註解總結

@SpringBootApplication = (默認屬性)@Configuration + @EnableAutoConfiguration + @ComponentScan。mysql

@Configuration:提到@Configuration就要提到他的搭檔@Bean。使用這兩個註解就能夠建立一個簡單的spring配置類,能夠用來替代相應的xml配置文件。linux

@EnableAutoConfiguration:可以自動配置spring的上下文,試圖猜想和配置你想要的bean類,一般會自動根據你的類路徑和你的bean定義自動配置web

@AutoConfigureAfter:在指定的配置類初始化後再加載 
@AutoConfigureBefore:在指定的配置類初始化前加載 
@AutoConfigureOrder:數越小越先初始化

@ComponentScan:會自動掃描指定包下的所有標有@Component的類,並註冊成bean,固然包括@Component下的子註解@Service,@Repository,@Controller。spring

@Entity 對實體註釋。任何Hibernate映射對象都要有這個註釋sql

@Table聲明此對象映射到數據庫的數據表,經過它能夠爲實體指定表(table),目錄(Catalog)和schema的名字。該註釋不是必須的,若是沒有則系統使用默認值(實體的短類名)。數據庫

@EnableScheduling開啓計劃任務json

1@Scheduled:聲明該方法是一個計劃任務,fixedRate屬性設置每隔固定時間執行
2cron屬性:按照指定時間執行(11時28)cron事unix和類unix(linux)系統下的定時時間

@WebServlet,在 SpringBootApplication 上使用@ServletComponentScan 註解後,Servlet、Filter、Listener 能夠直接經過 @WebServlet、@WebFilter、@WebListener 註解自動註冊,無需其餘代碼。mvc

@Transactionalapp

解決Transactional註解不回滾:
1. 檢查你方法是否是public的。
2. 你的異常類型是否是unchecked異常。@Transactional(rollbackFor=Exception.class)
相似的還有norollbackFor,自定義不回滾的異常。
3. 數據庫引擎要支持事務,若是是mysql,注意表要使用支持事務的引擎,好比innodb,若是是myisam,事務是不起做用的。
4. 是否開啓了對註解的解析
<tx:annotation-driven transaction-manager="transactionManager" proxy-target class="true"/>
5. spring是否掃描到你這個包,以下是掃描到org.test下面的包<context:component-scan base-package="org.test" ></context:component-scan>

@Controller 用來響應頁面,@Controller必須配合模版來使用。異步

@RestController Spring4以後新加入的註解,原來返回json須要@ResponseBody和@Controller配合。

@RequestBody 將接收的json數據裝載到實體類中。

@RequestMapping 配置url映射

@PathVaribale 獲取url中的數據

@RequestParam 獲取請求參數的值

@RequestBody 用於接收實體類

@RequestAttribute 用於接收,被攔截後設置的屬性

@GetMapping 組合註解

@PostConstruct與@PreDestroy詳解及實例

@PostConstruct註釋的方法,會在構造方法以後,init方法以前進行調用。
只有一個方法可使用此註釋進行註解;
被註解方法不得有任何參數;
被註解方法返回值爲void;
被註解方法不得拋出已檢查異常;
被註解方法需是非靜態方法;
此方法只會被執行一次;
PreDestroy 註釋做爲回調通知用於各方法,以表示該實例正處於被容器移除的過程當中。用 PreDestroy 註釋的方法一般用於釋放它已持有的資源。

@PropertySource 註解能夠從properties文件中,獲取對應的key-value值,將其賦予變量;

@ConfigurationProperties的大體做用就是經過它能夠把properties或者yml配置直接轉成對象。

@RunWith:這個是指定使用的單元測試執行類,這裏就指定的是SpringJUnit4ClassRunner.class;

@webservice:

類上加上@WebService註解
@WebMethod註解聲明瞭這個方法是要發佈出去的方法

@Resource 默認是按照名稱來裝配注入的,只有當找不到與名稱匹配的bean纔會按照類型來注入。它有兩個屬性是比較重要的:

①. name: Spring 將 name 的屬性值解析爲 bean 的名稱, 使用 byName 的自動注入策略
②. type: Spring 將 type的屬性值解析爲 bean 的類型,使用 byType 的自動注入策略
注: 若是既不指定 name 屬性又不指定 type 屬性,Spring這時經過反射機制使用 byName 自動注入策略
@Resource 的裝配順序
  1. 若是同時指定了 name 屬性和 type 屬性,那麼 Spring 將從容器中找惟一匹配的 bean 進行裝配,找不到則拋出異常
    2. 若是指定了 name 屬性值,則從容器中查找名稱匹配的 bean 進行裝配,找不到則拋出異常
    3. 若是指定了 type 屬性值,則從容器中查找類型匹配的惟一的 bean 進行裝配,找不到或者找到多個都會拋出異常
    4. 若是都不指定,則會自動按照 byName 方式進行裝配, 若是沒有匹配,則回退一個原始類型進行匹配,若是匹配則自動裝配

@Autowried 默認是按照類型進行裝配注入,默認狀況下,它要求依賴對象必須存在,若是容許 null 值,能夠設置它 required 爲false。
  若是咱們想要按名稱進行裝配的話,能夠添加一個 @Qualifier 註解解決。

demo
@Autowried
@Qualifier("adminDAO")
private AdminDAO adminDAO;

@Async和@EnableAsync爲異步註解,放到方法上,表示調用該方法的線程與此方法異步執行,須要配合註解使用。@EnableAsync放在啓動類上,Async放在方法上。

@JsonInclude(Include.NON_NULL) 是springmvc中的標註,是爲了控制返回的json字符串顯示哪些字段。這裏的設置是爲null的字段不顯示

@ConfigurationProperties(prefix = "sso") 能夠在實體類中將properties文件的值注入到屬性中。

相關文章
相關標籤/搜索