第三章,springboot 部分注解讲解,和多配置文件加载方式[通俗易懂]

第三章,springboot 部分注解讲解,和多配置文件加载方式[通俗易懂]第三章,springboot 部分注解讲解,和多配置文件加载方式

大家好,又见面了,我是你们的朋友全栈君。

 

 

 一,@PropertySource

package com.example.springboot;


import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;

@PropertySource("classpath:person.properties") //此注解可以加载制定的配置文件
//@ConfigurationProperties(prefix="person")
public class Person {
}

二,@ImportResource 注解 :导入spring 的配置文件,让配置文件中的内容生效

实验:

这里我们做的实验是类似单体spring的在控制器中注入service层类一样的功能。

首先我们新建一个service包。

第三章,springboot 部分注解讲解,和多配置文件加载方式[通俗易懂]

public class HelloService {
}

然后新建个beans.xml,把HelloService注入进来:

第三章,springboot 部分注解讲解,和多配置文件加载方式[通俗易懂]

这里idea可以新建spring文件:新建–》 点开下图分选项即可

第三章,springboot 部分注解讲解,和多配置文件加载方式[通俗易懂]

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="helloservice" class="com.example.springboot.service.HelloService"></bean>

</beans>

然后在测试了类中测试:

@RunWith(SpringRunner.class)
@SpringBootTest
public class ApplicationTests {
    @Autowired
    ApplicationContext ioc;
    @Test
    public void contextLoads() {
    }

    @Test
    public void testHelloService(){
        //打印ioc容器中是否包含helloService
        System.out.println(ioc.containsBean("helloservice"));
    }
}

打印结果是false,也就是我们ioc中没有helloService,因为这里的beans.xml没有起作用,我们记得在单体spring 中,我们在需要注入的类上回加上注解@Serivce,但是这里没有。因为是我们字节新建的配置文件,spring不能自动识别,所以需要在主程序上加上如下:

我们在主程序中加入以下代码:

 

@ImportResource(locations = {"classpath:beans.xml"})
@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

然后运行测类就会打印true了。

 


三,使用配置类管理容器组件。

springboot推荐使用全注解方式管理bean。

即,使用java类管理需要添加的组件。

这里首先新建一个config组件管理类:

第三章,springboot 部分注解讲解,和多配置文件加载方式[通俗易懂]

package com.example.springboot.config;


import com.example.springboot.service.HelloService;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration    //指明当前类是一个配置类,就是来代替之前的spring配置文件(即<bean>)
public class MyAppConfig {
    //将方法的返回值添加到容器中,容器中这个组件默认的id就是方法名
    @Bean
    public HelloService helloService(){
        System.out.println("配置类给容器添加组件了");
        return new HelloService();
    }
}

 然后把之前在主程序中的

@ImportResource(locations = {"classpath:beans.xml"})

给注释掉。

然后在测试类中修改下id,因为配置类的方式id默认是方法名,注意我这里的方法名S是大写的。

测试类:

package com.example.springboot;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.ApplicationContext;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class ApplicationTests {
    @Autowired
    ApplicationContext ioc;
    @Test
    public void contextLoads() {
    }

    @Test
    public void testHelloService(){
        //打印ioc容器中是否包含helloService
        System.out.println(ioc.containsBean("helloService"));
    }
}

然后运行就可以了。

 


五:Profile

1,多profile文件

情景:我们有生产和测试环境,两者的配置通常不一样,所以这里可以写两个配置文件,一个用于生产,一个用于测试。

测试:这里新建两个配置文件:

第三章,springboot 部分注解讲解,和多配置文件加载方式[通俗易懂]

第三章,springboot 部分注解讲解,和多配置文件加载方式[通俗易懂]

第三章,springboot 部分注解讲解,和多配置文件加载方式[通俗易懂]

这里以启动的服务端口好为例,我新建了两个,加上默认的application.properties,共三个端口好,三个都是设置不一样。这里先启动看看用的是哪个?

第三章,springboot 部分注解讲解,和多配置文件加载方式[通俗易懂]

8082端口也就是使用的是springboot自动生产的配置文件中的端口好。下面我们怎么要把我们新建的生效呢?

这里只需要在默认的application.properties中加入下面代码就行了(注意在第几行加入后面才会生效,前面的配置用的是默认的)

spring.profiles.active=dev
server.port=8082

然后启动,端口好就成了:

第三章,springboot 部分注解讲解,和多配置文件加载方式[通俗易懂]

 

2,在yml文件格式中修改

首先注释掉在三个properties文件中的修改。

然后在yml文件中加入以下内容:

第三章,springboot 部分注解讲解,和多配置文件加载方式[通俗易懂]

server:
  port: 8089
#设置激活哪个文档块
spring:
  profiles:
    active: prod

#yml 在这里有点优势,在同个文件中可以分文档块,所以就可以不用分文件了,
---
  #第一个文档块
server:
  port: 8088

spring:
  profiles: dev
---
  #第二个文档块
server:
     port: 8087

spring:
    profiles: prod

然后启动就有:

第三章,springboot 部分注解讲解,和多配置文件加载方式[通俗易懂]

 


六,配置文件的加载位置

有先后顺序:由第高到低,

-file:./config/

-file:./

-classpath:/config/

-classpath:/

这种配置可以形成互补配置,一级一级的 找下来。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/105999.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号