国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

SpringBoot注解大全

共 21558字,需瀏覽 44分鐘

 ·

2021-03-05 12:31

點(diǎn)擊上方藍(lán)色字體,選擇“標(biāo)星公眾號(hào)”

優(yōu)質(zhì)文章,第一時(shí)間送達(dá)

  作者 |  白色程序猿

來(lái)源 |  urlify.cn/bUnQNf

76套java從入門(mén)到精通實(shí)戰(zhàn)課程分享

一、注解(annotations)列表

@SpringBootApplication:包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。其中@ComponentScan讓spring Boot掃描到Configuration類(lèi)并把它加入到程序上下文。

@Configuration 等同于spring的XML配置文件;使用Java代碼可以檢查類(lèi)型安全。

@EnableAutoConfiguration 自動(dòng)配置。

@ComponentScan 組件掃描,可自動(dòng)發(fā)現(xiàn)和裝配一些Bean。

@Component可配合CommandLineRunner使用,在程序啟動(dòng)后執(zhí)行一些基礎(chǔ)任務(wù)。

@RestController注解是@Controller和@ResponseBody的合集,表示這是個(gè)控制器bean,并且是將函數(shù)的返回值直 接填入HTTP響應(yīng)體中,是REST風(fēng)格的控制器。

@Autowired自動(dòng)導(dǎo)入。

@PathVariable獲取參數(shù)。

@JsonBackReference解決嵌套外鏈問(wèn)題。

@RepositoryRestResourcepublic配合spring-boot-starter-data-rest使用。

二、注解(annotations)詳解

@SpringBootApplication:申明讓spring boot自動(dòng)給程序進(jìn)行必要的配置,這個(gè)配置等同于:@Configuration ,@EnableAutoConfiguration 和 @ComponentScan 三個(gè)配置。

package com.example.myproject;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication // same as @Configuration @EnableAutoConfiguration @ComponentScan
public class Application {
   public static void main(String[] args) {
     SpringApplication.run(Application.class, args);
   }
}

@ResponseBody:表示該方法的返回結(jié)果直接寫(xiě)入HTTP response body中,一般在異步獲取數(shù)據(jù)時(shí)使用,用于構(gòu)建RESTful的api。在使用@RequestMapping后,返回值通常解析為跳轉(zhuǎn)路徑,加上@Responsebody后返回結(jié)果不會(huì)被解析為跳轉(zhuǎn)路徑,而是直接寫(xiě)入HTTP response body中。比如異步獲取json數(shù)據(jù),加上@Responsebody后,會(huì)直接返回json數(shù)據(jù)。該注解一般會(huì)配合@RequestMapping一起使用。示例代碼:

  1 @RequestMapping(“/test”)
  2 @ResponseBody
  3 public String test(){
  4    return”ok”;
  5 }

@Controller:用于定義控制器類(lèi),在spring項(xiàng)目中由控制器負(fù)責(zé)將用戶發(fā)來(lái)的URL請(qǐng)求轉(zhuǎn)發(fā)到對(duì)應(yīng)的服務(wù)接口(service層),一般這個(gè)注解在類(lèi)中,通常方法需要配合注解@RequestMapping。示例代碼:

 @Controller
@RequestMapping(“/demoInfo”)
public class DemoController {
@Autowired
private DemoInfoService demoInfoService;

@RequestMapping("/hello")
public String hello(Map<String,Object> map){
   System.out.println("DemoController.hello()");
   map.put("hello","from TemplateController.helloHtml");
   //會(huì)使用hello.html或者h(yuǎn)ello.ftl模板進(jìn)行渲染顯示.
   return"/hello";
}
}

@RestController:用于標(biāo)注控制層組件(如struts中的action),@ResponseBody和@Controller的合集。示例代碼:

 package com.kfit.demo.web;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


@RestController
@RequestMapping(“/demoInfo2”)
publicclass DemoController2 {

@RequestMapping("/test")
public String test(){
   return "ok";
}
}

@RequestMapping:提供路由信息,負(fù)責(zé)URL到Controller中的具體函數(shù)的映射。

@EnableAutoConfiguration:SpringBoot自動(dòng)配置(auto-configuration):嘗試根據(jù)你添加的jar依賴(lài)自動(dòng)配置你的Spring應(yīng)用。例如,如果你的classpath下存在HSQLDB,并且你沒(méi)有手動(dòng)配置任何數(shù)據(jù)庫(kù)連接beans,那么我們將自動(dòng)配置一個(gè)內(nèi)存型(in-memory)數(shù)據(jù)庫(kù)”。你可以將@EnableAutoConfiguration或者@SpringBootApplication注解添加到一個(gè)@Configuration類(lèi)上來(lái)選擇自動(dòng)配置。如果發(fā)現(xiàn)應(yīng)用了你不想要的特定自動(dòng)配置類(lèi),你可以使用@EnableAutoConfiguration注解的排除屬性來(lái)禁用它們。

@ComponentScan:其實(shí)很簡(jiǎn)單,@ComponentScan主要就是定義掃描的路徑從中找出標(biāo)識(shí)了需要裝配的類(lèi)自動(dòng)裝配到spring的bean容器中,你一定都有用過(guò)@Controller,@Service,@Repository注解,查看其源碼你會(huì)發(fā)現(xiàn),他們中有一個(gè)共同的注解@Component,沒(méi)錯(cuò)@ComponentScan注解默認(rèn)就會(huì)裝配標(biāo)識(shí)了@Controller,@Service,@Repository,@Component注解的類(lèi)到spring容器中。當(dāng)然,這個(gè)的前提就是你需要在所掃描包下的類(lèi)上引入注解。

@Configuration:相當(dāng)于傳統(tǒng)的xml配置文件,如果有些第三方庫(kù)需要用到xml文件,建議仍然通過(guò)@Configuration類(lèi)作為項(xiàng)目的配置主類(lèi)——可以使用@ImportResource注解加載xml配置文件。

@Import:用來(lái)導(dǎo)入其他配置類(lèi)。

@ImportResource:用來(lái)加載xml配置文件。

@Autowired:自動(dòng)導(dǎo)入依賴(lài)的bean

@Service:一般用于修飾service層的組件

@Repository:使用@Repository注解可以確保DAO或者repositories提供異常轉(zhuǎn)譯,這個(gè)注解修飾的DAO或者repositories類(lèi)會(huì)被ComponetScan發(fā)現(xiàn)并配置,同時(shí)也不需要為它們提供XML配置項(xiàng)。

@Bean:用@Bean標(biāo)注方法等價(jià)于XML中配置的bean。

