日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java注解配置rest服务_Spring Boot 注解—常用注解

發布時間:2024/9/19 java 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java注解配置rest服务_Spring Boot 注解—常用注解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

注:該部分內容包含一些常用注解,如果沒有學習過java注解的同學可以先看一下上一小節的內容Spring Boot 注解—基本知識 ,不看也沒關系,下面就開始本節內容。

@Configuration注解

@Configuration注解意思是往容器中加入一個組件,該組件的主要作用是進行一些配置,相當于之前配置的配置文件,下面我們用兩種方式對其進行演示:

準備工作

pom.xml<?xml ?version="1.0"?encoding="UTF-8"?>

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0?http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

com.itbofeng

SpringDemo

1.0-SNAPSHOT

org.springframework

spring-context

5.0.7.RELEASE

junit

junit

4.12

test

配置文件方式

1、創建類路徑配置文件beans.xml

2、創建User類package?com.itbofeng.bean;/**

*?描述:User?Bean?用來測試

*/public?class?User?{????private?String?name;????private?Integer?age;????public?User()?{

}????public?User(String?name,?Integer?age)?{????????this.name?=?name;????????this.age?=?age;

}????public?String?getName()?{????????return?name;

}????public?void?setName(String?name)?{????????this.name?=?name;

}????public?Integer?getAge()?{????????return?age;

}????public?void?setAge(Integer?age)?{????????this.age?=?age;

}????@Override

public?String?toString()?{????????return?"User{"?+????????????????"name='"?+?name?+?'\''?+????????????????",?age="?+?age?+????????????????'}';

}

}

2、在配置文件中加入User bean<?xml ?version="1.0"?encoding="UTF-8"?>

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.springframework.org/schema/beans?http://www.springframework.org/schema/beans/spring-beans.xsd">

3、運行測試import?com.itbofeng.bean.User;import?org.junit.Test;import?org.springframework.context.ApplicationContext;import?org.springframework.context.support.ClassPathXmlApplicationContext;/**

*?描述:測試類

*/public?class?MainConfigTest?{

@Test????public?void?testXml(){????????//通過配置文件創建容器,需要傳入配置文件

ApplicationContext?applicationContext=new?ClassPathXmlApplicationContext("beans.xml");????????//獲取bean

User?user=?(User)?applicationContext.getBean("user");

System.out.println(user);

}

}

運行結果

注解方式

1、創建配置類MainConfig.java

2、注冊組件用@Bean注解

我們看一下代碼

package?com.itbofeng;import?com.itbofeng.bean.User;import?org.springframework.context.annotation.Bean;import?org.springframework.context.annotation.Configuration;/**

*?描述:該類對@Configuration注解進行講解

*/@Configurationpublic?class?MainConfig?{????/**

*?給容器中加入Bean,相當于配置文件總的bena標簽

*?id?默認是方法名稱,也可以指定id

*?class?即返回值類型

*/

@Bean

public?User?user(){????????return?new?User("lisi",18);

}

}

以上配置類就等同于beans.xml中的內容

3、運行測試@Test

public?void?testAnnoation(){????????//通過注解創建容器,需要傳入配置類

ApplicationContext?applicationContext=new?AnnotationConfigApplicationContext(MainConfig.class);????????//獲取bean

User?user=?(User)?applicationContext.getBean("user");

System.out.println(user);

}

運行結果

有了該例子相信大家對@Configuration有了一個基本的認識,其就相當于Spring配置文件的功能,不過是以注解的方式進行體現,之前我們在配置文件中多采用包掃描的方式進行,那么這種方式在配置類中如何體現呢,下面我們引入第二個注解@ComponentScan包掃描注解

@ComponentScan注解

@ComponentScan注解就相當于 xml配置文件中的context:component-scan標簽,下面講解一下他的基本使用方法:

xml

