java后台管理系统学习项目day02--项目配置

目录

    • 1、spring的配置文件properties和yml
      • 1-1、properties文件
      • 1-2、yml文件
    • 2、spring的一些注解
      • 2-1、@RestController
        • 2-1-1、@RestController案例,新建一个controller类
        • 2-1-2、属性赋值动态实现

1、spring的配置文件properties和yml

1-1、properties文件

java后台管理系统学习项目day02--项目配置_第1张图片
还有一点该文件application.properties的名字不能修改,感兴趣的同学可以改一下试试,看看还起作用吗?

1-2、yml文件

选中resources文件,右键——>new——>file
java后台管理系统学习项目day02--项目配置_第2张图片
名字application.yml
java后台管理系统学习项目day02--项目配置_第3张图片
java后台管理系统学习项目day02--项目配置_第4张图片
还有一点,yml文件和pro文件虽然后缀不同,不要就认为他们可以同名,但是在java中是不允许同名的,这是一个很重要的规则,我这里为了演示所以写成同名的了,我后面的的讲解中是已经把pro文件改名使之失效了的

2、spring的一些注解

2-1、@RestController

该注解是@ResponseBody和@Controller共同组成,@Controller标记的类实际上就是个SpringMVC Controller对象,它是一个控制器类,@ResponseBody注解是将controller的方法返回的对象 通过适当的转换器 转换为指定的格式之后,写入到response对象的body区(响应体中),通常用来返回JSON数据,可以分开用,也可以直接用@RestController,但一般来说直接使用@RestController较多

2-1-1、@RestController案例,新建一个controller类

java后台管理系统学习项目day02--项目配置_第5张图片
类里写

package com.gt.controller;

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

/**
 * @RestController有一下几点作用
 * 1、将数据转换为JSON数据并呈现给页面
 * 2、将使用该注解的类交给spring容器管理
 * 3、springMvc调用该对象并接收用户请求
 */

@RestController
public class Countroller {

    @RequestMapping("/get1")
    public  String get1(){
        return "你好@RestController";
    }
}

然后启动该项目的启动类,
java后台管理系统学习项目day02--项目配置_第6张图片

在浏览器里输入localhost:8080/get1(端口号我们在yml已经设定好的,如果你用的pro文件默认的也是8080。。。@RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上)
java后台管理系统学习项目day02--项目配置_第7张图片
但是我们的数据是动态的,是通过属性进行赋值的,而不是写死的,也不利于扩展

2-1-2、属性赋值动态实现

一般某些只有后台特有的一些数据,可以将数据写到配置文件yml中,然后再为属性动态赋值,比如后台管理的用户名和密码,这个不是用户注册的,是特有的,

# yml文件的语法也是KV结构,但是和pro有所区别
# 写法:   key:(一定要有空格)value
# 字符集: 程序读取文件时,默认采用的是UTF-8
# yml是有层级结构的,一定一定需要注意缩进  比如以下代码
server:
  port: 8080  #这里同样的表示的也是端口号

# 进行命名时要指定前缀,因为比如username和password用的是最频繁的
# 属性名字,在数据库中也比较常用,所以最好加前缀进行区分,千万要注意空格
# 和缩进
mylove:
  username: root
  password: root

写好配置文件就可以进行动态赋值了,使用@Value注解,可以获取对应属性文件中定义的属性值。语法结构:@Value(“${key}”),key就是yml文件的语法key,然后在controller中继续写代码

package com.gt.controller;

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

/**
 * @RestController有一下几点作用
 * 1、将数据转换为JSON数据并呈现给页面
 * 2、将使用该注解的类交给spring容器管理
 * 3、springMvc调用该对象并接收用户请求
 */

@RestController
public class Countroller {