@Value:注入Spring boot application.properties配置的屬性的值。示例代碼:

  1 @Value(value = “#{message}”)
  2 private String message;

@Inject:等價(jià)于默認(rèn)的@Autowired,只是沒(méi)有required屬性;

@Component:泛指組件,當(dāng)組件不好歸類(lèi)的時(shí)候,我們可以使用這個(gè)注解進(jìn)行標(biāo)注。

@Bean:相當(dāng)于XML中的,放在方法的上面,而不是類(lèi),意思是產(chǎn)生一個(gè)bean,并交給spring管理。

@AutoWired:自動(dòng)導(dǎo)入依賴(lài)的bean。byType方式。把配置好的Bean拿來(lái)用,完成屬性、方法的組裝,它可以對(duì)類(lèi)成員變量、方法及構(gòu)造函數(shù)進(jìn)行標(biāo)注,完成自動(dòng)裝配的工作。當(dāng)加上(required=false)時(shí),就算找不到bean也不報(bào)錯(cuò)。

@Qualifier:當(dāng)有多個(gè)同一類(lèi)型的Bean時(shí),可以用@Qualifier(“name”)來(lái)指定。與@Autowired配合使用。@Qualifier限定描述符除了能根據(jù)名字進(jìn)行注入,但能進(jìn)行更細(xì)粒度的控制如何選擇候選者,具體使用方式如下:


  1 @Autowired
  2 @Qualifier(value = “demoInfoService”)
  3 private DemoInfoService demoInfoService;

@Resource(name=”name”,type=”type”):沒(méi)有括號(hào)內(nèi)內(nèi)容的話,默認(rèn)byName。與@Autowired干類(lèi)似的事。

三、JPA注解

@Entity:@Table(name=”“):表明這是一個(gè)實(shí)體類(lèi)。一般用于jpa這兩個(gè)注解一般一塊使用,但是如果表名和實(shí)體類(lèi)名相同的話,@Table可以省略

@MappedSuperClass:用在確定是父類(lèi)的entity上。父類(lèi)的屬性子類(lèi)可以繼承。

@NoRepositoryBean:一般用作父類(lèi)的repository,有這個(gè)注解,spring不會(huì)去實(shí)例化該repository。

@Column:如果字段名與列名相同,則可以省略。

@Id:表示該屬性為主鍵。

@GeneratedValue(strategy = GenerationType.SEQUENCE,generator = “repair_seq”):表示主鍵生成策略是sequence(可以為Auto、IDENTITY、native等,Auto表示可在多個(gè)數(shù)據(jù)庫(kù)間切換),指定sequence的名字是repair_seq。

@SequenceGeneretor(name = “repair_seq”, sequenceName = “seq_repair”, allocationSize = 1):name為sequence的名稱(chēng),以便使用,sequenceName為數(shù)據(jù)庫(kù)的sequence名稱(chēng),兩個(gè)名稱(chēng)可以一致。

@Transient:表示該屬性并非一個(gè)到數(shù)據(jù)庫(kù)表的字段的映射,ORM框架將忽略該屬性。如果一個(gè)屬性并非數(shù)據(jù)庫(kù)表的字段映射,就務(wù)必將其標(biāo)示為@Transient,否則,ORM框架默認(rèn)其注解為@Basic。@Basic(fetch=FetchType.LAZY):標(biāo)記可以指定實(shí)體屬性的加載方式

@JsonIgnore:作用是json序列化時(shí)將Java bean中的一些屬性忽略掉,序列化和反序列化都受影響。

@JoinColumn(name=”loginId”):一對(duì)一:本表中指向另一個(gè)表的外鍵。一對(duì)多:另一個(gè)表指向本表的外鍵。

@OneToOne、@OneToMany、@ManyToOne:對(duì)應(yīng)hibernate配置文件中的一對(duì)一,一對(duì)多,多對(duì)一。

四、springMVC相關(guān)注解

@RequestMapping:@RequestMapping(“/path”)表示該控制器處理所有“/path”的UR L請(qǐng)求。RequestMapping是一個(gè)用來(lái)處理請(qǐng)求地址映射的注解,可用于類(lèi)或方法上。
用于類(lèi)上,表示類(lèi)中的所有響應(yīng)請(qǐng)求的方法都是以該地址作為父路徑。該注解有六個(gè)屬性:
params:指定request中必須包含某些參數(shù)值是,才讓該方法處理。
headers:指定request中必須包含某些指定的header值,才能讓該方法處理請(qǐng)求。
value:指定請(qǐng)求的實(shí)際地址,指定的地址可以是URI Template 模式
method:指定請(qǐng)求的method類(lèi)型, GET、POST、PUT、DELETE等
consumes:指定處理請(qǐng)求的提交內(nèi)容類(lèi)型(Content-Type),如application/json,text/html;
produces:指定返回的內(nèi)容類(lèi)型,僅當(dāng)request請(qǐng)求頭中的(Accept)類(lèi)型中包含該指定類(lèi)型才返回

@RequestParam:用在方法的參數(shù)前面。
@RequestParam
String a =request.getParameter(“a”)。

@PathVariable:路徑變量。如

  1 RequestMapping(“user/get/mac/{macAddress}”)
  2 public String getByMacAddress(@PathVariable String macAddress){
  3    //do something; 
  4 }

參數(shù)與大括號(hào)里的名字一樣要相同。

五、全局異常處理

@ControllerAdvice:包含@Component。可以被掃描到。統(tǒng)一處理異常。

@ExceptionHandler(Exception.class):用在方法上面表示遇到這個(gè)異常就執(zhí)行以下方法。


六、項(xiàng)目中具體配置解析和使用環(huán)境

@MappedSuperclass:

1.@MappedSuperclass 注解使用在父類(lèi)上面,是用來(lái)標(biāo)識(shí)父類(lèi)的

2.@MappedSuperclass 標(biāo)識(shí)的類(lèi)表示其不能映射到數(shù)據(jù)庫(kù)表,因?yàn)槠洳皇且粋€(gè)完整的實(shí)體類(lèi),但是它所擁有的屬性能夠映射在其子類(lèi)對(duì)用的數(shù)據(jù)庫(kù)表中

3.@MappedSuperclass 標(biāo)識(shí)的類(lèi)不能再有@Entity或@Table注解

@Column:

1.當(dāng)實(shí)體的屬性與其映射的數(shù)據(jù)庫(kù)表的列不同名時(shí)需要使用@Column標(biāo)注說(shuō)明,該屬性通常置于實(shí)體的屬性聲明語(yǔ)句之前,還可與 @Id 標(biāo)注一起使用。

