前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring Boot 简单入门

Spring Boot 简单入门

作者头像
YingJoy_
发布2018-09-14 17:26:50
6100
发布2018-09-14 17:26:50
举报
文章被收录于专栏:应兆康的专栏应兆康的专栏

SpringBoot

1. Hello World

代码语言:javascript
复制
@RestController
public class HelloController {

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

2. 运行方式

  1. 直接运行Application
  2. mvn spring-boot:run
  3. mvn install cd target java -jar xxx-0.0.1-SNAPSHOT

3. 项目属性配置

在resources/application.properties中写入配置

端口

server.port=5000

网站访问前缀

server.servlet.context-path=/front

eg: http://127.0.0.1:5000/front/hello

配置文件还可以是application.yml

代码语言:javascript
复制
server:
  port: 5000
  servlet:
    context-path: /front

获取配置文件内容

age: 18

代码语言:javascript
复制
@Value("${age}")
private Integer age;

配置进行分组

代码语言:javascript
复制
girl:
  gradeNum: B
  age: 18

  content: "gradeNum: ${girl.gradeNum}, age: ${girl.age}"

这里再创建一个类GirlProperties

代码语言:javascript
复制
@Component
@ConfigurationProperties(prefix = "girl")
public class GirlProperties {

    private String gradeNum;
    private Integer age;
    private String content;

    getter setter省略
}

@Autowired
private GirlProperties girlProperties;

配置不同环境下使用的配置文件(开发环境/生产环境)

创建新的application-xxx.yml

application.yml的内容: spring: profiles: active: xxx

当使用java -jar 运行时,可以添加参数选择配置文件 java -jar xxx-0.0.1-SNAPSHOT –spring.profiles.active=xxx

4. Controller的使用

@Controller 处理HTTP请求 @RestController Spring4新增的注解,原来返回json,等同于@ResponseBody加上@Controller @RequestMapping 配置URL映射

@Controller需要配合模板使用 使用Sring官方模板

代码语言:javascript
复制
<dependency>
    <groupId>org.springframe.boot</groupId>
    <artifactId>sprint-boot-starter-thymeleaf</artifactId>
</dependency>

然后在resources/templates下创建模板文件 假设创建一个名为index.html的文件 然后在映射函数中return “index”即可

由于一般开发为前后端分离,所以不推荐使用模板,模板对性能损耗也大。

@RequestMapping多URL映射 使用集合

代码语言:javascript
复制
@RequestMapping(value = {"/hello", "/hi"}, method = RequestMethod.GET)

还可以给整个类设置URL

代码语言:javascript
复制
@RestController
@RequestMapping("/hello")
public class HelloController {


    @Autowired
    private GirlProperties girlProperties;

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

最后访问:http://127.0.0.1:5000/hello/say

如果@RequestMapping不加method,则所有方法均可访问,多方式访问使用集合

如何处理URL的参数

@PathVariable 获取URL中的数据 @RequestParam 获取请求参数的值 @GetMapping 组合注解

代码语言:javascript
复制
@RequestMapping(value = "/say/{id}", method = {RequestMethod.POST, RequestMethod.GET})
public String say(@PathVariable("id") Integer id) {
    return "Hello "+ id;
}
http://127.0.0.1:5000/hello/say/1
这个方法不传id会显示404

@RequestMapping(value = "/say", method = {RequestMethod.POST, RequestMethod.GET})
public String say(@RequestParam("id") Integer id) {
    return "Hello "+ id;
}
http://127.0.0.1:5000/hello/say?id=1
//这个方法如果不传id会显示null

@RequestMapping(value = "/say", method = {RequestMethod.POST, RequestMethod.GET})
public String say(@RequestParam(name = "id", required = false, defaultValue = "0") Integer id) {
    return "Hello "+ id;
}
//这个方法可以设置默认值(defaultValue),是否必须传这个值(required)

@GetMapping @PostMapping @PutMapping @DeleteMapping 这些组合注解可以指定Mapping的方法

数据库的操作

Spring-Data-Jpa

JPA(Java Persistence API)定义了一系列对象持久化的标准,目前实现这一规范的产品有Hibernate、TopLink等。

RESTful API设计 GET /girls 获取女生列表 POST /girls 创建一个女生 GET /girls/id 通过id查找一个女生 PUT /girls/id 通过id更新一个女生 DELETE /girls/id 通过id删除一个女生

添加依赖

代码语言:javascript
复制
<!--jpa-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

<!--mysql-connector-->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

配置jpa和mysql

编写接口继承JpaRepository

代码语言:javascript
复制
public interface GirlRepository extends JpaRepository<Girl, Integer> {

