Spring boot 學習(前篇)

一贬堵、準備工作

環(huán)境:

jdk: jdk1.8
maven: maven3.39
Maven項目對象模型(POM),可以通過一小段描述信息來管理項目的構(gòu)建蒸殿,報告和文檔的軟件項目管理工具
http://maven.apache.org/download.cgi
安裝:http://jingyan.baidu.com/article/20095761bd195ecb0621b465.html

image.png

IDEA
http://www.jetbrains.com/idea/

image.png

二、新建一個項目HelloSpringBoot

image.png
image.png
image.png
image.png

關于Maven詳解
.Maven的作用
在開發(fā)中,為了保證編譯通過惰爬,我們會到處去尋找jar包,當編譯通過了风范,運行的時候硼婿,卻發(fā)現(xiàn)"ClassNotFoundException",我們想到的是州胳,難道還差jar包?
每個Java項目的目錄結(jié)構(gòu)都沒有一個統(tǒng)一的標準瓤湘,配置文件到處都是弛说,單元測試代碼到底應該放在那里也沒有一個權威的規(guī)范。
因此虎囚,我們就要用到Maven(使用Ant也可以圃伶,不過編寫Ant的xml腳本比較麻煩)----一個項目管理工具。
Maven主要做了兩件事:
統(tǒng)一開發(fā)規(guī)范與工具
統(tǒng)一管理jar包

image.png
image.png
image.png

第一種啟動方式:

image.png

真慢榔至。铅鲤。

image.png

訪問http://localhost:8080/
因為什么頁面都沒寫,所以是返回404

image.png

新建一個類HelloController

image.png
image.png
@RestController
public class HelloController {
    @RequestMapping(value = "/hello" , method = RequestMethod.GET)
    public String say(){
        return "Hello Spring Boot!";
    }
}

訪問http://localhost:8080/hello
image.png
第二種啟動方式

進入到項目目錄

mvn spring-boot:run
image.png
第三種啟動方式
image.png
//先編譯下環(huán)境
mvn install
image.png
cd target
java -jar test-0.0.1-SNAPSHOT.jar
image.png
image.png

三、屬性配置

application.properties
修改下端口和訪問路徑

server.port=8081
server.context-path=/test
image.png

啟動:

image.png

訪問:http://localhost:8081/test/hello

image.png

使用yml文件配置
yml簡介
YML文件格式是YAML (YAML Aint Markup Language)編寫的文件格式座掘,YAML是一種直觀的能夠被電腦識別的的數(shù)據(jù)數(shù)據(jù)序列化格式溢陪,并且容易被人類閱讀杉编,容易和腳本語言交互的邓馒,可以被支持YAML庫的不同的編程語言程序?qū)耄热纾?C/C++, Ruby, Python, Java, Perl, C#, PHP等救军。

其他比較
http://www.cnblogs.com/songchaoke/p/3376323.html

application.yml
設置端口號改為:8082戳寸,區(qū)分下疫鹊。

server:
  port: 8082
  context-path: /test
image.png

刪除application.properties
訪問http://localhost:8082/test/hello

image.png

配置一個參數(shù) cupSize:

image.png
server:
  port: 8082
  context-path: /test
  cupSize: B

在HelloController.java 中獲取到蚌吸。

image.png
@RestController
public class HelloController {
    @Value("${cupSize}")
    private String cupSize;

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

報錯:
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'cupSize' in value "${cupSize}"

image.png

修改代碼:

image.png
@Value("${server.cupSize}")
    public String cupSize;

運行http://localhost:8082/test/hello

image.png

content

image.png
server:
  port: 8082
  context-path: /test
  cupSize: B
  age: 18
  content: "cupSize: ${server.cupSize},age: ${server.age}"
@RestController
public class HelloController {
    @Value("${server.cupSize}")
    public String cupSize;

    @Value("${server.age}")
    public Integer age;

    @Value("${server.content}")
    public String content;



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

訪問http://localhost:8082/test/hello

image.png
多項注入?yún)?shù)

image.png

application.yml

  server:
    port: 8082
    context-path: /test
  girl:
    cupSize: B
    age: 18
新建配置類 GirlProperties.java
@Component
@ConfigurationProperties(prefix = "girl")
public class GirlProperties {
    private String cupSize;
    private Integer age;

    public void setCupSize(String cupSize) {
        this.cupSize = cupSize;
    }

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

    public String getCupSize() {
        return cupSize;
    }

    public Integer getAge() {
        return age;
    }
}