2.@Column 標(biāo)注的常用屬性是name,用于設(shè)置映射數(shù)據(jù)庫(kù)表的列名。此外,該標(biāo)注還包含其它多個(gè)屬性,如:unique、nullable、length、precision等。具體如下:

 1 name屬性:name屬性定義了被標(biāo)注字段在數(shù)據(jù)庫(kù)表中所對(duì)應(yīng)字段的名稱(chēng)
  2 unique屬性:unique屬性表示該字段是否為唯一標(biāo)識(shí),默認(rèn)為false,如果表中有一個(gè)字段需要唯一標(biāo)識(shí),則既可以使用該標(biāo)記,也可以使用@Table注解中的@UniqueConstraint
  3 nullable屬性:nullable屬性表示該字段是否可以為null值,默認(rèn)為true
  4 insertable屬性:insertable屬性表示在使用”INSERT”語(yǔ)句插入數(shù)據(jù)時(shí),是否需要插入該字段的值
  5 updateable屬性:updateable屬性表示在使用”UPDATE”語(yǔ)句插入數(shù)據(jù)時(shí),是否需要更新該字段的值
  6 insertable和updateable屬性:一般多用于只讀的屬性,例如主鍵和外鍵等,這些字段通常是自動(dòng)生成的
  7 columnDefinition屬性:columnDefinition屬性表示創(chuàng)建表時(shí),該字段創(chuàng)建的SQL語(yǔ)句,一般用于通過(guò)Entity生成表定義時(shí)使用,如果數(shù)據(jù)庫(kù)中表已經(jīng)建好,該屬性沒(méi)有必要使用
  8 table屬性:table屬性定義了包含當(dāng)前字段的表名
  9 length屬性:length屬性表示字段的長(zhǎng)度,當(dāng)字段的類(lèi)型為varchar時(shí),該屬性才有效,默認(rèn)為255個(gè)字符
 10 precision屬性和scale屬性:precision屬性和scale屬性一起表示精度,當(dāng)字段類(lèi)型為double時(shí),precision表示數(shù)值的總長(zhǎng)度,scale表示小數(shù)點(diǎn)所占的位數(shù)
    具體如下:   1.double類(lèi)型將在數(shù)據(jù)庫(kù)中映射為double類(lèi)型,precision和scale屬性無(wú)效   2.double類(lèi)型若在columnDefinition屬性中指定數(shù)字類(lèi)型為decimal并指定精度,則最終以columnDefinition為準(zhǔn)   3.BigDecimal類(lèi)型在數(shù)據(jù)庫(kù)中映射為decimal類(lèi)型,precision和scale屬性有效   4.precision和scale屬性只在BigDecimal類(lèi)型中有效

3.@Column 標(biāo)注的columnDefinition屬性: 表示該字段在數(shù)據(jù)庫(kù)中的實(shí)際類(lèi)型.通常 ORM 框架可以根據(jù)屬性類(lèi)型自動(dòng)判斷數(shù)據(jù)庫(kù)中字段的類(lèi)型,但是對(duì)于Date類(lèi)型仍無(wú)法確定數(shù)據(jù)庫(kù)中字段類(lèi)型究竟是DATE,TIME還是TIMESTAMP.此外,String的默認(rèn)映射類(lèi)型為VARCHAR,如果要將 String 類(lèi)型映射到特定數(shù)據(jù)庫(kù)的 BLOB 或TEXT字段類(lèi)型.

4.@Column標(biāo)注也可置于屬性的getter方法之前

@Getter和@Setter(Lombok)

@Setter:注解在屬性上;為屬性提供 setting 方法 @Getter:注解在屬性上;為屬性提供 getting 方法
擴(kuò)展:
 @Data:注解在類(lèi)上;提供類(lèi)所有屬性的 getting 和 setting 方法,此外還提供了equals、canEqual、hashCode、toString 方法

@Setter:注解在屬性上;為屬性提供 setting 方法

@Getter:注解在屬性上;為屬性提供 getting 方法

@Log4j2 :注解在類(lèi)上;為類(lèi)提供一個(gè) 屬性名為log 的 log4j 日志對(duì)象,和@Log4j注解類(lèi)似

@NoArgsConstructor:注解在類(lèi)上;為類(lèi)提供一個(gè)無(wú)參的構(gòu)造方法

@AllArgsConstructor:注解在類(lèi)上;為類(lèi)提供一個(gè)全參的構(gòu)造方法

@EqualsAndHashCode:默認(rèn)情況下,會(huì)使用所有非瞬態(tài)(non-transient)和非靜態(tài)(non-static)字段來(lái)生成equals和hascode方法,也可以指定具體使用哪些屬性。

@toString:生成toString方法,默認(rèn)情況下,會(huì)輸出類(lèi)名、所有屬性,屬性會(huì)按照順序輸出,以逗號(hào)分割。

@NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor
無(wú)參構(gòu)造器、部分參數(shù)構(gòu)造器、全參構(gòu)造器,當(dāng)我們需要重載多個(gè)構(gòu)造器的時(shí)候,只能自己手寫(xiě)了

@NonNull:注解在屬性上,如果注解了,就必須不能為Null

@val:注解在屬性上,如果注解了,就是設(shè)置為final類(lèi)型,可查看源碼的注釋知道

@PreUpdate和@PrePersist

@PreUpdate
1.用于為相應(yīng)的生命周期事件指定回調(diào)方法。
2.該注釋可以應(yīng)用于實(shí)體類(lèi),映射超類(lèi)或回調(diào)監(jiān)聽(tīng)器類(lèi)的方法。
3.用于setter 如果要每次更新實(shí)體時(shí)更新實(shí)體的屬性,可以使用@PreUpdate注釋。
4.使用該注釋?zhuān)槐卦诿看胃掠脩魧?shí)體時(shí)顯式更新相應(yīng)的屬性。
5.preUpdate不允許您更改您的實(shí)體。您只能使用傳遞給事件的計(jì)算的更改集來(lái)修改原始字段值。
@Prepersist
1.查看@PrePersist注釋?zhuān)瑤椭诔志没白詣?dòng)填充實(shí)體屬性。
2.可以用來(lái)在使用jpa的時(shí)記錄一些業(yè)務(wù)無(wú)關(guān)的字段,比如最后更新時(shí)間等等。生命周期方法注解(delete沒(méi)有生命周期事件)
3.@PrePersist save之前被調(diào)用,它可以返回一個(gè)DBObject代替一個(gè)空的 @PostPersist save到datastore之后被調(diào)用
4.@PostLoad 在Entity被映射之后被調(diào)用 @EntityListeners 指定外部生命周期事件實(shí)現(xiàn)類(lèi)

實(shí)體Bean生命周期的回調(diào)事件

 方法的標(biāo)注: @PrePersist @PostPersist @PreRemove @PostRemove @PreUpdate @PostUpdate @PostLoad 。
它們標(biāo)注在某個(gè)方法之前,沒(méi)有任何參數(shù)。這些標(biāo)注下的方法在實(shí)體的狀態(tài)改變前后時(shí)進(jìn)行調(diào)用,相當(dāng)于攔截器;
pre 表示在狀態(tài)切換前觸發(fā),post 則表示在切換后觸發(fā)。 
@PostLoad 事件在下列情況觸發(fā): 
1. 執(zhí)行 EntityManager.find()或 getreference()方法載入一個(gè)實(shí)體后; 
2. 執(zhí)行 JPA QL 查詢過(guò)后; 
3. EntityManager.refresh( )方法被調(diào)用后。 
@PrePersist 和 @PostPersist事件在實(shí)體對(duì)象插入到數(shù)據(jù)庫(kù)的過(guò)程中發(fā)生;
@PrePersist 事件在調(diào)用 EntityManager.persist()方法后立刻發(fā)生,級(jí)聯(lián)保存也會(huì)發(fā)生此事件,此時(shí)的數(shù)據(jù)還沒(méi)有真實(shí)插入進(jìn)數(shù)據(jù)庫(kù)。
@PostPersist 事件在數(shù)據(jù)已經(jīng)插入進(jìn)數(shù)據(jù)庫(kù)后發(fā)生。
@PreUpdate 和 @PostUpdate 事件的觸發(fā)由更新實(shí)體引起, @PreUpdate 事件在實(shí)體的狀態(tài)同步到數(shù)據(jù)庫(kù)之前觸發(fā),此時(shí)的數(shù)據(jù)還沒(méi)有真實(shí)更新到數(shù)據(jù)庫(kù)。
@PostUpdate 事件在實(shí)體的狀態(tài)同步到數(shù)據(jù)庫(kù)后觸發(fā),同步在事務(wù)提交時(shí)發(fā)生。 
@PreRemove 和 @PostRemove 事件的觸發(fā)由刪除實(shí)體引起,@ PreRemove 事件在實(shí)體從數(shù)據(jù)庫(kù)刪除之前觸發(fā),即調(diào)用了 EntityManager.remove()方法或者級(jí)聯(lián)刪除

