• Springboot属性注入


    本文大概1000字,阅读大概需要5分钟

    **

    一、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 +
                    '}';
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81

    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;
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    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
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

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

    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);
        }
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    我们运行这个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>
    
    • 1
    • 2
    • 3
    • 4

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

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

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

  • 相关阅读:
    作为一名31岁的软件测试员,工作3年,月薪不到2W,担心被应届生取代
    如何进行销售漏斗管理?
    从零到一,教你搭建「以文搜图」搜索服务(一)
    Java基础之《netty(5)—NIO之Selector》
    spring-boot 单元测试 faq2
    Dubbo(十) dubbo服务超时时间设置以及优先级
    在WPF中使用WriteableBitmap对接工业相机及常用操作
    return 关键字
    Educational Codeforces Round 135 (Rated for Div. 2)
    作业2 计算文件长度和行数
  • 原文地址:https://blog.csdn.net/weixin_44103733/article/details/126656724