Spring和SpringMVC,MyBatis以及SpringBoot的註解分別有哪些?SpringMVC的工作原理,SpringBoot框架的優點,MyBatis框架的優點

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字段關係映射。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章