當(dāng)你在執(zhí)行各種持久化方法的時(shí)候,實(shí)體的狀態(tài)會(huì)隨之改變,狀態(tài)的改變會(huì)引發(fā)不同的生命周期事件。這些事件可以使用不同的注釋符來(lái)指示發(fā)生時(shí)的回調(diào)函數(shù)。
@javax.persistence.PostLoad:加載后。
@javax.persistence.PrePersist:持久化前。
@javax.persistence.PostPersist:持久化后。
@javax.persistence.PreUpdate:更新前。
@javax.persistence.PostUpdate:更新后。
@javax.persistence.PreRemove:刪除前。
@javax.persistence.PostRemove:刪除后。

1)數(shù)據(jù)庫(kù)查詢

@PostLoad事件在下列情況下觸發(fā):

執(zhí)行EntityManager.find()或getreference()方法載入一個(gè)實(shí)體后。

執(zhí)行JPQL查詢后。

EntityManager.refresh()方法被調(diào)用后。

2)數(shù)據(jù)庫(kù)插入

@PrePersist和@PostPersist事件在實(shí)體對(duì)象插入到數(shù)據(jù)庫(kù)的過(guò)程中發(fā)生:

@PrePersist事件在調(diào)用persist()方法后立刻發(fā)生,此時(shí)的數(shù)據(jù)還沒(méi)有真正插入進(jìn)數(shù)據(jù)庫(kù)。

@PostPersist事件在數(shù)據(jù)已經(jīng)插入進(jìn)數(shù)據(jù)庫(kù)后發(fā)生。

3)數(shù)據(jù)庫(kù)更新

@PreUpdate和@PostUpdate事件的觸發(fā)由更新實(shí)體引起:

@PreUpdate事件在實(shí)體的狀態(tài)同步到數(shù)據(jù)庫(kù)之前觸發(fā),此時(shí)的數(shù)據(jù)還沒(méi)有真正更新到數(shù)據(jù)庫(kù)。

@PostUpdate事件在實(shí)體的狀態(tài)同步到數(shù)據(jù)庫(kù)之后觸發(fā),同步在事務(wù)提交時(shí)發(fā)生。

4)數(shù)據(jù)庫(kù)刪除

@PreRemove和@PostRemove事件的觸發(fā)由刪除實(shí)體引起:

@PreRemove事件在實(shí)體從數(shù)據(jù)庫(kù)刪除之前觸發(fā),即在調(diào)用remove()方法刪除時(shí)發(fā)生,此時(shí)的數(shù)據(jù)還沒(méi)有真正從數(shù)據(jù)庫(kù)中刪除。

@PostRemove事件在實(shí)體從數(shù)據(jù)庫(kù)中刪除后觸發(fā)。

@NoArgsConstructor & @AllArgsConstructor(lombok)

@NoArgsConstructor,提供一個(gè)無(wú)參的構(gòu)造方法。

@AllArgsConstructor,提供一個(gè)全參的構(gòu)造方法。

@Configuration & @bean1.@Configuration標(biāo)注在類(lèi)上,相當(dāng)于把該類(lèi)作為spring的xml配置文件中的<beans>,作用為:配置spring容器(應(yīng)用上下文)

 package com.test.spring.support.configuration;

@Configuration
public class TestConfiguration {
    public TestConfiguration(){
        System.out.println("spring容器啟動(dòng)初始化。。。");
    }
}
相當(dāng)于:
 <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
    xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:util="http://www.springframework.org/schema/util" xmlns:task="http://www.springframework.org/schema/task" xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
        http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.0.xsd
        http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.0.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd
        http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.0.xsd"
 default-lazy-init="false">


</beans>
主方法進(jìn)行測(cè)試:
 package com.test.spring.support.configuration;

public class TestMain {
    public static void main(String[] args) {

        //@Configuration注解的spring容器加載方式,用AnnotationConfigApplicationContext替換ClassPathXmlApplicationContext
        ApplicationContext context = new AnnotationConfigApplicationContext(TestConfiguration.class);

        //如果加載spring-context.xml文件:
        //ApplicationContext context = new ClassPathXmlApplicationContext("spring-context.xml");
    }
}

從運(yùn)行主方法結(jié)果可以看出,spring容器已經(jīng)啟動(dòng)了:

  1 八月 11, 2016 12:04:11 下午 org.springframework.context.annotation.AnnotationConfigApplicationContext prepareRefresh
2 信息: Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@203e25d3: startup date [Thu Aug 11 12:04:11 CST 2016]; root of context hierarchy
3 spring容器啟動(dòng)初始化。。。

2.@Bean標(biāo)注在方法上(返回某個(gè)實(shí)例的方法),等價(jià)于spring的xml配置文件中的<bean>,作用為:注冊(cè)bean對(duì)象

bean類(lèi):

 package com.test.spring.support.configuration;

public class TestBean {

    public void sayHello(){
        System.out.println("TestBean sayHello...");
    }

    public String toString(){
        return "username:"+this.username+",url:"+this.url+",password:"+this.password;
    }

    public void start(){
        System.out.println("TestBean 初始化。。。");
    }

    public void cleanUp(){
        System.out.println("TestBean 銷(xiāo)毀。。。");
    }
}

配置類(lèi):

 package com.test.spring.support.configuration;

@Configuration
public class TestConfiguration {
        public TestConfiguration(){
            System.out.println("spring容器啟動(dòng)初始化。。。");
        }

    //@Bean注解注冊(cè)bean,同時(shí)可以指定初始化和銷(xiāo)毀方法
    //@Bean(name="testNean",initMethod="start",destroyMethod="cleanUp")
    @Bean
    @Scope("prototype")
    public TestBean testBean() {
        return new TestBean();
    }
}

主方法測(cè)試類(lèi):

 package com.test.spring.support.configuration;

public class TestMain {
    public static void main(String[] args) {
        ApplicationContext context = new AnnotationConfigApplicationContext(TestConfiguration.class);
        //獲取bean
        TestBean tb = context.getBean("testBean");
        tb.sayHello();
    }
}

注:
(1)、@Bean注解在返回實(shí)例的方法上,如果未通過(guò)@Bean指定bean的名稱(chēng),則默認(rèn)與標(biāo)注的方法名相同;
(2)、@Bean注解默認(rèn)作用域?yàn)閱卫齭ingleton作用域,可通過(guò)@Scope(“prototype”)設(shè)置為原型作用域;
(3)、既然@Bean的作用是注冊(cè)bean對(duì)象,那么完全可以使用@Component、@Controller、@Service、@Ripository等注解注冊(cè)bean,當(dāng)然需要配置@ComponentScan注解進(jìn)行自動(dòng)掃描。

