第三章,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:/

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

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

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

(0)
上一篇 2022年4月24日 上午8:00
下一篇 2022年4月24日 上午8:20


相关推荐

  • 《信号与系统》解读 第5章 通信系统中的调制解调:频谱搬移、幅度调制、脉冲调制、频率调制、相位调制、频分复用、时分复用

    《信号与系统》解读 第5章 通信系统中的调制解调:频谱搬移、幅度调制、脉冲调制、频率调制、相位调制、频分复用、时分复用本文将从时域与频域的角度解读 系统 通过正弦载波信号 对输入的时域基带信号 进行 调制 的过程 并输出调制后的时域混频信号 解调是调制的反过程 系统 通过正弦载波信号 对输入的调制后的时域混频信号 在进行进行 调制 的过程 并还原出原始的时域基带信号 这个过程就是解调 调制和解调 不仅仅用于将信息嵌入到适合信道传输的信号中 还可以把不同频谱的信号 通过所谓 复用 的技术在同一信道上进行传输 而不产生干扰 这就是复用与解复用 这是频谱分析的另一个重要应用

    2026年3月19日
    2
  • 老鹰主机怎么样?多年的用户来说下

    老鹰主机怎么样?多年的用户来说下说到老鹰主机 我想我绝对很有发言权 因为老刘说主机这个网站就是老鹰主机搭建的 一直十分的稳定 而且国内访问速度很快 说实话之前一直非常的担心国内访问速度会很慢 但是一直以来都给我特别的惊喜和放心 下面我们一起来说说老鹰主机怎么样 1 价格便宜我自己网站用的是年付 44 刀的套餐 一个月下来平均也是就 2 刀多 提供 30 天的退款保障 这个价格在所有的国外知名的主机商里面也算是很便宜的了 2 功能强大

    2025年7月6日
    4
  • 错误信息:java.lang.AbstractMethodError

    错误信息:java.lang.AbstractMethodErrorjava.lang.AbstractMethodError:org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.choose(Ljava/lang/String;Lorg/springframework/cloud/client/loadbalancer/Request;)Lorg/springframework/cloud/client/ServiceInstance;错误信息详细如下:org.springframewo

    2022年5月20日
    38
  • matlab lte rsrp,LTE 下行速率和SINR、RSRP什么关系?

    matlab lte rsrp,LTE 下行速率和SINR、RSRP什么关系?温习一下香农公式 回应该答案 0 回答者 ensonsha 2014 9 1817 28RSRP 是接收到信号的功率 太低的话接收机检测不到信号 根本谈不上速率 Sinr 是接收到信号功率和噪声干扰的比值 太低的话数据无法正确解调 速率会很低 网络规划首先要考虑 RSRP 保证覆盖 一般要求达到 105dBm 其次考虑 Sinr 如果太低就要考虑一些改善 Sinr 的措施 比如 comp Su

    2026年3月17日
    2
  • 面试阿里,HashMap 这一篇就够了[通俗易懂]

    面试阿里,HashMap 这一篇就够了[通俗易懂]HashMap面试中可能问到的知识点,这边全都有

    2022年5月19日
    40
  • charles进行弱网测试(app弱网测试怎么做)

    最近尝试用Charles模拟弱网做了下测试,初步记录一下,适用PC端和移动端(IOS/Android)1.以charles4.2版本为例,打开Proxy-&gt;ThrottleSettings2.出现下面的界面3.预设那里有Charles常用的网络设置模拟的数据,根据需要自己选择即可,从上到下网速依次提升4.习惯自己设置数据来模拟弱网的可以参考下面的数据来设置哦【弱网】上行:10   …

    2022年4月15日
    171

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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