java@Configuration@ComponentScan("com.itbofeng")public?class?MainConfig?{??//...}

這樣就可以對com.itbofeng包下的@Controller、@Service、@Component、@Respoitory、@Component標注的類進行掃描,并由Spring容器進行管理,當然spring并不是這么簡單的,它還可以進行排除,僅包含,我們看一下xml和java的語法

xml

java@Configuration@ComponentScan(value?=?"com.itbofeng",excludeFilters?=?{????????@ComponentScan.Filter(type?=?FilterType.ANNOTATION,classes?=?{Controller.class})

},

includeFilters?=?{????????@ComponentScan.Filter(type?=?FilterType.ANNOTATION,classes?=?{Service.class})

},useDefaultFilters?=?false)public?class?MainConfig?{??//...}

對于jdk1.8及以上@ComponentScan支持重復注解,另外還有@ComponentScans注解可以寫多個@ComponentScan注解,另外需要說明的兩種過濾方式排除和僅包含在一個包掃描中僅可出現一個。

關于@ComponentScan.Filter.type的取值大家可以參考:https://www.cnblogs.com/kevin-yuan/p/5068448.html

我們之前看到過@Bean注解,但并未對該注解進行詳細介紹

@Bean

前面我們初步體驗了一下@bean注解的作用也很簡單常用來標注在方法上面,來表示往spring容器中添加一個組件如上面的利用@Bean往容器中添加一個User組件,在xml中我們不僅能夠往容器中添加一個bean而且還能設置lazy-init、scope的屬性,這些屬性在注解里面可以這樣使用@Lazy

@Scope(ConfigurableBeanFactory.SCOPE_SINGLETON)????@Bean

public?User?user(){????????return?new?User("lisi",18);

}

等同于

@Component、@Configuration、@Controller、@Service、@Repository

其實在web開發中我們最常用的組件是@Component、@Configuration、@Controller、@Service、@Repository這幾個注解都有一個作用,往容器中添加一個組件他們都是@Component組合注解,他們標注在類上面,表示往spring容器中添加一個組件,@Controller用來標注在Controller上面,@Service用來標注Service層上面,@Repository用來標注在持久層上面,@Configuration用來標注在配置類上,@Component用來標注在其他組件上面。

@RequestMapping

在SpringMVC中還有個重要的注解@RequestMapping,它是用來做地址映射的,就是說,我們一個請求,該如何映射到我們的方法上面。它可用于類或方法上,用于類上,表示類中的所有響應請求的方法都是以該地址作為父路徑。RequestMapping注解有六個屬性,其中常用的有value, method、非常用的有params,headers、consumes,produces,value:指定請求的實際地址,method: ?指定請求的method類型, GET、POST、PUT、DELETE等(符合Rest風格);params: 指定request中必須包含某些參數值是,才讓該方法處理。headers: 指定request中必須包含某些指定的header值,才能讓該方法處理請求。consumes: 指定處理請求的提交內容類型(Content-Type),例如application/json, text/html;produces: 指定返回的內容類型,僅當request請求頭中的(Accept)類型中包含該指定類型才返回,例子:package?com.itbofeng.controller;import?org.springframework.stereotype.Controller;import?org.springframework.web.bind.annotation.RequestMapping;import?org.springframework.web.bind.annotation.RequestMethod;

@Controllerpublic?class?UserController?{

@RequestMapping(value?=?"/hello",method?=?RequestMethod.GET)

public?String?hello(){????????return?"hello";

}

}

@ResponseBody

如果我們配置了視圖解析器ViewResolver,如果我們訪問 localhost:8080/hello還并不能夠返回hello,其會返回視圖解析器的前綴+hello+后綴的頁面,如果我們想要其向瀏覽器返回hello內容,則需要@ResponseBody注解,該注解就是將返回值直接返回給瀏覽器,如果返回值是一個對象,則會返回該對象的json對象,其可以標注在方法上表示該方法返回遵守該規則,也可以標注在類上,表示該類下的所有方法都遵守該規則。用法如下:@ResponseBody

@RequestMapping(value?=?"/hello",method?=?RequestMethod.GET)????public?String?hello(){????????return?"hello";

}

@RestController

@RestController=@Controller+@ResponseBody

@PathVariable、@RequestParam

@PathVariable 路徑變量,主要是將路徑中的值映射為變量(Rest編程風格推薦),

@RequestParam 請求參數,主要是獲取請求中的參數

下面我們舉例說明:

地址① http://localhost:8080/hello?name=lisi

地址② http://localhost:8080/hello/lisi

我們通過兩種方式來獲取變量請求中的lisi,

@RequestParam 方式@ResponseBody

@RequestMapping(value?=?"/hello",method?=?RequestMethod.GET)????public?String?hello(@RequestParam("name")?String?name){????????return?"hello?"+name;

}

@PathVariable 方式@ResponseBody

@RequestMapping(value?=?"/hello/{name}",method?=?RequestMethod.GET)????public?String?hello(@PathVariable("name")?String?name){????????return?"hello?"+name;

}

注意:請求路徑的變化

今天注解部分就先將到這里,后面我們在學習過程中學到什么,再具體講解其用法,關于這些注解的在什么時候起作用的呢,需要我們學習了Spring的運行流程之后,才能進一步的進行深入了解,下一節,我們學習一下往容器中添加Bean的幾種方式。

作者:愛編程的帥小伙

鏈接:https://www.jianshu.com/p/12b607e29255

總結

以上是生活随笔為你收集整理的Java注解配置rest服务_Spring Boot 注解—常用注解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。