Spring註解:
聲明bean的註解 | |
@Component | 組件,沒有明確的角色 |
@Service | 在業務邏輯層使用(service層) |
@Repository | 在數據訪問層使用(dao層) |
@Controller | 在展現層使用,控制器的聲明(C) |
注入bean的註解 | |
@Autowired | 由Spring提供 |
@Resource | 由JSR-250提供 |
java配置類相關注解 | |
@Bean | 註解在方法上,聲明當前方法的返回值爲一個bean,替代xml中的方式(方法上) |
@Configuration | 聲明當前類爲配置類,其中內部組合了@Component註解,表明這個類是一個bean(類上) |
@ComponentScan | 用於對Component進行掃描,相當於xml中的(類上) |
切面(AOP)相關注解 | |
@Aspect | 聲明一個切面(類上) 使用@After、@Before、@Around定義建言(advice),可直接將攔截規則(切點)作爲參數。 |
@After | 在方法執行之後執行(方法上) @Before 在方法執行之前執行(方法上) @Around 在方法執行之前與之後執行(方法上) |
@PointCut | 聲明切點 在java配置類中使用@EnableAspectJAutoProxy註解開啓Spring對AspectJ代理的支持(類上) |
@Value註解 | |
@Value 爲屬性注入值 | 注入操作系統屬性@Value("#{systemProperties['os.name']}")String osName; 注入表達式結果@Value("#{ T(java.lang.Math).random() * 100 }") String randomNumber; 注入其它bean屬性@Value("#{domeClass.name}")String name; 注入文件資源@Value("classpath:com/hgs/hello/test.txt")String Resource file; 注入網站資源@Value("http://www.cznovel.com")Resource url; 注入配置文件Value("${book.name}")String bookName; |
異步相關 | |
@EnableAsync | 配置類中,通過此註解開啓對異步任務的支持,敘事性AsyncConfigurer接口(類上) |
@Async | 在實際執行的bean方法使用該註解來申明其是一個異步任務(方法上或類上所有的方法都將異步,需要@EnableAsync開啓異步任務) |
定時任務相關 | |
@EnableScheduling | 在配置類上使用,開啓計劃任務的支持(類上) |
@Scheduled | 來申明這是一個任務,包括cron,fixDelay,fixRate等類型(方法上,需先開啓計劃任務的支持) |
SpringMVC註解
@EnableWebMvc | 在配置類中開啓Web MVC的配置支持,如一些ViewResolver或者MessageConverter等,若無此句,重寫WebMvcConfigurerAdapter方法(用於對SpringMVC的配置)。 |
@Controller | 聲明該類爲SpringMVC中的Controller |
@RequestMapping | 用於映射Web請求,包括訪問路徑和參數(類或方法上) |
@ResponseBody | 支持將返回值放在response內,而不是一個頁面,通常用戶返回json數據(返回值旁或方法上) |
@RequestBody | 允許request的參數在request體中,而不是在直接連接在地址後面。(放在參數前) |
@PathVariable | 用於接收路徑參數,比如@RequestMapping(“/hello/{name}”)申明的路徑,將註解放在參數中前,即可獲取該值,通常作爲Restful的接口實現方法。 |
@RestController | 該註解爲一個組合註解,相當於@Controller和@ResponseBody的組合,註解在類上,意味着,該Controller的所有方法都默認加上了@ResponseBody。 |
@ControllerAdvice | 通過該註解,我們可以將對於控制器的全局配置放置在同一個位置,註解了@Controller的類的方法可使用@ExceptionHandler、@InitBinder、@ModelAttribute註解到方法上, 這對所有註解了 @RequestMapping的控制器內的方法有效。 |
@ExceptionHandler | 用於全局處理控制器裏的異常 |
@InitBinder | 用來設置WebDataBinder,WebDataBinder用來自動綁定前臺請求參數到Model中。 |
@ModelAttribute | 本來的作用是綁定鍵值對到Model裏,在@ControllerAdvice中是讓全局的@RequestMapping都能獲得在此處設置的鍵值對。 |
Mybatis註解:(偷個懶,不使用表格了,嘻嘻)
-
增刪改查:@Insert、@Update、@Delete、@Select、@MapKey、@Options、@SelelctKey、@Param、@InsertProvider、@UpdateProvider、@DeleteProvider、@SelectProvider
-
結果集映射:@Results、@Result、@ResultMap、@ResultType、@ConstructorArgs、@Arg、@One、@Many、@TypeDiscriminator、@Case
-
緩存:@CacheNamespace、@Property、@CacheNamespaceRef、@Flush
SpringBoot註解:
- @SpringBootApplication:申明讓spring boot自動給程序進行必要的配置,這個配置等同於:
- @Configuration ,@EnableAutoConfiguration 和 @ComponentScan 三個配置。
- @ResponseBody:表示該方法的返回結果直接寫入HTTP response body中,一般在異步獲取數據時使用,用於構建RESTful的api。在使用@RequestMapping後,返回值通常解析爲跳轉路徑,加上@esponsebody後返回結果不會被解析爲跳轉路徑,而是直接寫入HTTP response body中。比如異步獲取json數據,加上@Responsebody後,會直接返回json數據。該註解一般會配合@RequestMapping一起使用。
- @Controller:用於定義控制器類,在spring項目中由控制器負責將用戶發來的URL請求轉發到對應的服務接口(service層),一般這個註解在類中,通常方法需要配合註解@RequestMapping。
- @RestController:用於標註控制層組件(如struts中的action),@ResponseBody和@Controller的合集。
- @RequestMapping:提供路由信息,負責URL到Controller中的具體函數的映射。
- @EnableAutoConfiguration:SpringBoot自動配置(auto-configuration):嘗試根據你添加的jar依賴自動配置你的Spring應用。例如,如果你的classpath下存在HSQLDB,並且你沒有手動配置任何數據庫連接beans,那麼我們將自動配置一個內存型(in-memory)數據庫”。你可以將@EnableAutoConfiguration或者@SpringBootApplication註解添加到一個@Configuration類上來選擇自動配置。如果發現應用了你不想要的特定自動配置類,你可以使用@EnableAutoConfiguration註解的排除屬性來禁用它們。
- @ComponentScan:表示將該類自動發現掃描組件。個人理解相當於,如果掃描到有@Component、@Controller、@Service等這些註解的類,並註冊爲Bean,可以自動收集所有的Spring組件,包括@Configuration類。我們經常使用@ComponentScan註解搜索beans,並結合@Autowired註解導入。可以自動收集所有的Spring組件,包括@Configuration類。我們經常使用@ComponentScan註解搜索beans,並結合@Autowired註解導入。如果沒有配置的話,Spring Boot會掃描啓動類所在包下以及子包下的使用了@Service,@Repository等註解的類。
- @Configuration:相當於傳統的xml配置文件,如果有些第三方庫需要用到xml文件,建議仍然通過@Configuration類作爲項目的配置主類——可以使用@ImportResource註解加載xml配置文件。
- @Import:用來導入其他配置類。
- @ImportResource:用來加載xml配置文件。
- @Repository:使用@Repository註解可以確保DAO或者repositories提供異常轉譯,這個註解修飾的DAO或者repositories類會被ComponetScan發現並配置,同時也不需要爲它們提供XML配置項。
- @Bean:用@Bean標註方法等價於XML中配置的bean
- @AutoWired:自動導入依賴的bean。byType方式。把配置好的Bean拿來用,完成屬性、方法的組裝,它可以對類成員變量、方法及構造函數進行標註,完成自動裝配的工作。當加上(required=false)時,就算找不到bean也不報錯。
- @Qualifier:當有多個同一類型的Bean時,可以用@Qualifier(“name”)來指定。與@Autowired配合使用。@Qualifier限定描述符除了能根據名字進行注入,但能進行更細粒度的控制如何選擇候選者,具體使用方式如下:
- @Resource(name=”name”,type=”type”):沒有括號內內容的話,默認byName。與@Autowired幹類似的事。
SpringMVC的工作原理:
SpringBoot框架的優點:
- --創建獨立的 Spring 應用程序 ;
- --嵌入的 Tomcat 、 Jetty 或者 Undertow,無須部署 WAR 文件:
- --允許通過 Maven 來根據需要獲取 starter;
- --儘可能地自動配置 Spring;
- --提供生產就緒型功能,如指標、健康檢查和外部配置;
- --絕對沒有代碼生成,對 XML 沒有要求配置 。
MyBatis框架的優點:
- JDBC相比,減少了50%以上的代碼量,消除了JDBC大量冗餘的代碼,不需要手動開關連接
- 很好的與各種數據庫兼容(因爲MyBatis使用JDBC來連接數據庫,所以只要JDBC支持的數據庫MyBatis都支持,而JDBC提供了可擴展性,所以只要這個數據庫有針對Java的jar包就可以就可以與MyBatis兼容),開發人員不需要考慮數據庫的差異性。
- 提供了很多第三方插件(分頁插件 / 逆向工程)
- SQL寫在XML裏,從程序代碼中徹底分離,解除sql與程序代碼的耦合,便於統一管理和優化,並可重用。
- 提供映射標籤,支持對象與數據庫的ORM字段關係映射。