ps:
簡化配置文件的讀取:
@value
[http://www.cnblogs.com/BensonHe/p/3963940.html]
分組獲裙惹场:
@Component作用
http://www.cnblogs.com/savage-ce/p/5667596.html
@ConfigurationProperties
@Autowired

HelloController.java

@RestController
public class HelloController {
  /*  @Value("${server.cupSize}")
    public String cupSize;

    @Value("${server.age}")
    public Integer age;

    @Value("${server.content}")
    public String content;
*/

  @Autowired
  private GirlProperties girlProperties;


    @RequestMapping(value = "/hello" , method = RequestMethod.GET)
    public String say(){
        return girlProperties.getCupSize();
    }
}

運行結(jié)果:

image.png
多個配置文件application.yml轉(zhuǎn)換

application.yml

image.png
  spring:
    profiles:
      active: dev

application-dev.yml

  server:
    port: 8082
    context-path: /test
  girl:
    cupSize: B
    age: 18

application-prod.yml

  server:
    port: 8081
    context-path: /test
  girl:
    cupSize: F
    age: 18

運行:http://localhost:8082/test/hello

image.png

修改 :application.yml

  spring:
    profiles:
      active: prod

訪問:http://localhost:8081/test/hello

image.png
同時啟動不同配置下的服務

啟動application-prod.yml配置環(huán)境

//cd test項目目錄下
mvn install
java -jar target/test-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod
java -jar target/test-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev

可以嘗試啟動下墩邀,注意端口不要被占用。

知識點:


image.png

四竹海、Controller的使用

image.png

@Controller
@ResponseBody
等同于
@RestController

分別訪問"/hello","/hi" 后綴得到相同結(jié)果。
@RequestMapping(value = {"/hello","/hi"} , method = RequestMethod.GET)

訪問:http://localhost:8081/test/hi

image.png

@RequestMapping("/hi")

@Controller
@ResponseBody
@RequestMapping("/hi")
public class HelloController {
  @Autowired
  private GirlProperties girlProperties;


    @RequestMapping(value = "/say" , method = RequestMethod.GET)
    public String say(){
        return girlProperties.getCupSize();
    }
}
image.png

我們也可以看到啟動項中已經(jīng)標明訪問路徑:

image.png

訪問:http://localhost:8081/test/hi/say

image.png

method = RequestMethod.POST 可以下載個postman 試試

注解參數(shù)
image.png
@PathVariable
 @RequestMapping(value = "/say/{id}" , method = RequestMethod.GET)
    public String say(@PathVariable("id") Integer id){
        return "id : " + id;
    }
image.png

訪問:http://localhost:8081/test/hi/say/11

image.png

訪問:http://localhost:8081/test/hi/say/xxx
報錯园细!

image.png

同理:

@RequestMapping(value = "/{id}/say" , method = RequestMethod.GET)

前后輸入效果一樣的

@RequestParam
 @RequestMapping(value = "/say" , method = RequestMethod.GET)
    public String say(@RequestParam("id") Integer myid){
        return "id : " + myid;
    }
image.png

訪問:http://localhost:8081/test/hi/say?idd=111

image.png

訪問:http://localhost:8081/test/hi/say?idd=

image.png

修改代碼:

 @RequestMapping(value = "/say" , method = RequestMethod.GET)
    public String say(@RequestParam(value="id",required = false,defaultValue = "0") Integer myid){
        return "idd : " + myid;
    }
image.png

不寫參數(shù)默認是 0


image.png

此外:(同理POST)

@RequestMapping(value = "/say" , method = RequestMethod.GET)
//可簡化成:
@GetMapping(value = "/say")

參考資料:http://www.imooc.com/video/13592

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市接校,隨后出現(xiàn)的幾起案子猛频,更是在濱河造成了極大的恐慌,老刑警劉巖蛛勉,帶你破解...
    沈念sama閱讀 216,744評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異诽凌,居然都是意外死亡毡熏,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評論 3 392
  • 文/潘曉璐 我一進店門侣诵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來痢法,“玉大人,你說我怎么就攤上這事杜顺〔聘椋” “怎么了?”我有些...
    開封第一講書人閱讀 163,105評論 0 353
  • 文/不壞的土叔 我叫張陵躬络,是天一觀的道長尖奔。 經(jīng)常有香客問我,道長穷当,這世上最難降的妖魔是什么提茁? 我笑而不...
    開封第一講書人閱讀 58,242評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮馁菜,結(jié)果婚禮上茴扁,老公的妹妹穿的比我還像新娘。我一直安慰自己火邓,他們只是感情好丹弱,可當我...
    茶點故事閱讀 67,269評論 6 389
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著铲咨,像睡著了一般躲胳。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上纤勒,一...
    開封第一講書人閱讀 51,215評論 1 299
  • 那天坯苹,我揣著相機與錄音,去河邊找鬼摇天。 笑死粹湃,一個胖子當著我的面吹牛恐仑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播为鳄,決...
    沈念sama閱讀 40,096評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼裳仆,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了孤钦?” 一聲冷哼從身側(cè)響起歧斟,我...
    開封第一講書人閱讀 38,939評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎偏形,沒想到半個月后静袖,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,354評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡俊扭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,573評論 2 333
  • 正文 我和宋清朗相戀三年队橙,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片萨惑。...
    茶點故事閱讀 39,745評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡捐康,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出咒钟,到底是詐尸還是另有隱情吹由,我是刑警寧澤,帶...
    沈念sama閱讀 35,448評論 5 344
  • 正文 年R本政府宣布朱嘴,位于F島的核電站倾鲫,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏萍嬉。R本人自食惡果不足惜乌昔,卻給世界環(huán)境...
    茶點故事閱讀 41,048評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望壤追。 院中可真熱鬧磕道,春花似錦、人聲如沸行冰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽悼做。三九已至疯特,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間肛走,已是汗流浹背漓雅。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人邻吞。 一個月前我還...
    沈念sama閱讀 47,776評論 2 369
  • 正文 我出身青樓组题,卻偏偏與公主長得像,于是被迫代替她去往敵國和親抱冷。 傳聞我的和親對象是個殘疾皇子崔列,可洞房花燭夜當晚...
    茶點故事閱讀 44,652評論 2 354

推薦閱讀更多精彩內(nèi)容