SpringBoot 入门基础

一、springboot入门

    –jdk1.8:Spring Boot 推荐jdk1.7及以上;java version "1.8.0_112"
    –maven3.x:maven 3.3以上版本;Apache Maven 3.3.9
    –IntelliJIDEA2017:IntelliJ IDEA 2017.2.2 x64、STS
    –SpringBoot 1.5.9.RELEASE:1.5.9;
    
    idea配置:
        <profile>
        <id>jdk‐1.8</id>
        <activation>
        <activeByDefault>true</activeByDefault>
        <jdk>1.8</jdk>
        </activation>
        <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
        </properties>
        </profile>
二:springboot HelloWorld

    1.创建一个maven工程;(jar)
    2.导入spring boot相关的依赖:导入parent后根据场景配置各种starter
        <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring‐boot‐starter‐parent</artifactId>
        <version>1.5.9.RELEASE</version>
        </parent>
        <dependencies>
        <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring‐boot‐starter‐web</artifactId>
        </dependency>
        </dependencies>
    3.编写自己的程序应用
        @SpringBootApplication:用在主程序类上,表明是一个Spring Boot应用
        main方法中用// Spring应用启动起来
        SpringApplication.run(HelloWorldMainApplication.class,args);启动
        
        编写相关的Controller、Service
    4
        @Controller
        public class HelloController {
        
        @ResponseBody
        @RequestMapping("/hello")
        public String hello(){
        return "Hello World!";
        }
        }
    5简化配置
    <!‐‐ 这个插件,可以将应用打包成一个可执行的jar包;‐‐>
        <build>
        <plugins>
        <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring‐boot‐maven‐plugin</artifactId>
        </plugin>
        </plugins>
        </build
三、配置文件
            1、配置文件
        SpringBoot使用一个全局的配置文件,配置文件名是固定的;
        •application.properties:数组用逗号隔开 比如:pets=cat,dog,agt
        •application.yml或者yaml后缀都可以
        
        1、基本语法
            k:(空格)v:表示一对键值对(空格必须有);
            以空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的
        
        2、值的写法
            1 字面量:普通的值(数字,字符串,布尔)
            k: v:字面直接来写;
            字符串默认不用加上单引号或者双引号;
            "":双引号;不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思
            name: "zhangsan \n lisi":输出;zhangsan 换行 lisi
            '':单引号;会转义特殊字符,特殊字符最终只是一个普通的字符串数据
            name: ‘zhangsan \n lisi’:输出;zhangsan \n lisi
            对象、Map(属性和值)(键值对):
            k: v:在下一行来写对象的属性和值的关系;注意缩进
            
            2 对象还是k: v的方式
                    friends:
                        lastName: zhangsan
                        age: 20
                        
                    行内写法:friends: {lastName: zhangsan,age: 18}
            3 数组(List、Set):
            用- 值表示数组中的一个元素
                pets:
                    ‐ cat
                    ‐ dog
                    ‐ pig
                    
                行内写法:pets: [cat,dog,pig]
                
            2、获取配置文件的值
                    @value():字面量/${key}从环境变量、配置文件中获取值/#{SpEL}
                    @ConfigurationPropertie:
                    属性匹配规则:person.firstName:使用标准方式
                                    person.first-name:大写用-
                                    person:first_name:大写用_
                                    PERSON.FIRST_NAME:推荐系统属性使用这种写法
                        
                两者的区别是:
                    @ConfigurationPropertie:批量导入,支持松散绑定,jre303数据校验,复杂类型封装
                    @value:一个一个导入,支持spel表达式
                
                
            3、@PropertySource&@ImportResource&@Bean
                PropertySource:加载指定的配置文件
                
                @ImportResource:导入Spring的配置文件,让配置文件里面的内容生效;
                Spring Boot里面没有Spring的配置文件,我们自己编写的配置文件,也不能自动识别;
                想让Spring的配置文件生效,加载进来;@ImportResource标注在一个配置类上
                
                springboot 推荐给容器中添加组件的方式:
                注解:@Configuration 和@Bean
                1、配置类@Configuration------>Spring配置文件
                2、使用@Bean给容器中添加组件

 

配置文件值注入

person:
  lastName: hello
  age: 18
  boss: false
  birth: 2017/12/12
  maps: {k1: v1,k2: 12}
  lists:
   ‐ lisi
   ‐ zhaoliu
  dog:
   name: 小狗
   age: 12

javaBean:

/**
* 将配置文件中配置的每一个属性的值,映射到这个组件中
* @ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定;
* prefix = "person":配置文件中哪个下面的所有属性进行一一映射
*
* 只有这个组件是容器中的组件,才能容器提供的@ConfigurationProperties功能;
*
*/
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
    private String lastName;
    private Integer age;
    private Boolean boss;
    private Date birth;
    private Map<String,Object> maps;
    private List<Object> lists;
    private Dog dog;

