《Spring Boot 从入门到精通》第四章-综合练习

50 阅读3分钟

综合练习1:将配置文件中的信息封装成学生对象请读者按照如下思路和步骤编写程序。

(1)创建一个Spring Boot项目,在application.properties文件中存储一个学生的完整信息。

(2)创建一个名为configure的学生信息的实体类,该类对配置文件中的配置信息做了封装。其中,“特长”被封装为List类型,“成绩”被封装为Map类型,“联系方式”则使用内部类予以封装。

(3)通过@ConfigurationProperties注解将configure类与application.properties文件中配置信息的前缀做了映射,并把实体类对象注册成Bean。

(4)创建一个名为StudentController的控制器类,该类注入了学生实体类对象,并在处理URL请求的方法中将学生的所有信息显示在浏览器的页面中。

(5)启动项目后,打开浏览器访问http://127.0.0.1: 8080/student地址,可以看到配置文件中存储的学生信息。

application.properties

com.people.array[0]=swim
com.people.array[1]=music

com.people.age=21
com.people.name=tjr

com.people.map[math]=91
com.people.map[chinese]=95
com.people.map[english]=86

com.people.inner.PhoneNumber=17775660516
com.people.inner.QQNumber=2715411135
com.people.inner.Email=2715411135@qq.com

StudentController


@RestController("/")
public class StudentController {
    @Autowired
    configure cf;
    StringBuilder sb = new StringBuilder();
    @RequestMapping("/student/")
    public String configinfo(){

        sb.append(Arrays.toString(cf.getArray()));
        sb.append(cf.getAge());
        sb.append(cf.getName());
        sb.append(cf.getMap().get("math"));
        sb.append(cf.getMap().get("chinese"));
        sb.append(cf.getMap().get("english"));

        sb.append(cf.getInner().getPhoneNumber());
        sb.append(cf.getInner().getEmail());
        sb.append(cf.getInner().getQQNumber());

        return sb.toString();
    }

}

configure

@Component
@ConfigurationProperties(value = "com.people")
public class configure {

    private String age;
    private String name;

    public String getAge() {
        return age;
    }
    public void setAge(String age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    Map<String, String> map;

    public Map<String, String> getMap() {
        return map;
    }
    public void setMap(Map<String, String> map) {
        this.map = map;
    }

    public class innerClass {
        private String PhoneNumber;
        private String QQNumber;
        private String Email;
        public String getPhoneNumber() {
            return PhoneNumber;
        }
        public void setPhoneNumber(String PhoneNumber) {
            this.PhoneNumber = PhoneNumber;
        }
        public String getQQNumber() {
            return QQNumber;
        }
        public void setQQNumber(String QQNumber) {
            this.QQNumber = QQNumber;
        }
        public String getEmail() {
            return Email;
        }
        public void setEmail(String Email) {
            this.Email = Email;
        }
    }

    private innerClass inner = new innerClass();

    public innerClass getInner() {
        return inner;
    }

    public void setInner(innerClass inner) {
        this.inner = inner;
    }

    private String[] array;
    public String[] getArray() {
        return array;
    }
    public void setArray(String[] array) {
        this.array = array;
    }

}

综合练习2:读取自定义配置文件中的静态数据请读者按照如下思路和步骤编写程序。

(1)创建一个Spring Boot项目。

(2)在src/main/resources目录下,除了application. properties文件外,再创建两个自定义配置文件:people.properties文件用于存储人员信息的静态数据;user.properties文件用于存储用户账户的静态数据。在启动类中加载这两个自定义配置文件。

(3)创建一个名为PropertySourceController的控制器类,该类注入环境组件对象。当用户访问“/env”地址时,程序会读取请求中的name参数值,并将其显示在浏览器的页面上。

(4)启动项目后,打开浏览器依次访问http://127.0.0.1:8080/env和http://127.0.0.1:8080/env?name=这两个地址

5)在浏览器中继续访问http://127.0.0.1:8080/env?name=people.name地址,程序会读取到people.properties配置文件中的配置信息people.name的值,并将其显示在浏览器的页面上

(6)在浏览器中继续访问 http://127.0.0.1:8080/env?name=com.mr.usermame 地址,程序会读取到user.properties配置文件中的配置信息com.mr.usermame的值,并将其显示在浏览器的页面上

使用@RequstMapping 注解可以用来映射URL地址,URL地址相同时,参数不同,视为不同的URL地址。

@Autowired
Environment env;

@RequestMapping(value = "/env/",params = {"name"})
@ResponseBody
public String env(String name){

    if("people.name".equals(name)){
        return "people.name = " + env.getProperty("people.name");
    }
    else if("com.mr.username".equals(name)){
        return "com.mr.username = " + env.getProperty("com.mr.username");
    }
    else {
        return "params.name = " + name;
    }
}
@RequestMapping(value = "/env/")
@ResponseBody
public String env(){
    return "there are no params";
}