bean類(lèi):

 package com.test.spring.support.configuration;

//添加注冊(cè)bean的注解
@Component
public class TestBean {

    public void sayHello(){
        System.out.println("TestBean sayHello...");
    }

    public String toString(){
        return "username:"+this.username+",url:"+this.url+",password:"+this.password;
    }
}

配置類(lèi):

 1 
//開(kāi)啟注解配置
  2 @Configuration
  3 //添加自動(dòng)掃描注解,basePackages為T(mén)estBean包路徑
  4 @ComponentScan(basePackages = "com.test.spring.support.configuration")
  5 public class TestConfiguration {
  6     public TestConfiguration(){
  7         System.out.println("spring容器啟動(dòng)初始化。。。");
  8     }
  9 
 10     //取消@Bean注解注冊(cè)bean的方式
 11     //@Bean
 12     //@Scope("prototype")
 13     //public TestBean testBean() {
 14     //  return new TestBean();
 15     //}
 16 }

主方法測(cè)試獲取bean對(duì)象:

 public class TestMain {
    public static void main(String[] args) {
        ApplicationContext context = new AnnotationConfigApplicationContext(TestConfiguration.class);
        //獲取bean
        TestBean tb = context.getBean("testBean");
        tb.sayHello();
    }
}

sayHello()方法都被正常調(diào)用。

使用@Configuration注解來(lái)代替Spring的bean配置

下面是一個(gè)典型的Spring配置文件(application-config.xml):

 <beans>
        <bean id="orderService" class="com.acme.OrderService"/>
                <constructor-arg ref="orderRepository"/>
        </bean>
        <bean id="orderRepository" class="com.acme.OrderRepository"/>
                <constructor-arg ref="dataSource"/>
        </bean>
</beans>

然后你就可以像這樣來(lái)使用是bean了:

  1 ApplicationContext ctx = new ClassPathXmlApplicationContext("application-config.xml");
  2 OrderService orderService = (OrderService) ctx.getBean("orderService");

現(xiàn)在Spring Java Configuration這個(gè)項(xiàng)目提供了一種通過(guò)java代碼來(lái)裝配bean的方案:

 @Configuration
public class ApplicationConfig {

        public @Bean OrderService orderService() {
                return new OrderService(orderRepository());
        }

        public @Bean OrderRepository orderRepository() {
                return new OrderRepository(dataSource());
        }

        public @Bean DataSource dataSource() {
                // instantiate and return an new DataSource …
        }
}

然后你就可以像這樣來(lái)使用是bean了:

  1 JavaConfigApplicationContext ctx = new JavaConfigApplicationContext(ApplicationConfig.class);
  2 OrderService orderService = ctx.getBean(OrderService.class);

這么做有什么好處呢?

     1.使用純java代碼,不在需要xml

     2.在配置中也可享受OO帶來(lái)的好處(面向?qū)ο?

     3.類(lèi)型安全對(duì)重構(gòu)也能提供良好的支持

     4.減少?gòu)?fù)雜配置文件的同時(shí)依舊能享受到所有springIoC容器提供的功能




粉絲福利:Java從入門(mén)到入土學(xué)習(xí)路線圖

??????

??長(zhǎng)按上方微信二維碼 2 秒


感謝點(diǎn)贊支持下哈 

