理論:第五章:Spring和SpringMVC,MyBatis以及SpringBoot的注解分別有哪些?SpringMVC的工作原理,SpringBoot框架的優(yōu)點(diǎn),MyBatis框架的優(yōu)點(diǎn)
Spring注解:
SpringMVC注解
Mybatis注解:(偷個(gè)懶,不使用表格了,嘻嘻)
增刪改查:@Insert、@Update、@Delete、@Select、@MapKey、@Options、@SelelctKey、@Param、@InsertProvider、@UpdateProvider、@DeleteProvider、@SelectProvider
結(jié)果集映射:@Results、@Result、@ResultMap、@ResultType、@ConstructorArgs、@Arg、@One、@Many、@TypeDiscriminator、@Case
緩存:@CacheNamespace、@Property、@CacheNamespaceRef、@Flush
SpringBoot注解:
@SpringBootApplication:申明讓spring boot自動(dòng)給程序進(jìn)行必要的配置,這個(gè)配置等同于:
@Configuration ,@EnableAutoConfiguration 和 @ComponentScan 三個(gè)配置。
@ResponseBody:表示該方法的返回結(jié)果直接寫入HTTP response body中,一般在異步獲取數(shù)據(jù)時(shí)使用,用于構(gòu)建RESTful的api。在使用@RequestMapping后,返回值通常解析為跳轉(zhuǎn)路徑,加上@esponsebody后返回結(jié)果不會(huì)被解析為跳轉(zhuǎn)路徑,而是直接寫入HTTP response body中。比如異步獲取json數(shù)據(jù),加上@Responsebody后,會(huì)直接返回json數(shù)據(jù)。該注解一般會(huì)配合@RequestMapping一起使用。
@Controller:用于定義控制器類,在spring項(xiàng)目中由控制器負(fù)責(zé)將用戶發(fā)來的URL請(qǐng)求轉(zhuǎn)發(fā)到對(duì)應(yīng)的服務(wù)接口(service層),一般這個(gè)注解在類中,通常方法需要配合注解@RequestMapping。
@RestController:用于標(biāo)注控制層組件(如struts中的action),@ResponseBody和@Controller的合集。
@RequestMapping:提供路由信息,負(fù)責(zé)URL到Controller中的具體函數(shù)的映射。
@EnableAutoConfiguration:SpringBoot自動(dòng)配置(auto-configuration):嘗試根據(jù)你添加的jar依賴自動(dòng)配置你的Spring應(yīng)用。例如,如果你的classpath下存在HSQLDB,并且你沒有手動(dòng)配置任何數(shù)據(jù)庫(kù)連接beans,那么我們將自動(dòng)配置一個(gè)內(nèi)存型(in-memory)數(shù)據(jù)庫(kù)”。你可以將@EnableAutoConfiguration或者@SpringBootApplication注解添加到一個(gè)@Configuration類上來選擇自動(dòng)配置。如果發(fā)現(xiàn)應(yīng)用了你不想要的特定自動(dòng)配置類,你可以使用@EnableAutoConfiguration注解的排除屬性來禁用它們。
@ComponentScan:表示將該類自動(dòng)發(fā)現(xiàn)掃描組件。個(gè)人理解相當(dāng)于,如果掃描到有@Component、@Controller、@Service等這些注解的類,并注冊(cè)為Bean,可以自動(dòng)收集所有的Spring組件,包括@Configuration類。我們經(jīng)常使用@ComponentScan注解搜索beans,并結(jié)合@Autowired注解導(dǎo)入。可以自動(dòng)收集所有的Spring組件,包括@Configuration類。我們經(jīng)常使用@ComponentScan注解搜索beans,并結(jié)合@Autowired注解導(dǎo)入。如果沒有配置的話,Spring Boot會(huì)掃描啟動(dòng)類所在包下以及子包下的使用了@Service,@Repository等注解的類。
@Configuration:相當(dāng)于傳統(tǒng)的xml配置文件,如果有些第三方庫(kù)需要用到xml文件,建議仍然通過@Configuration類作為項(xiàng)目的配置主類——可以使用@ImportResource注解加載xml配置文件。
@Import:用來導(dǎo)入其他配置類。
@ImportResource:用來加載xml配置文件。
@Repository:使用@Repository注解可以確保DAO或者repositories提供異常轉(zhuǎn)譯,這個(gè)注解修飾的DAO或者repositories類會(huì)被ComponetScan發(fā)現(xiàn)并配置,同時(shí)也不需要為它們提供XML配置項(xiàng)。
@Bean:用@Bean標(biāo)注方法等價(jià)于XML中配置的bean
@AutoWired:自動(dòng)導(dǎo)入依賴的bean。byType方式。把配置好的Bean拿來用,完成屬性、方法的組裝,它可以對(duì)類成員變量、方法及構(gòu)造函數(shù)進(jìn)行標(biāo)注,完成自動(dòng)裝配的工作。當(dāng)加上(required=false)時(shí),就算找不到bean也不報(bào)錯(cuò)。
@Qualifier:當(dāng)有多個(gè)同一類型的Bean時(shí),可以用@Qualifier(“name”)來指定。與@Autowired配合使用。@Qualifier限定描述符除了能根據(jù)名字進(jìn)行注入,但能進(jìn)行更細(xì)粒度的控制如何選擇候選者,具體使用方式如下:
@Resource(name=”name”,type=”type”):沒有括號(hào)內(nèi)內(nèi)容的話,默認(rèn)byName。與@Autowired干類似的事。
SpringMVC的工作原理:
SpringBoot框架的優(yōu)點(diǎn):
--創(chuàng)建獨(dú)立的 Spring 應(yīng)用程序 ;
--嵌入的 Tomcat 、 Jetty 或者 Undertow,無須部署 WAR 文件:
--允許通過 Maven 來根據(jù)需要獲取 starter;
--盡可能地自動(dòng)配置 Spring;
--提供生產(chǎn)就緒型功能,如指標(biāo)、健康檢查和外部配置;
--絕對(duì)沒有代碼生成,對(duì) XML 沒有要求配置 。
MyBatis框架的優(yōu)點(diǎn):
JDBC相比,減少了50%以上的代碼量,消除了JDBC大量冗余的代碼,不需要手動(dòng)開關(guān)連接
很好的與各種數(shù)據(jù)庫(kù)兼容(因?yàn)镸yBatis使用JDBC來連接數(shù)據(jù)庫(kù),所以只要JDBC支持的數(shù)據(jù)庫(kù)MyBatis都支持,而JDBC提供了可擴(kuò)展性,所以只要這個(gè)數(shù)據(jù)庫(kù)有針對(duì)Java的jar包就可以就可以與MyBatis兼容),開發(fā)人員不需要考慮數(shù)據(jù)庫(kù)的差異性。
提供了很多第三方插件(分頁(yè)插件 / 逆向工程)
SQL寫在XML里,從程序代碼中徹底分離,解除sql與程序代碼的耦合,便于統(tǒng)一管理和優(yōu)化,并可重用。
提供映射標(biāo)簽,支持對(duì)象與數(shù)據(jù)庫(kù)的ORM字段關(guān)系映射。