理論:第五章:Spring和SpringMVC,MyBatis以及SpringBoot的注解分別有哪些?SpringMVC的工作原理,SpringBoot框架的優(yōu)點,MyBatis框架的優(yōu)點
Spring注解:
SpringMVC注解
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項目中由控制器負責將用戶發(fā)來的URL請求轉發(fā)到對應的服務接口(service層),一般這個注解在類中,通常方法需要配合注解@RequestMapping。
@RestController:用于標注控制層組件(如struts中的action),@ResponseBody和@Controller的合集。
@RequestMapping:提供路由信息,負責URL到Controller中的具體函數的映射。
@EnableAutoConfiguration:SpringBoot自動配置(auto-configuration):嘗試根據你添加的jar依賴自動配置你的Spring應用。例如,如果你的classpath下存在HSQLDB,并且你沒有手動配置任何數據庫連接beans,那么我們將自動配置一個內存型(in-memory)數據庫”。你可以將@EnableAutoConfiguration或者@SpringBootApplication注解添加到一個@Configuration類上來選擇自動配置。如果發(fā)現(xiàn)應用了你不想要的特定自動配置類,你可以使用@EnableAutoConfiguration注解的排除屬性來禁用它們。
@ComponentScan:表示將該類自動發(fā)現(xiàn)掃描組件。個人理解相當于,如果掃描到有@Component、@Controller、@Service等這些注解的類,并注冊為Bean,可以自動收集所有的Spring組件,包括@Configuration類。我們經常使用@ComponentScan注解搜索beans,并結合@Autowired注解導入。可以自動收集所有的Spring組件,包括@Configuration類。我們經常使用@ComponentScan注解搜索beans,并結合@Autowired注解導入。如果沒有配置的話,Spring Boot會掃描啟動類所在包下以及子包下的使用了@Service,@Repository等注解的類。
@Configuration:相當于傳統(tǒng)的xml配置文件,如果有些第三方庫需要用到xml文件,建議仍然通過@Configuration類作為項目的配置主類——可以使用@ImportResource注解加載xml配置文件。
@Import:用來導入其他配置類。
@ImportResource:用來加載xml配置文件。
@Repository:使用@Repository注解可以確保DAO或者repositories提供異常轉譯,這個注解修飾的DAO或者repositories類會被ComponetScan發(fā)現(xiàn)并配置,同時也不需要為它們提供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框架的優(yōu)點:
--創(chuàng)建獨立的 Spring 應用程序 ;
--嵌入的 Tomcat 、 Jetty 或者 Undertow,無須部署 WAR 文件:
--允許通過 Maven 來根據需要獲取 starter;
--盡可能地自動配置 Spring;
--提供生產就緒型功能,如指標、健康檢查和外部配置;
--絕對沒有代碼生成,對 XML 沒有要求配置 。
MyBatis框架的優(yōu)點:
JDBC相比,減少了50%以上的代碼量,消除了JDBC大量冗余的代碼,不需要手動開關連接
很好的與各種數據庫兼容(因為MyBatis使用JDBC來連接數據庫,所以只要JDBC支持的數據庫MyBatis都支持,而JDBC提供了可擴展性,所以只要這個數據庫有針對Java的jar包就可以就可以與MyBatis兼容),開發(fā)人員不需要考慮數據庫的差異性。
提供了很多第三方插件(分頁插件 / 逆向工程)
SQL寫在XML里,從程序代碼中徹底分離,解除sql與程序代碼的耦合,便于統(tǒng)一管理和優(yōu)化,并可重用。
提供映射標簽,支持對象與數據庫的ORM字段關系映射。