    /*@Value(${key})
    ${key}是有spring提供的springel表达式,我们习惯叫做spel表达式
     主要是在配置文件中获取key,然后为属性赋值
     */
    @Value("${mylove.username}")
    String username;
    @Value("${mylove.password}")
    String password;
    @RequestMapping("/get2")
    public String get2(){
        return "你好"+username+" "+password;
    }


    @RequestMapping("/get1")
    public  String get1(){
        return "你好@RestController";
    }

}

重新启动,在浏览器中输入http://localhost:8080/get2,

java后台管理系统学习项目day02--项目配置_第8张图片
讲这儿了,有个问题得说明一下,yml文件时属于springboot的核心配置文件,主要是整合第三方框架的,且属于系统配置文件,可能有点抽象,举个例:在咱们Windows系统中,某些系统配置文件当你要删除时它会提醒你,这个不能删除,删除了会影响某一项或者多项的操作,那这样可能会导致你的系统用着用着就用不了了,甚至某些系统配置文件你是直接无法删除的,因为一旦让你删除整个系统直接废掉,得重装系统。

所以由于咱们的yml文件中的mylove的usename和password属于业务数据,不是核心配置数据,如果我们把大量的业务数据写在yml文件中,会使得我们的耦合性大大增加,本来spring就是降低耦合性的,结果你还增加,是不符合规则的。因此业务数据我们要写在pro文件里。

由于之前application.properties文件被我修改成application1.properties失效了,所以现在spring为pro文件提供了解决方案,不管pro文件的名字怎么变,只要后缀是properties就行
java后台管理系统学习项目day02--项目配置_第9张图片
在pro文件中继续写

# 应用名称
spring.application.name=springboot_demo1
# 应用服务 WEB 访问端口
server.port=8080

# 1.文件语法
# 数据结构类型 :   k=v(key=value)
# 字符集编码 : 程序读取文件时,编码一般默认的都是采用ISO-8859-1(注意:程序读取和软件编辑的字符集是毫无关系的)
# 特别提醒: k需要写完整且不能缩进,而且也没有层次性,导致可读性较差(pro的弊端)

# pro文件不能写中文的,否则会乱码
mylove.username1=root1
mylove.password1=我爱你

然后接着在controller类中继续添加

package com.gt.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
* @RestController有一下几点作用
* 1、将数据转换为JSON数据并呈现给页面
* 2、将使用该注解的类交给spring容器管理
* 3、springMvc调用该对象并接收用户请求
*/

@RestController
@PropertySource("classpath:/application1.properties")
public class Countroller {
   /**
    * 解决失效的pro文件,让spring容器去管理
    * 方法:@PropertySource("/xxx.properties") 指定配置文件交给Spring
    *      容器管理
    */
   @Value("${mylove.username1}")
   private String username1;
   @Value("${mylove.password1}")
   private String password1;
   @RequestMapping("/get3")
   public String get3(){
       return "你好"+username1+" "+password1;
   }

   /*@Value(${key})
   ${key}是有spring提供的springel表达式,我们习惯叫做spel表达式
    主要是在配置文件中获取key,然后为属性赋值
    */
   @Value("${mylove.username}")
   String username;
   @Value("${mylove.password}")
   String password;
   @RequestMapping("/get2")
   public String get2(){
       return "你好"+username+" "+password;
   }


   @RequestMapping("/get1")
   public  String get1(){
       return "你好@RestController";
   }

}

java后台管理系统学习项目day02--项目配置_第10张图片

重启项目,在浏览器中输入http://localhost:8080/get3,已经实现失效的pro文件交给spring管理
java后台管理系统学习项目day02--项目配置_第11张图片
解决乱码的方式
java后台管理系统学习项目day02--项目配置_第12张图片
重启项目, 刷新浏览器,乱码解决
java后台管理系统学习项目day02--项目配置_第13张图片
@PropertySource注解:加载指定的属性文件(*.properties)到 Spring 的管理容器中,然后配合@Value使用。

你可能感兴趣的:(idea环境配置,java开发,java,spring,intellij-idea,spring,boot)