Spring框架學習筆記(5)——Spring Boot建立與使用

Spring Boot能夠更爲方便地搭建一個Web系統,以後服務器上部署也較爲方便html

此篇有些細節未說起,我新寫了一篇Spring框架學習筆記(8)——spring boot+mybatis plus+mysql項目環境搭建來進行補充,能夠兩篇博文進行參考java

建立Spring boot項目

1. 使用IDEA建立項目mysql

2. 修改groupid和artifactweb

3.勾選相關庫 spring

這裏,能夠先不選mybatis和mysql,先搭建一個比較簡單的環境,sql

大概明白流程後,以後就能夠根據本身的需求來勾選相關的庫數據庫

4. 一路next,自動IDEA就會自動下載依賴的jar包json

5. 運行tomcat

以後運行項目(Application類),打開http://localhost:8080就會出現下面的白板頁面,說明已配置成功springboot

項目結構說明及使用

項目結構說明

咱們能夠看見項目中是這樣的結構,Spring boot內置了tomcat服務器,因此,咱們能夠直接經過application來啓動

SpringbootdemoApplication

package com.wan.springbootdemo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringbootdemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootdemoApplication.class, args);
    }
}

能夠看到SpringbootdemoApplication中的代碼比較簡單,使用了一個註解SpringBootApplication,用來標註當前類是Spring boot的入口類,以後經過SpringApplication.run啓動

SpringBootApplication註解中也是內置了幾個spring的註解,打開其中能夠看到

@SpringBootConfiguration 表示該類是一個配置類

@EnableAutoConfiguration 啓用自動配置,例如添加了spring-boot-starter-web依賴,會自動添加Tomcat和SpringMVC的依賴,SpringBoot會對Tomcat和SpringMVC進行自動配置.

@ComponentScan 能掃描當前包及其子包中的類 即com.lanqiao.springboot.tutorials包及其子包下的全部的組件類。

spring boot使用一個封裝的註解,把以前咱們得使用註解和配置文件去配置spring的步驟都省去了,springboot不只讓咱們的編碼是輕量級的,並且也把咱們的配置變成了輕量級

控制器使用

以前使用springmvc框架,咱們寫一個controller,得在配置文件中開啓自動掃描,而後controller類中使用controller註解進行標明,而使用spring boot則不須要這麼繁瑣,只須要標註上一個@RestController註解便可

註解RestController包含了Controller和ResponseBody,返回的實體類或者List都會轉爲json數據

這裏可使用spring boot中的註解,也可使用spring mvc的註解RequestMappingResponseBody

package com.wan.springbootdemo.controller;

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

/**
 * @author StarsOne
 * @date Create in  2019/10/17 0017 18:24
 * @description
 */
@RestController
public class UserController {
    @RequestMapping("user/data")
    public String getData() {
        return "this is returning data";
    }
}

而後經過訪問localhost:8080/user/data就能夠看到返回的數據

修改context項目地址

上面的項目接口中,咱們能夠看到一個名爲application.properties的文件,裏面能夠用來進行一些設置,如context上下文,port端口號

補充:spring boot中除了使用properties這種文件進行配置,還可使用yml文件

我在其中添加了下面的代碼,就是用來設置context

server.servlet.context-path=/springbootdemo

以後上面的controller的訪問地址就會變爲了localhost:8080/springbootdemo/user/data

去除spring boot啓動圖標

啓動的時候,命令行會出現一個Spring Boot的頁面

不知道爲何,我這裏啓動的圖標怎麼看都不像Spring Boot。。

咱們想要去除這個圖標,能夠修改application中的啓動方式來達到目的

package com.wan.springbootdemo;

import org.springframework.boot.Banner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringbootdemoApplication {

    public static void main(String[] args) {
        SpringApplication springApplication = new SpringApplication(SpringbootdemoApplication.class);
        // 去除啓動控制檯Spring Boot的圖標
        springApplication.setBannerMode(Banner.Mode.OFF);
        springApplication.run(args);

    }

}