    // 通过年龄查询
    public List<Girl> findByAge(Integer age);
}

进行CRUD

代码语言:javascript
复制
package com.yingjoy.demo.controller;

import com.yingjoy.demo.Girl;
import com.yingjoy.demo.GirlRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
public class GirlController {

    @Autowired
    private GirlRepository girlRepository;

    /**
     * 查询女生列表
     */
    @GetMapping(value = "/girls")
    public List<Girl> girlList() {
        return girlRepository.findAll();
    }

    /**
     * 新增女生
     */
    @PostMapping(value = "/girls")
    public Girl girlAdd(@RequestParam("gradeNum") String gradeNum,
                        @RequestParam("age") Integer age) {
        Girl girl = new Girl();
        girl.setgradeNum(gradeNum);
        girl.setAge(age);

        return girlRepository.save(girl);
    }

    /**
     * 查询女生
     */
    @GetMapping(value = "/girls/{id}")
    public Girl girlFindOne(@PathVariable("id") Integer id) {
        return girlRepository.findById(id).get();
    }

    /**
     * 更新女生
     */
    @PutMapping(value = "/girls/{id}")
    public Girl girlUpdate(@PathVariable("id") Integer id,
                           @RequestParam("gradeNum") String gradeNum,
                           @RequestParam("age") Integer age) {
        Girl girl = girlRepository.findById(id).get();
        girl.setId(id);
        girl.setgradeNum(gradeNum);
        girl.setAge(age);
        return girlRepository.save(girl);
    }

    /**
     * 删除女生
     */
    @DeleteMapping(value = "/girls/{id}")
    public void girlDelete(@PathVariable("id") Integer id) {
        Girl girl = girlRepository.findById(id).get();
        girlRepository.delete(girl);
    }

    /**
     * 按照年龄查询
     */
    @GetMapping("/girls/a/{age}")
    public List<Girl> girlFindByAge(@PathVariable("age") Integer age) {
        return girlRepository.findByAge(age);
    }

}

注:put方法需要使用x-www-form-urlencoded传递数据,不能使用form-data

事务管理

@Transactional 注释可以把方法变成事务

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SpringBoot
    • 1. Hello World
      • 2. 运行方式
        • 3. 项目属性配置
          • 获取配置文件内容
          • 配置进行分组
          • 配置不同环境下使用的配置文件(开发环境/生产环境)
      • 端口
      • 网站访问前缀
        • 4. Controller的使用
          • 如何处理URL的参数
        • 数据库的操作
          • Spring-Data-Jpa
        • 事务管理
        相关产品与服务
        Serverless HTTP 服务
        Serverless HTTP 服务基于腾讯云 API 网关 和 Web Cloud Function(以下简称“Web Function”)建站云函数(云函数的一种类型)的产品能力,可以支持各种类型的 HTTP 服务开发,实现了 Serverless 与 Web 服务最优雅的结合。用户可以快速构建 Web 原生框架,把本地的 Express、Koa、Nextjs、Nuxtjs 等框架项目快速迁移到云端,同时也支持 Wordpress、Discuz Q 等现有应用模版一键快速创建。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档