<!‐‐导入配置文件处理器,配置文件进行绑定就会有提示‐‐>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring‐boot‐configuration‐processor</artifactId>
<optional>true</optional>
</dependency>

 

3、配置文件注入值数据校验

@Component
@ConfigurationProperties(prefix = "person")
@Validated
public class Person {
/**
* <bean class="Person">
* <property name="lastName" value="字面量/${key}从环境变量、配置文件中获取值/#
{SpEL}"></property>
* <bean/>
*/
//lastName必须是邮箱格式
@Email
//@Value("${person.last‐name}")
private String lastName;
//@Value("#{11*2}")
private Integer age;
//@Value("true")
private Boolean boss;
private Date birth;
private Map<String,Object> maps;
private List<Object> lists;
private Dog dog;

4、@PropertySource&@ImportResource&@Bean
@PropertySource:加载指定的配置文件;

/**
* 将配置文件中配置的每一个属性的值,映射到这个组件中
* @ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定;
* prefix = "person":配置文件中哪个下面的所有属性进行一一映射
*
* 只有这个组件是容器中的组件,才能容器提供的@ConfigurationProperties功能;
* @ConfigurationProperties(prefix = "person")默认从全局配置文件中获取值;
*
*/
@PropertySource(value = {"classpath:person.properties"})
@Component
@ConfigurationProperties(prefix = "person")
//@Validated

public class Person {
/**
* <bean class="Person">
* <property name="lastName" value="字面量/${key}从环境变量、配置文件中获取值/#
{SpEL}"></property>
* <bean/>
*/
//lastName必须是邮箱格式
// @Email
//@Value("${person.last‐name}")
private String lastName;
//@Value("#{11*2}")
private Integer age;
//@Value("true")
private Boolean boss;

SpringBoot推荐给容器中添加组件的方式;推荐使用全注解的方式
1、配置类@Configuration------>Spring配置文件
2、使用@Bean给容器中添加组件

 

//@Configuration:指明当前类是一个配置类;就是来替代之前的Spring配置文件.在配置文件中用<bean><bean/>标签添加组件

@Configuration
public class MyAppConfig {
//将方法的返回值添加到容器中;容器中这个组件默认的id就是方法名
@Bean
public HelloService helloService02(){
System.out.println("配置类@Bean给容器中添加组件了...");
return new HelloService();
}
}

 

4、配置文件占位符
${random.value}、${random.int}、${random.long}
${random.int(10)}、${random.int[1024,65536]}

2、占位符获取之前配置的值,如果没有可以是用:指定默认值

person.last‐name=张三${random.uuid}
person.age=${random.int}
person.birth=2017/12/15
person.boss=false
person.maps.k1=v1
person.maps.k2=14
person.lists=a,b,c
person.dog.name=${person.hello:hello}_dog
person.dog.age=15

5、Profile

1、多Profile文件
我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml
默认使用application.properties的配置;
2、yml支持多文档块方式

server:
  port: 8081
spring:
  profiles:
   active: prod
‐‐‐
server:
  port: 8083
spring:
  profiles: dev
‐‐‐
server:
  port: 8084
spring:
  profiles: prod #指定属于哪个环境

3、激活指定profile
1、在配置文件中指定 spring.profiles.active=dev
2、命令行:
java -jar spring-boot-02-config-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev;
可以直接在测试的时候,配置传入命令行参数
3、虚拟机参数;
-Dspring.profiles.active=dev

 

 

6、配置文件加载位置
springboot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文

–file:./config/
–file:./
–classpath:/config/
–classpath:/
优先级由高到底, 优先级由高到低,互补配置,,高优先级的配置会覆盖低优先级的配置;

 

SpringBoot会从这四个位置全部加载主配置文件;互补配置;
我们还可以通过spring.config.location来改变默认的配置文件位置
项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置;指定配置文件和默
认加载的这些配置文件共同起作用形成互补配置;
java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --spring.config.location=G:/application.properties

 

7、外部配置加载顺序

 

SpringBoot也可以从以下位置加载配置; 优先级从高到低;高优先级的配置覆盖低优先级的配置,所有的配置会
形成互补配置
1.命令行参数
所有的配置都可以在命令行上进行指定
java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --server.port=8087 --server.context-path=/abc
多个配置用空格分开; --配置项=值
2.来自java:comp/env的JNDI属性
3.Java系统属性(System.getProperties())
4.操作系统环境变量
5.RandomValuePropertySource配置的random.*属性值

 

由jar包外向jar包内进行寻找;
优先加载带profile
6.jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件
7.jar包内部的application-{profile}.properties或application.yml(带spring.profile)配置文件
再来加载不带profile
8.jar包外部的application.properties或application.yml(不带spring.profile)配置文件
9.jar包内部的application.properties或application.yml(不带spring.profile)配置文件

 

10.@Configuration注解类上的@PropertySource
11.通过SpringApplication.setDefaultProperties指定的默认属性
所有支持的配置加载来源;

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值