熱部署

想要實現修改文件,而不想要重啓application,能夠進行熱部署設置,設置很簡單,只須要添加下面的這個依賴便可(以前建立項目的時候其實已經添加了此依賴

<!-- 自動加載SpringBoot的更改 無需重啓引導類 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional>
</dependency>

可能還須要進行下面的運行配置:

整合MyBatis

1.添加依賴

<!-- 使用mybatis鏈接池,以後須要配置驅動-->
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--mybatis驅動-->
<dependency>
	<groupId>org.mybatis.spring.boot</groupId>
	<artifactId>mybatis-spring-boot-starter</artifactId>
	<version>2.1.0</version>
</dependency>

2.創表、創實體類和mapper

創表和建立實體類,還有建立對應的mapper.xml和mapper.java文件

這裏須要注意,mapper接口文件須要加上註解@Repository,須要spring進行管理,以後咱們須要一個對應的Service.java,包含着mapper接口,使用spring把mapper自動裝載

package com.wan.mofang.service;
import com.wan.mofang.mapper.UserMapper;
import com.wan.mofang.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * @author StarsOne
 * @date Create in  2019/10/28 0028 22:46
 * @description
 */
@Service
public class UserService {
    @Autowired
    UserMapper userMapper;//自動裝載的對象
	
    public List<User> selectAll(User user) {
        return userMapper.selectAll(user);
    }
}

UserController.java

package com.wan.mofang.controller;

import com.wan.mofang.model.User;
import com.wan.mofang.service.UserService;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * @author StarsOne
 * @date Create in  2019/10/28 0028 22:54
 * @description
 */
@RestController
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;//自動裝載

    @RequestMapping("selectAll")
    public List<User> selectAll(User user) {
        return userService.selectAll(user);
    }
	
	
}

PS:這裏,須要注意的,若是是傳入一個實體類,url傳入的參數名要與User中的成員變量名一致,若是是String類型或者是Int類型,則url傳入的參數則與參數名對應

若有下面的一個controller裏面方法:

@RequestMapping("selectAll")
public List<User> selectAll(String username) {
	return userService.selectAll(user);
}

傳入的url爲url=xx?username=xx

3.修改配置文件

這裏使用yml來配置,固然,使用properties文件也能夠,根據實際狀況,進行修改(修改application-dev.yml)

application.yml

spring:
  profiles:
    active: dev

application-dev.yml

server:
  port: 端口號,默認不寫就是8080
  servlet:
    context-path: 項目上下文
spring:
  datasource:
    username: 數據庫用戶名
    password: 數據庫密碼
    url: 數據庫地址
    driver-class-name: 直接打mysql會有提示
mybatis:
  mapper-locations: classpath:mapping/*Mapper.xml
  type-aliases-package: 好像配置了別名沒有啓動做用
#showSql
logging:
  level:
    com:
      example:
        mapper : debug

PS:這裏yml文件須要注意格式,冒號後須要一個空格

4.開啓自動掃描

在Spring Boot啓動類使用註解MapperScan,參數爲mapper.java文件所在的包,就會自動掃描並生成mapper的bean對象

package com.wan.mofang;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@MapperScan("com.wan.mofang.mapper")
@SpringBootApplication
public class MofangApplication {

    public static void main(String[] args) {
        SpringApplication.run(MofangApplication.class, args);
    }

}

簡單來講,就是在yml配置文件中配置Mapper.xml文件所在的目錄(resources),在入口類Application中配置mapper.java文件所在的目錄(包名)

Junit測試

直接建立一個入口類的對應的Test,以後使用上註解SpringBootTest,指定入口類,以後,須要的文件使用註解Autowired進行自動裝載,

@SpringBootTest(classes = MofangApplication.class)
class MofangApplicationTests {
    @Autowired
    UserService userService;
	
	@Test
	void testSelectALl(){
		List<User> user = userService.selectALl();
		...
	}
	
}
相關文章
相關標籤/搜索