springBoot快速开发(简单web)
这是一个springboot基础配置文件介绍的demo。只涉及到 控制层与前端的简单交互,用于验证代码的畅通。
spring-boot pom.xml解释
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <!--springboot的父级依赖,提供了相关的Maven依赖,并省去相关依赖包的版本声明--> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.3.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.xiaoeyu</groupId> <artifactId>demo2</artifactId> <version>0.0.1-SNAPSHOT</version> <name>demo2</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <!--springboot使用的技术依赖--> <dependencies> <!--spring web需要的相关包:包括spring启动bean,aop,core等等--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--用于连接数据库的一种,默认采用hibernate,我不会用,后面有mybatis的--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <!--添加数据库驱动依赖,在spring-boot-dependencies中指定--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> </dependencies> <!--springboot的编辑插件--> <build> <plugins> <!--将项目搭建成一个可以独立运行的jar包,有内嵌的Tomcat--> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
spring-boot配置文件解释:
在spring-boot中可以使用.properties与.yml两种格式的配置文件,前者的优先级更高
properties采用键值对的形式,yml采用 键:空格 值 的形式。yml的同一目录下会统一表示。properties的前缀每个都要写
以application.yml格式作为说明。从第一列开始 同一个目录下的会归结到同一列
#本文件是springboot的全局配置文件,入口类启动时会自动加载本文件,同样的名字properties格式优先级更高
server:
servlet:
# 设置根路径,访问的时候localhost:端口/abc/
context-path: /abc
spring:
mvc:
# 后台为时间的类型的参数,可以解析前台传送的yyyy-MM-dd类型的字符串,配置文件只能拦截一种
date-format: yyyy-MM-dd
# 后台返回时间类型的数据,把时间类型的数据转为yyyy-MM-dd类型的字符串
jackson:
date-format: yyyy-MM-dd
http:
encoding:
charset: utf-8
#spring.profiles.active:指定使用哪个环境配置文件。现在这个是主要的配置,如果没有就从用下面dev对应的配置文件(application-xxx.yml)
#本文件的配置为主配置,有些配置:端口号 在开发与实际应用是是不一样的8080,80需要分开设置。这个标签用于指定使用哪种环境参数进行(在指定的配置文件中配置合适的参数)
#文件名有要求,与本文件名前部分一致 application-xxx.yml xxx与active后的一样
profiles:
active: dev
开发环境下的配置文件。application-dex.yml
#定义为开发环境配置文件
server:
# 使用端口号
port: 8888
logging:
# 设置日志文件输出位置
file: e:logs/spring-boot.log
level:
# 设置指定位置的日志输出级别
org.apache: debuge
org.springframework.web: debuge
org.springframework.boot.web: debuge
#数据源配置,与数据进行连接时的信息
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/bcs?characterEncoding=UTF-8
username: root
password:
启动文件解释
用spring-boot创建的项目,会自动生成一个 项目名+Application的class文件,作为项目的入口类。
package com.xiaoeyu.demo2; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.PropertySource; /* 项目的入口类。类名为: 项目名+Application 在运行其中的main方法时,Spring Boot会自动扫描入口类所在的同级包及其子包中的Bean,所以声明Bean的类不应在入口类所在的包之外。 */ @SpringBootApplication/*开启springboot的自动配置,在项目启动时自动加载*/ //项目启动时加载的配置文件,application.properties默认加载,别的需要手动指定 //custom.properties是自定义的额配置文件,需要在这里声明,才会被加载到项目中生效 @PropertySource("custom.properties") public class Demo2Application { public static void main(String[] args) { //run方法,启动内置的Tomcat服务器 SpringApplication.run(Demo2Application.class, args); } }
配置文件传值
通过配置文件给属性(单个属性)或者对象属性(多个属性)传值,自己写custom.properties给类中的属性传值
#在类中,可以通过@Value("${app.name}")获取到下面的值,并注入给所修饰的属性
app.name=123456
info.url=jdbc:mysql://localhost:3306
info.username=root
info.password=
info.driverClassName=com.mysql.jdbc.Driver
package com.xiaoeyu.demo2.controller; import com.xiaoeyu.demo2.pojo.Info; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller public class HepplController { @Value("${app.name}")//获取配置文件对应app.name的值,单个属性传值 private String appName; @Autowired//多个属相传值,根据Info对象的类上的注解进行匹配 private Info info; @RequestMapping("/hello") @ResponseBody public String hello() { //检测传值 System.out.println(appName); System.out.println(info.toString()); return "hello"; } }
Info实体类,没有特殊意义,仅仅作为传参验证
package com.xiaoeyu.demo2.pojo; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; /** * 通过配置文件给属性赋值 */ //与Controller,Service,Repository一样的功能,Component语义更广,三个都可以用这个代替。被修饰的类,在spring启动过程中会被实例化 @Component //在入口类上,添加了启动时加载的配置文件,把该配置文件中以info开都与属性对应的键的值传递给本类中的属性 @ConfigurationProperties(prefix = "info") public class Info { private String url; private String username; private String password; private String driverClassName; //set,get,tostring方法省略 }