Springboot属性注入及快速开发web CRUD

前言

在Spring Boot的广阔生态中,属性注入与Web开发是两个至关重要的领域。本指南将引领您深入探索Spring Boot的属性注入机制,从基础的概念理解到实际应用中的多种方法,帮助您轻松实现配置信息的动态管理。此外,我们还将聚焦Spring Boot在Web开发中的快速实现能力,特别是通过SpringMVC框架的整合,展示如何以最小化的配置快速搭建起功能完备的Web应用。无论您是Spring Boot的新手,还是希望提升开发效率的资深开发者,本指南都将为您提供丰富的实战经验和深入的技术解析,助您在Spring Boot的旅途中更加游刃有余。

1、springboot属性注入

1.1 属性注入

如下图新建beans文件夹,并且新建User类和Address类:
在这里插入图片描述

写入如下代码:
User类:

package com.example.demo.beans;
import org.springframework.boot.context.properties.ConfigurationProperties;
import java.util.Date;
import java.util.List;
import java.util.Map;
import org.springframework.stereotype.Component;

@Component
// @ConfigurationProperties 常用于bean属性和配置文件的绑定,通过prefix可以指定配置文件中某一个节点,该节点中的子节点将自动和属性绑定
@ConfigurationProperties(prefix="user")
public class User {
    //  可以通过@Value + SPEL 直接绑定springboot配置文件中的值 或者 直接写prefix="user"就不用一个个配置了。
    // @Value("${user.username}")
    private String username;
    private Integer age;
    private Date birthday;
    private List<String> hobbies;
    private Map<Integer, String> girlFriend;
    private Address address;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public Integer getAge() {
        return age;
    }

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

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public List<String> getHobbies() {
        return hobbies;
    }

    public void setHobbies(List<String> hobbies) {
        this.hobbies = hobbies;
    }

    public Map<Integer, String> getGirlFriend() {
        return girlFriend;
    }

    public void setGirlFriend(Map<Integer, String> girlFriend) {
        this.girlFriend = girlFriend;
    }

    public Address getAddress() {
        return address;
    }

    public void setAddress(Address address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "User{" +
                "username='" + username + '\'' +
                ", age=" + age +
                ", birthday=" + birthday +
                ", hobbies=" + hobbies +
                ", girlFriend=" + girlFriend +
                ", address=" + address +
                '}';
    }
}


Address类:

package com.example.demo.beans;

public class Address {
    private Integer id;
    private String desc;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }
}


application.properties写入:

server.port = 8088
spring.profiles.active = dev
user.username = Jack
user.age = 18
user.birthday = 2004/01/01
user.hobbies[0] = code
user.hobbies[1] = singsong
user.girlFriend.18 = Jane
user.address.id = 1
user.address.desc = Amoy

如下图写入:
在这里插入图片描述

package com.example.demo;
import com.example.demo.beans.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class DemoApplicationTests {

    @Autowired
    private User user;

    @Test
    void contextLoads() {
        System.out.println(user);
    }

}

我们运行这个DemoApplicationTests效果如下:
在这里插入图片描述

1.2 更多使用方法

可以看到这边属性注入已经接收到了。
另外在application.properties中可以使用表达式${}去引用上面的值。
更多使用,以及随机值可以看Configuring Random Values


1.3 数据校验

数据校验

依赖:
pom.xml写入:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

在这里插入图片描述
NotNull选择Javax里的。

User类中注解:
在这里插入图片描述
运行报错就出来了不允许为空:
在这里插入图片描述


2、springboot快速开发web

可以参考这篇文章,进行快速初始化springboot web。

2.1、SpringMVC快速使用

java文件夹下的com.example.demo创建entity文件夹,并且创建User类,写入:

package com.example.demo.entity;

public class User {
    private Integer id;
    private String username;
    private String address;

    public Integer getId() { return id; }

    public void setId(Integer id) { this.id = id; }

    public String getUsername() { return username; }

    public void setUsername(String username) { this.username = username; }

    public String getAddress() { return address; }

    public void setAddress(String address) { this.address = address; }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", address='" + address + '\'' +
                '}';
    }

    public User(Integer id, String username, String address) {
        this.id = id;
        this.username = username;
        this.address = address;
    }

    public User() {

    }
}

我们先用map来映射查询关系,后续将改成MyBatis整合
java文件夹下的com.example.demo创建service文件夹,并且创建UserService类,写入:

package com.example.demo.service;
import com.example.demo.entity.User;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Component
public class UserService {
    private static Map<Integer, User> users = new HashMap<>();

    static {
        users.put(1, new User(1, "Jack", "Beijing"));
        users.put(2, new User(2, "Mary", "Beijing"));
        users.put(3, new User(3, "Jane", "Shanghai"));
        users.put(4, new User(4, "Michael", "Shanghai"));
    }

    /**
     * 根据id查询用户
     * @param id
     * @return
     */
    public User getUserById(Integer id) {
        return users.get(id);
    }

    /**
     * 根据id查询所有用户
     * @return
     */
    public List<User> getAllUser() {
        return new ArrayList(users.values());
    }

    /**
     * 更新用户
     * @param user
     * @return
     */
    public void update(User user) {
         users.replace(user.getId(), user);
    }

    /**
     * 新增用户
     * @param user
     * @return
     */
    public void add(User user) {
        Integer newId = users.size()+1;
        user.setId(newId);
        users.put(newId, user);
    }

    /**
     * 删除用户
     * @param user
     * @return
     */
    public void delete(Integer id) {
        users.keySet().removeIf(key -> key == id);
    }
}

java文件夹下的com.example.demo创建controller文件夹,并且创建UserController类,写入:

package com.example.demo.controllers;
import com.example.demo.entity.Result;
import com.example.demo.entity.User;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/user")
public class UserController {
    // Rest /user/1
    @Autowired
    UserService userService;

    // 查询 /user/1
    @GetMapping("/{id}")
    public Result getUser(@PathVariable Integer id) {
        System.out.println(id);
        User user = userService.getUserById(id);
        return new Result<>(200, "查询成功", user);
    }

    // 新增 /user/add
    @PostMapping("/add")
    public Result addUser(@RequestBody User user) {
        userService.add(user);
        return new Result<>(200, "添加成功");
    }

    // 修改 /user/1
    @PutMapping("/{id}")
    public Result editUser(@RequestBody User user) {
        userService.update(user);
        return new Result<>(200, "修改成功");
    }

    // 删除 /user/1
    @DeleteMapping("/{id}")
    public Result deleteUser(@PathVariable Integer id) {
        userService.delete(id);
        return new Result<>(200, "删除成功");
    }
}

测试效果:
在这里插入图片描述

在学习springboot的路上,如果你觉得本文对你有所帮助的话,那就请关注点赞评论三连吧,谢谢,你的肯定是我写博的另一个支持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你华还是你华

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值