前言
進(jìn)行web開發(fā)的時候Java程序員們難免會碰到那種很小的服務(wù)隔躲,比如就提供一個生成訂單號的接口店量,或者一個上傳文件的服務(wù)瞬捕。而這時我們再去使用SpringMVC這種體量稍大、配置繁瑣的框架開發(fā)難免會加大工作量惹骂,而且是不必要的魂拦。這個時候我們就可以選擇使用這個微服務(wù)框架——springboot進(jìn)行開發(fā)讨勤。
Spring Boot是由Pivotal團(tuán)隊提供的全新框架,其設(shè)計目的是用來簡化新Spring應(yīng)用的初始搭建以及開發(fā)過程晨另。該框架使用了特定的方式來進(jìn)行配置,從而使開發(fā)人員不再需要定義樣板化的配置谱姓。通過這種方式借尿,Spring Boot致力于在蓬勃發(fā)展的快速應(yīng)用開發(fā)領(lǐng)域(rapid application development)成為領(lǐng)導(dǎo)者。
springboot框架的搭建與簡單的REST風(fēng)格的MVC架構(gòu)demo
首先屉来,建立一個新的maven工程路翻,pom文件主要內(nèi)容如下:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.2.1.RELEASE</version>
<relativePath/>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
其中核心依賴是 spring-boot-starter-web
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
訪問靜態(tài)資源文件可以加入模板:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
編寫Application.java文件,存放于src/main/java這個目錄下
這里是springboot的核心啟動類
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Application{
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
事實上茄靠,這個時候已經(jīng)把框架搭建好了茂契,運行以上main方法即可啟動這個項目,但是我們現(xiàn)在看不到效果慨绳,接下來掉冶,就可以像SpringMVC一樣加入MVC三層結(jié)構(gòu)的代碼了,目錄結(jié)構(gòu)如下圖:
REST風(fēng)格的MVC架構(gòu)demo項目目錄結(jié)構(gòu)
其中各層代碼如下:
controller
package com.zhang.controller;
import java.util.HashMap;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import com.zhang.entity.Photo;
import com.zhang.service.mainService;
@RestController
@RequestMapping("/photo")
public class mainController {
@Autowired
private mainService mainservice;
@RequestMapping("/")
public ModelAndView index(ModelAndView mav){
mav.addObject("hello", "這是項目主頁脐雪,訪問根目錄到達(dá)~~");
mav.setViewName("index");
return mav;
}
@RequestMapping("/getPhoto")
public Object doIt(){
Map<String, Photo> map = new HashMap<String, Photo>();
map.put("photo", mainservice.getPhotoById(123));
return map;
}
}
service實現(xiàn)類
package com.zhang.service.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.zhang.dao.mainDao;
import com.zhang.entity.Photo;
import com.zhang.service.mainService;
@Service("mainservice")
public class mainServiceImpl implements mainService {
@Autowired
private mainDao maindao;
@Override
public Photo getPhotoById(int id) {
return maindao.getPhotoNameById(id);
}
}
dao實現(xiàn)類
package com.zhang.dao.impl;
import org.springframework.stereotype.Repository;
import com.zhang.dao.mainDao;
import com.zhang.entity.Photo;
@Repository("maindao")
public class mainDaoImpl implements mainDao {
@Override
public Photo getPhotoNameById(int id) {
Photo p = new Photo();
p.setId(123);
p.setName("雪山行紀(jì)念照");
return p;
}
}
實體類photo
package com.zhang.entity;
public class Photo {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
啟動項目
項目啟動日志
項目默認(rèn)端口為8080厌小,在瀏覽器中訪問剛才的controller會看到:
訪問結(jié)果