網(wǎng)站建設(shè)需要會(huì)什么軟件有哪些內(nèi)容seo網(wǎng)站推廣工作內(nèi)容
一、參數(shù)綁定常用注解
-
@RequestParam
:用于將請(qǐng)求參數(shù)綁定到你的方法參數(shù)上。 -
@PathVariable
:用于將路徑變量綁定到你的方法參數(shù)上。 -
@RequestBody
:用于將請(qǐng)求主體綁定到你的方法參數(shù)上,通常用于綁定POST請(qǐng)求的JSON或XML數(shù)據(jù)。 -
@RequestHeader
:用于將請(qǐng)求頭部信息綁定到你的方法參數(shù)上。 -
@CookieValue
:用于將Cookie值綁定到你的方法參數(shù)上。
主要的區(qū)別在于:
-
綁定的位置不同:
@RequestParam
?是請(qǐng)求參數(shù),@PathVariable
?是路徑變量,@RequestBody
?是請(qǐng)求體
二、mybatis關(guān)聯(lián)查詢
1、resultType
作用:將查詢結(jié)果按照SQL列名與實(shí)體類屬性名一致性映射到實(shí)體類對(duì)象中。 場(chǎng)合:常見(jiàn)一些明細(xì)記錄的展示,比如用戶購(gòu)買商品明細(xì),將關(guān)聯(lián)查詢信息全部展示在頁(yè)面時(shí),此時(shí)可 直接使用resultType將每一條記錄映射到實(shí)體類中,在前端頁(yè)面遍歷list(list中是實(shí)體類)即可。
2、resultMap
使用association和collection完成一對(duì)一和一對(duì)多高級(jí)映射(對(duì)結(jié)果有特殊的映射要求)。
3、association
作用:將關(guān)聯(lián)查詢信息映射到一個(gè)實(shí)體類對(duì)象中。 場(chǎng)合:為了方便查詢關(guān)聯(lián)信息可以使用association將關(guān)聯(lián)信息映射為當(dāng)前對(duì)象的一個(gè)屬性,比如:查詢 訂單以及關(guān)聯(lián)用戶信息。
4、collection
作用:將關(guān)聯(lián)查詢信息映射到一個(gè)list集合中。 場(chǎng)合:為了方便查詢遍歷關(guān)聯(lián)信息可以使用collection將關(guān)聯(lián)信息映射到list集合中,比如:查詢用戶權(quán) 限范圍模塊及模塊下的菜單,可使用collection將模塊映射到模塊list中,將菜單列表映射到模塊對(duì)象的 菜單list屬性中,這樣的作的目的也是方便對(duì)查詢結(jié)果集進(jìn)行遍歷查詢。如果使用resultType無(wú)法將查詢 結(jié)果映射到list集合中。
5、resultMap的繼承
resultMap標(biāo)簽可以通過(guò)extends屬性來(lái)繼承一個(gè)已有的或公共的resultMap,避免重復(fù)配置的出現(xiàn),減 少配置量。
<!-- 父resultMap標(biāo)簽-->
<resultMap id="baseResultMap" type="com.gs.entity.Orders"><id column="id" property="id"/><result column="order_number" property="orderNumber"/><result column="total_price" property="totalPrice"/><result column="status" property="status"/><result column="user_id" property="userId"/>
</resultMap>
<!-- 繼承父resultMap標(biāo)簽中的配置,避免重復(fù)配置 -->
<resultMap id="subResultMap" type="com.gs.entity.Orders"
extends="baseResultMap"><association property="users" javaType="com.gs.entity.Users"><id column="id" property="id"/><result column="username" property="username"/><result column="password" property="password"/><result column="realname" property="realname"/></association>
</resultMap>
三、Bean對(duì)象生命周期(后續(xù)需詳細(xì)補(bǔ)充)
-
實(shí)例化(Instantiation): Spring容器通過(guò)反射或者工廠方法創(chuàng)建Bean的實(shí)例。
-
屬性賦值(Populate Properties): 為Bean的屬性設(shè)置值和對(duì)其他Bean的引用。
-
初始化(Initialization): 如果Bean實(shí)現(xiàn)了BeanNameAware, BeanFactoryAware, ApplicationContextAware等接口,會(huì)調(diào)用對(duì)應(yīng)的方法。然后,如果BeanPostProcessor被注冊(cè),相應(yīng)的postProcessBeforeInitialization()方法會(huì)被調(diào)用。最后,如果Bean實(shí)現(xiàn)了InitializingBean接口,其afterPropertiesSet()方法會(huì)被調(diào)用;或者,如果Bean使用init-method屬性聲明了初始化方法,這個(gè)方法也會(huì)被調(diào)用。
-
使用(In use by application): Bean現(xiàn)在可以被應(yīng)用程序使用了。
-
銷毀(Destruction): 當(dāng)容器關(guān)閉時(shí),如果Bean實(shí)現(xiàn)了DisposableBean接口,其destroy()方法會(huì)被調(diào)用;或者,如果Bean使用destroy-method屬性聲明了銷毀方法,這個(gè)方法也會(huì)被調(diào)用。
四、spring boot自動(dòng)裝配(后續(xù)需詳細(xì)補(bǔ)充)
(一)、核心注解
1.??@SpringBootApplication?:這是一個(gè)組合注解,包含了 ?@Configuration?、?@EnableAutoConfiguration? 和 ?@ComponentScan?。其中 ?@EnableAutoConfiguration? 是實(shí)現(xiàn)自動(dòng)裝配的關(guān)鍵注解。
springboot是一個(gè)腳手架工具,約定大于配置。我們只需要按照springboot的規(guī)范來(lái)開(kāi)發(fā),就能減少很多配置,當(dāng)需要開(kāi)發(fā)web項(xiàng)目的時(shí)候
@SpringBootApplication(有三個(gè)子注解,分比為1、2、3)
? ? ? ? 1:@SpringBootConfiguration ? ?(有一個(gè)子注解:Configuaration)
? ? ? ? ? ? ? ? 1.1:@Configuaration ? ?(有一個(gè)子注解:Component)
? ? ? ? ? ? ? ? ? ? ? ? 1.1.1:@Component (作用:就是啟動(dòng)類聲明為bean)
? ? ? ? 2:@EnableAutoConfiguration ? ?(開(kāi)啟自動(dòng)注入:有兩個(gè)子注解)
? ? ? ? ? ? ? ? 2.1:@AutoConfigurationPackage ?(自動(dòng)配置包:有一個(gè)子注解,import)
? ? ? ? ? ? ? ? ? ? ? ? 2.1.1:@Import({Registrar.class}) ? ? ?(沒(méi)有子注解)
? ? ? ? ? ? ? ? 2.2:@Import({AutoConfigurationImportSelector.class}) ? ?(沒(méi)有子注解)
? ? ? ? 3:@ComponentScan ?(組件掃描:沒(méi)有子注解,作用:包掃描項(xiàng)目包路徑)
在這三個(gè)注解中,第一和第三都沒(méi)有太大的意思,所以我們主要看第二個(gè)注解就好了。在第二個(gè)注解中使用了兩個(gè)@import注解。就是這兩個(gè)注解解釋了自動(dòng)裝配的含義
(二)、自動(dòng)配置類
Spring Boot 在啟動(dòng)時(shí)會(huì)掃描類路徑下的 ?META-INF/spring.factories? 文件,這個(gè)文件中定義了大量的自動(dòng)配置類。自動(dòng)配置類通常以 ?XXXAutoConfiguration? 的形式命名。
例如,當(dāng)引入了 Spring Boot Web 模塊依賴時(shí),會(huì)自動(dòng)加載 ?SpringWebMvcAutoConfiguration? 自動(dòng)配置類,它會(huì)根據(jù)類路徑下是否存在相關(guān)的類(如 ?DispatcherServlet?)來(lái)決定是否進(jìn)行 Web 相關(guān)的配置,如配置視圖解析器、靜態(tài)資源處理等。
三、條件裝配
自動(dòng)配置類通常使用 ?@Conditional? 注解來(lái)進(jìn)行條件裝配。這些條件可以基于類路徑上是否存在特定的類、系統(tǒng)屬性是否滿足特定條件等。
例如,?@ConditionalOnClass? 注解表示只有當(dāng)類路徑上存在特定的類時(shí)才會(huì)進(jìn)行自動(dòng)配置。
四、導(dǎo)入其他配置
自動(dòng)配置類還可以通過(guò) ?@Import? 注解導(dǎo)入其他配置類或組件,進(jìn)一步擴(kuò)展自動(dòng)裝配的功能。
總之,Spring Boot 的自動(dòng)裝配原理是通過(guò)掃描特定的配置文件,加載自動(dòng)配置類,并根據(jù)條件進(jìn)行裝配,從而實(shí)現(xiàn)了快速、便捷的開(kāi)發(fā)體驗(yàn),減少了大量的手動(dòng)配置工作。