瀏覽 77
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)
評(píng)論
圖片
表情
推薦
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 久久久久99精品成人片欧美一区| 午夜av福利| 日韩欧美不卡色不卡| 少妇中文字幕| 人人插人人摸| 韩国一区二区在线观看| www.6969成人片亚洲| 亚洲视频456| 东北老女人操逼| 超碰自拍| 日韩人妻无码电影| 欧美一卡二卡| 三级片亚洲无码| 黄色三级视频| 丰滿人妻-区二区三区| 国产高清精品软件丝瓜软件| 婷婷中文字幕亚洲| 狠狠干在线视频| 亚洲成人影音先锋| 大香蕉人人| 妞干网国产| 免费日韩| 一级黄片免费视频| 色五月婷婷中文字幕| 亚洲国产一| 黄片AAA| 色色网的五月天| 久操国产| 欧美日韩一区二区三区四区| 69久蜜桃人妻无码精品一区| 激情五月伊人| 性感欧美美女| 欧美午夜无码| 夜夜嗨av无码一区二区三区| 91在线无码精品秘入口国战| 天天干天天日蜜臀色欲av| 99久久99九九九99九他书对| 国产精品亚洲一区| 丁香五月婷婷综合| 99热激情在线| 中文字幕乱码亚洲无线码在线日噜噜| 九色蝌蚪视频| 操逼91小视频| 欧美激情爱爱| 亚洲视频入口| 日韩AV免费看| 成人一区二区在线观看| 黄色福利| 五月天激情小说网| 北条麻妃视频在线播放| 中文字幕高清在线| 人人舔人人爱| 99国产在线观看| 日韩亚洲在线观看| 国产激情免费| 东京热在线免费观看| 国产精品做爱| 91嫖妓站街按摩店老熟女| 99成人网站| 午夜精品久久久久久不卡8050| 可以在线观看的av| 国产无限资源| 大香蕉尹人网| 亚洲第一黄片| 性欧美丰满熟妇XXXX性久久久 | 人人看人人摸人人搞| 在线aⅴ| 婷婷五月视频| 欧美一级A片在线观看| 安徽少妇搡bbw搡bbbb| 欧美成人激情视频| 免费草逼网站| 色欲影视插综合一区二区三区| 日韩高清无码人妻| 欧美成人免费观看| 色婷婷丁香五月| 亚洲高清无码免费观看| 亚洲无码理论片| 内射免费视频| 亚洲高清无码免费观看| 天天操人人射| 人人看人人摸| 中文字幕久久人妻无码精品蜜桃| 蜜芽成人精品久久久视频| 国产黄色电影| 午夜无码精品一区二区三区99午| 婷婷五月天激情电影| youjizzcom日本| 亚洲黄片免费| 刘玥精品国产一区二区三区| 日本伊人网| 操逼一区二区| 91社成人影院| 天天做天天日| 蜜桔视频嫩草蜜桃| 日韩中文字幕不卡| 欧美成年人视频| 国产一级a毛一级a做免费的视频| 一区二区三区在线观看视频| 3344在线观看免费下载视频| 一本色道久久综合无码人妻四虎 | 午夜激情久久| 国产无码内射视频| 午夜激情网站| 人人干人人干人人| 国产内射网站| 日韩AV手机在线观看| 国产综合自拍| 麻豆精品在线| 婷婷久久婷婷| www.豆花社区成人| 国产精品久久久无码专区| 老熟女痒到不行-ThePorn| 人妻黄色视频| 国产在线一区二区三区四区| 欧一美一伦一A片| 日韩av在线免费观看| 国产真实乱婬A片三区高清蜜臀| a级片在线观看| 91传媒在线免费观看| 国产精品大香蕉| 日韩av无码中文字幕| 久久久久久网| 一本色道久久| 欧美日韩一级在线观看| 操中国老女人| 七十路の高齢熟女千代子下载| 国产人妻中文字幕| 欧美男女日逼视频| 波多野结衣无码视频在线观看| 一区二区成人电影| 一插菊花综合| 老妇槡BBBB| 成人亚洲性情网站www在线| 豆花视频在线| www.911国产| JLZZJLZZ亚洲女人| 久操青青| 久久午夜无码人妻精品蜜桃冫| 久久久免费黄色视频| 午夜福利成人| 老司机无码视频| 91爱搞| 色婷婷久久综合| 国产91在线拍揄自揄拍无码九色 | 日本韩国欧美18| 久久久久久无码精品亚洲日韩麻豆| 国产亚洲久一区二区| 嫩草国产| 91网站免费在线观看| 精品一区二区三区免费| 三级爱爱| 69AV电影| 影音先锋男人| 亚洲AV在线看| 黄色视频在线免费看| 成人毛片在线观看| 农村乱子伦毛片国产乱| 国产高清色| 日韩激情一区| 动漫精品一区二区| 国产一级黄色大片| 日本性爱网址| 黄色视频网站日本| 在线免费人成视频| 久久九九99| 国产精品毛片久久久久久久| 久久99精品久久久久久| 国产熟妇婬乱A片免费看牛牛| 天天撸一撸视频| 亚洲第一大网站| 亚洲免费看黄| 91看片看婬黄大片Videos| 国产女人18水真多18精品| 欧美青青草| 国产福利电影在线观看| caopor在线| 波多野结衣无码高清视频| 日韩在线成人视频| 中文字幕黄色| 国产美女一区| 成人做爰黄片视频免费| 91在线无码精品秘入口电车| 欧美日韩一级黄片| 天堂综合网久久| 亚洲日韩中文字幕无码| 欧美精品在线免费| 天天噜天天操| 亚洲午夜无码精品专区| 69成人精品视频| 亚洲高清无码久久| 蜜桃免费AV| 高清色色女网站| 国产一级黄片| 欧美色性乐汇操日本娘们| 江苏妇搡BBBB搡BBBB-百度| 亚洲高清无码免费| 亚洲色影院| 国产福利小视频| 大香蕉久| 美女黄网站| 四川妇BBB桑BBB桑BBB| 午夜操| 国产成人一区| 乱码少妇| 日本一节片在线播放| 麻豆精东一区二区欧美国产| 秋霞精品一区二区三区| 91视频成人版一区二区| 91精品国产闺蜜国产在线闺蜜| 男女高清无码| 西西4444www大胆无吗| 一级A片久久久免费直播间| 96精品久久久久久久久久| 国产aaaaaaaaaaaaa| 高清无码视频免费版本在线观看| 久久亚洲一区| 国产aaaaaaaaaa| 久久不射网站| 国产成人大香蕉| 色情一级AA片免费观看| 自拍成人视频| 亚洲无码一级片| 九色PORNY9l原创自拍| 人人妻人人色| 欧美亚韩一区二区三区| 免费黄网站| 网络自拍亚洲激情| 亚洲人妻免费视频| 狠狠色噜噜狠狠狠7777米奇网| 欧美国产另类| 国产三级片91| 中文字幕无码网站| 美女免费网站| 精品国产AⅤ麻豆| 91小仙女jK白丝袜呻吟| 色播五月丁香| 五月婷婷俺來也| 麻豆精品在线播放| 亚洲AV无码久| 国产人妻人伦精品1国产丝袜| 欧美午夜影院| 亚洲家庭乱伦| 欧美丰满美乳XXⅩ高潮www| 操逼网站在线观看| 亚洲一级Av无码毛片久久精品| 日韩无码免费视频| 成人国产片女人爽到高潮| 国产—级a毛—a毛免费视频| 久久国产精品精品国产色婷婷| 欧美人人爱| 精品成人A片久久久久久不卡三区 免费看成人A片无码照片88hⅤ | 日韩一区二区三区在线| 久久精品| 在线看一区二区三区| 蜜臀久久99精品| 日本一级视频| 内射极品美女| 色一区二区| 无码xx| 99久久亚洲精品日本无码| 人人看人人摸人人草| 青春草免费视频| 婷婷中文字幕| 无码av无码AV| 成人AV一AV二| 亚洲无码免费播放| 免费大黄网站| 水蜜桃视频在线观看| 日韩插插| 黑人乱伦| 黄色大片免费在线观看| 高清免费无码视频| 婷婷丁香五月激情一区综合网| 成人中文字幕无码| 欧美一本在线| 美女自慰网站在线观看| 午夜精品秘一区二区三区| 日本久久婷婷| 一级二级三级毛片| 亚洲三级黄色视频| 欧美性爱一区二区| 亚洲性爱综合| 强伦轩一区二区三区在线观看| 欧美v| 欧美另类色图| 婷婷丁香五月花| 日韩免费黄色视频| 黄片免费观看网站| 国产美女啪啪| www黄色片| 操碰视频在线| 69久久| 欧美三区四区| 日韩无码精品一区二区三区| 嘿嘿午夜| 麻豆成人无码| 亚洲砖区区免费| 色五月网| 五月色综合网| 在线视频久| 日本色色网站| 国产三级黄色AV| 动漫无码视频| 翔田千里无码在线| 亚洲AV白浆| 精品1区2区| 麻豆内射| 免费AV成人| 国产欧美日韩在线播放| 亚洲精品在线看| 淫荡少妇美红久久久久久久久久 | 国产色五月| 欧美视频操逼| 狠狠狠狠狠狠操| 亚洲制服在线观看| 国产嫩草久久久一二三久久免费观看 | 午夜久久电影| 一本一道久久a久久精品蜜桃| 欧美日韩视频一区二区三区| 欧美在线一级片| 中国老熟女重囗味HDXX| 久久舔| 91精品国产一区二区三区| 在线观看欧美日韩| 国产女主播在线播放| 天天射夜夜操| 色人人| 三级黄,色| 爆操熟女| 久久99久久视频| 久久夜色精品国产噜噜亚洲AV| 久久精品成人电影| 日本成人免费电影| 伊人影院久久| 91人妻人人澡人人精品| 99在线观看免费| 天天看天天日| 亚洲天天干| 久久久久久9| 婷婷五月丁香网| 亚洲日韩精品欧美一区二区yw | yjizz视频| 黄色片在线免费观看| 国产女人十八水真多| 亚洲AV成人精品日韩在线播放| 欧美成人一区二区三区片| 丁香社区五月天| 99热在线播放| 欧美亚洲日韩在线观看| 无码-ThePorn| 欧美性爱成人| 欧美黄色一级视频| 国产区在线视频| 国产精品一线| 精品久久三级片| 日本特级黄A片免费观看| 老太奶性BBwBBw侧所| 四色永久成人网站| 欧美3区| 人人操人人搞| 久久精品美臀| 午夜AV在线免费观看| 亚洲免费视频在线观看| 精产国品一区二区三区| 天天操综合网| 一级黄色视频免费观看| 日本中文字幕在线观看| 12—13女人毛片毛片| 欧美视频在线观看| 91丨九色丨国产在线| 内射视频网站| 亚洲九九视频| 韩国中文字幕HD久久| 黑人巨粗进入疼哭A片| 褒姒AV无玛| 六月丁香婷| 成人色播播| 九九精品视频在线播放| 五月天激情网址| 亚洲免费观看高清完整版在va线| 久久久精品国产视频| 蜜芽成人在线| 中日韩黄色视频| 亚洲V视频| 亚洲香蕉影院| 久久精品99| 色欲欲www成人网站| 日韩精品一区二区三区四区蜜桃视频| 粉嫩护士小泬18p| 操欧美女人| 日本欧美视频| 18性XXXXX性猛交| 黄片AAA| 婷婷国产成人精品视频| 天堂在线视频| 免费在线观看黄视频| 五月天在线电影| 天堂网av在线| 好逼天天有| 蜜桃91精品秘入口内裤| 精品无码三级在线观看视频| 吴梦梦一区二区在线观看| 日韩国产成人| 狼友视频免费在线观看| 国产一级一片免费播放放a| 中文字幕熟女| 欧美精品国产动漫| 黄色av天堂| 久久精品免费电影| 黑人又粗又大XXXXOO| 男人AV在线| 日韩无码人妻一区| 91老熟女| 亚洲人妻无码视频| 热re99久久精品国产99热| 成人做爰A片一区二区| 人人澡超碰碰| 欧美成人精品一级| 精品国产国产没封| 国产精品成人免费视频| 大黑逼AV| 操逼视频国产| 在线欧美亚洲| 黄片WWW| 欧美一级爱爱| 国产成人ab| 欧一美一婬一伦一区二区三区自慰国 | 天天天做夜夜夜夜爽无码| 日韩欧美操逼| 一级a免一级a做片免费| 欧美A一| 欧美黄色性爱视频| 一级黄色小视频| 久久亚洲热| 成人伊人网| 精品无码专区| 免费人成视频在线播放| 亚洲最大三级片| 三级片无码在线播放| 男女无套在线观看免费| 综合激情av| wwwav| 波多野结衣国产| 大色AV| 亚洲AV无码成人网站国产网站 | 91精品婷婷国产综合久久| 91在线你懂的| 国产成人精品无码片区在线观91| 成人精品免费| 日本高清无码在线观看| 亚洲三级在线免费观看| 国产女人在线观看| 一级日逼视频| 久久精品视频播放| 91欧美精品| 亚洲无码内射| 亚洲av高清| 亚洲天媒在线播放| 亚洲精品中文字幕无码| 日本中文在线观看| 丰满人妻一区二区三区46| 高清无码1区| 天天干视频在线| 91在线视频免费播放| 今天成全在线观看高清| 午夜福利aaa| 国产熟睡乱子伦午夜视频_第1集| 亚洲欧美久久久久久久久久久久| 无码视频播放| 欧美日韩精品久久久免费观看| 性无码一区二区三区在线观看 | A一级黄片| 久草视频在线播放| 国产AV一区二区三区四区| 久久极品| 91成人网站| 亚州不卡| 亚洲国产精品成人网站| 97人人干| 人人草人人草| 蝌蚪窝视频在线| 中文区中文字幕免费看| 日韩三级在线播放| 五月天狠狠| 天堂在线视频免费| 黄色免费网站| 插吧插吧网| 激情五月天网| 亚洲区成人777777精品| 九九韩剧网最新电视剧免费观看| 一卡二卡三卡无码| 国产免费av在线观看| 亚洲日本黄色网址| 91蜜臀| 四虎成人网站| 超碰一级片| 日韩AV无码一区二区三区| 狠狠色噜噜狠狠狠7777| 草逼综合网| 色99网站| www日本高清| 欧美丝袜脚交xxxxBH| 日日AV| 亚洲精品免费视频| 美女啪啪视频| 天天插天天狠天天透| 亚洲熟妇在线| 99精品免费在线观看| 大香蕉最新视频| 日韩av免费在线| 性爱A级视频| 婷婷五月天青草| 麻豆回家视频区一区二| 天天干视频| 操b在线| 91狠狠综合久久久久久| 18国产免费视频在线观看| 国产免费AV网站| 中文字幕乱码中文字幕| 久久久久久久久久国产| 久久一区二区三区四区五区| 国产毛片一区| 亚洲社区在线观看| 人操人操人操| 青青草小视频| 成人免费黄色网| 人人看人人插| 久久精品女同亚洲女同13| 天天日天天草天天干| 日本久久久久| 亚洲无码高清免费| 欧美性爱AAA| 婷婷五月色播| 99高清国产| a黄色视频| AA视频网站| 黄色一级大片在线免费看国产| 高清无码小视频| 在线久操| 免费无码婬片aaaa| 黄色免费av| 国产激情一区二区三区| 成人免费乱码大片a毛片蜜芽| av黄色网址| 江苏妇搡BBBB搡BBBB-百度| 成人大香蕉视频| 美女网站视频黄| 91亚洲国产成人久久精品网站| 亚洲精品观看| 91成人视频在线免费观看| 偷拍-91爱爱| 综合婷婷久久| 91足浴店按摩漂亮少妇| 中文字幕不卡一区| 九色PORNY国产成人| 大色网小色网| 狠狠亚洲| 天天操天天看| 成人网肏逼视频| 免费观看久久久| 亚洲人妻性爱| 亚洲欧美另类图片| 精品久久无码| 黄片日逼视频| 老婆被黑人杂交呻吟视频| 亚洲欧美成人电影| 色综合久久天天综合网| 岛国AV免费看| 久久精品福利视频| 久久久久久久人妻丝袜| 一级黄色片免费看| 久久国产大奶| 国产一级性爱视频| 免费看黄色A片| 首屈一指视频在线观看| 69福利网| 国产无码免费在线观看| 欧美大黑逼| 国产精品久久久久久久久久乐趣播| 亚洲色无码人妻激情| 青娱在线视频| 黑人精品XXX一区一二区| 西西WWW888大胆无码| 天堂a在线| 色婷婷在线免费视频| 亚洲中文字幕免费观看| 久青草视频| 伊人综合久久| 国产av不卡| 国产资源在线观看| 日韩精品久久久久久久| 欧美一区二区三区免费| 亚洲无码观看视频| 亚洲日韩欧美一厂二区入| 97人人色| 夜夜夜影院| 国产AV一区二区三区四区| 日本欧美在线| 天堂在线最新资源| 自拍毛片| 操B国产| 国产免费福利| 免费日本黄色| 欧美性爱一区二区三区| 人人干人人草| AV草逼| 好看的中文字幕av| 亚洲视频福利| 东京热在线视频观看| 中文在线观看视频| 欧美成人综合| 啪啪啪av| 四虎www| 欧美高清无码在线观看| 日韩高清中文字幕| 日本无码一区二区| 大香蕉福利视频导航| 国产一区二区三区四区五区六区七区 | 在线a视频免费观看| 亚洲成人一区二区三区| 欧美3P视频| 亚洲色图88| 99国产免费视频| 91导航| 亚洲天堂免费视频| 蜜桃av久久久亚洲精品| 波多野结衣国产区42部| 特级毛片WWW| 91久久国产综合久久91| 日本特黄一级片| www俺来也com| 五月婷婷一区| 丝瓜视频污APP| 99久久人妻无码中文字幕系列 | 国产精品剧情| 成人免费观看视频| 免费观看黄色电影| 日韩在线视频一区二区三区| 爆操欧美| 天天日天天干美女| 中文字幕在线无码视频| 嘿嘿午夜影院| 青青操色| 中文字幕乱在线| 国产夫妻自拍av| 四川BBB操BBB| 瑟瑟免费视频| av免费观看网站| 成人图片小说| 99久久精品国产一区二区三区| 午夜福利1000| 91超碰在线免费观看| 黄色插逼视频| 日p视频在线观看| AV无码一区二区三区| 污视频网站免费在线观看| 欧美精品在线观看视频| 一区二区三区四区免费观看| 日韩av在线免费观看| 亚洲v欧美v| 天天干夜夜操| 三级AV在线免费观看| 人人爱人人爽人人操| 免费黄色a片| 性猛交AAAA片免费看蜜桃视频| 人人看人人摸人人插| 日韩欧美内射| 亚洲欧美手机在线| 免费版成人久久幺| 山东wBBBB搡wBBBB| 久久日韩无码| 久久精品夜色噜噜亚洲A∨| 色色亚洲| 久久亚洲日韩天天做日日做综合亚洲 | 91精品少妇| 日本免费无码| 欧美日韩91| 亚洲三级无码视频| 日本无码成人| 国产精品秘久久久久久免费播放| 亚洲国产av电影| 影音先锋av资源网站| 青娱乐大香蕉| 亚洲中文字幕有码| 九九九在线| 久久99无码| 伊人精品A片一区二区三区| 亚洲日韩精品秘在线观看| 北条麻妃久久久| 日韩午夜av| 日韩人妻一区二区三区| 中文字幕东京热加勒比| 久久另类TS人妖一区二区免费| 一区二区成人电影| 另类天堂| 国产高清a| 国产激情视频在线播放| 狠狠狠久久久| 国产一a毛一a免费观看| 91做爱视频| 国产精品久久77777| 午夜福利成人网站| 伊人网视频在线| 三级高清无码视频| 狠狠插视频| 另类天堂| 九久久| 婷婷AV在线| 欧美福利电影| 久久九热| 成人视频无码| 中文字幕三级片在线观看| 啪啪免费| 激情综合久久| 无码视频日韩| 伊人狠狠蜜桃亚洲综合| 日欧美美女逼| 国产视频无码在线| 午夜高清无码| 欧美成人精品三级网站| 天天操天天干天天日| 日本中文字幕亚洲| 国产三级高清无码| 永久免费视频| 91成人网站| 北条麻妃无码精品AV怎么看 | 日韩三级精品| 日韩欧美高清| 先锋成人在线| 91女色| 奇米色色| 精品人妻午夜一区二区三区四区| 亚洲无码理论片| 国产91在线视频| 国产成人无码精品久在线观看| 亚洲国产成人av| 三级片在线看| 三级网站网址| 精品无码在线观看视频| 日韩中文字幕有码| 东京热一区二区三区四区| 女侠吕四娘第二部| 国产在线观看av| 99精品视频16在线免费观看| 成人黄色毛片视频| 色亭亭影院| 99性视频| 九九九成人| eeuss在线| 亚洲电影在线观看| 欧美日韩一区视频| 在线观看亚洲视频| 99久久国产精| www.四虎成人网站| 大帝av| 伊人久久综合| 想要xx在线观看| 人人妻人人澡人人爽久久| 欧美成人手机在线| 精品乱子伦一区二区三区下载| 99免费精品视频| 国产精品成人免费| 成人自拍偷拍视频| 毛片资源| 波多野结衣网站| 日韩福利网| 欧美一区二区三区激情| 神马午夜| 欧美不卡在线视频| 日韩人妻无码一区二区三区| 天天噜天天操| 罗莉AV| 成人国产片| 日韩一级无码视频| 黄色成人在线观看视频| 国产P片内射天涯海角| 狠狠撸狠狠操| 欧美级黑寡妇毛片app| 国产精品无码一区二区在线欢| 精品蜜桃秘一区二区三区在线播放| 日本的黄色视频| 青青国产在线| 99国产在线| 日韩中文无码字幕| 国产手机AV在线| 豆花视频成人版www满18| 人人妻人人做| 水果派AV| 天堂网婷婷| 亚洲无码久久| 久久婷婷综合网| 艹逼中文字幕| 欧美日韩国产一区| 狠狠躁日日躁夜夜躁A片小说免费| 波多野结衣高清av久久直播免| 欧美精品在线视频| 国产成人无码精品| 99热中文字幕在线观看| 日本亚洲欧美| 亚l洲视频在线观看| 天天干天天在线观看| 人人射人人操| 精品免费在线| 免费一级黄色片| 国产香蕉av| 亚洲三级精品| 亚洲一级av| 国产又大又黄| 九久久| 久久国产黄色一级片| 黄色影片在线观看| 人妻无码一区二区三区| 久久狠狠干| 久久精品一区| 久久久久婷婷| 亚洲一区翔田千里无码| 无码成人片| 在线亚洲色图| 久久久久亚洲AV成人片乱码| 9I成人免费版| 国产无遮挡A片又黄又爽小直播| 国产成人午夜视频| 成人三级视频| 成人精品国产| 亚洲xx网| 中文无码日韩| 久草免费在线| 国产一级婬片A片AAA樱花| 成人精品一区二区三区中文字幕 | 黑人又粗又大XXXXOO| 亚洲中文无码字幕| 自拍偷拍AV| 亚洲激情无码视频| 高清无码在线免费视频| 中国毛片网站| 色婷婷视频在线观看| 婷婷丁香综合| 先锋资源在线视频| 美日韩一区| 日韩欧美国产黄色电影| 不卡在线视频| 黄色网址在线免费观看| 狠狠色噜噜狠狠狠7777| 一区二区三区麻豆| 日韩ava| 国产无码电影| 亚洲天堂精品在线观看| 亚洲精品久久久久久久久豆丁网| 水蜜桃视频在线| 骚逼综合网| 99热日韩| 久久免费成人电影| 开心色播五月天| 四川搡BBBBB搡BBB| 欧美色伊人| 欧美黄色片| 国产夫妻在线| 亚洲区视频| 日韩成人高清无码| 亚洲精品911| AA丁香综合激情| 风流老熟女一区二区三区| 欧美性爱AAA| 亚洲在线观看网站| www99| 一本一道vs波多野结衣| 91干穴穴在线观看| 午夜精品秘一区二区三区| 高清AV无码| 亚洲成人综合在线| 国产午夜免费| 中文字幕天天干| 中文成人无字幕乱码精品区| 91在线无码精品在线看| 国产成人无码一区二区在线观看| 国产a片免费观看| 久久久精品淫秽色情| 黑人中文字幕| 操你啦日韩| 国产一级a毛一级a| 人人艹人人摸| 人妻FrXXeeXXee护士| 影音先锋av中文字幕| 一级黄色毛片视频| 久久婷婷网| 成年人免费电影| 不卡无线在一区| 国产乱码一区二区三区的区别| 色欲91| 日韩天堂网| 91久久综合| 丁香婷婷六月天| 日韩黄色视频网站| 久久cao| 西西人体WW大胆无码| 在线无码免费观看| 影音先锋男人站| AV在线免费播放| 久久精品免费|