第三章,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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 最全各国人口数据,人口的高出生率与高死亡率竟然是这些国家

    最全各国人口数据,人口的高出生率与高死亡率竟然是这些国家欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答、求职一站式搞定!对商业智能BI、大数据分析挖掘、机器学习,python,R等数据领域感兴趣的同学加微信:tsaiedu,并注明消息来源,邀请你进入数据爱好者交流群,数据爱好者们都在这儿。作者:挖数腾讯数据产品经理&amp;段子手个人微信公号:w…

    2022年9月4日
    6
  • Win10 快捷键大全(史上最全)「建议收藏」

    Win10 快捷键大全(史上最全)「建议收藏」windows10常用快捷键。win10正式版是微软续已发布的Windows系统的最新版操作系统。windows10(win10正式版)让人感到最意外的就是直接跳过了win9。那么今天我为大家讲解他推出的常用快捷键。希望能够帮到大家。复制、粘贴和其他常规键盘快捷方式按此键执行此操作Ctrl+X剪切选定项Ctrl+C(或Ctrl+Insert)复制选…

    2022年5月30日
    33
  • 二代身份证校验[通俗易懂]

    二代身份证校验[通俗易懂]百度一搜就能搜到很多身份证校验的例子,这个是最近做项目参考百度文库的demo修改后的一,js:[code="js"]//身份验证functioncheckIdCard(idCard){ varsexId; varsexText; varage; varErrors=newArray("验证通过!","身份证号码位数不对!","身份证号码出生…

    2022年6月27日
    28
  • 文字有阴影效果

    代码如下:效果如下:何问起:Web前端,CSS3,HTML5特效:http://www.cnblogs.com/roucheng/p/texiao.html

    2021年12月24日
    63
  • 策略模式解决多重if-else

    策略模式解决多重if-else

    2021年7月12日
    102
  • UltraEdit 注册机使用激活方法

    UltraEdit 注册机使用激活方法(转)UltraEdit注册机使用激活方法UltraEdit 注册机使用激活方法: 1、断开网络连接,运行UltraEdit软件后,点击“帮助”—“注册/激活”; 2、许可证ID填写“zd423”、密码填写:“zdfans”;后点击“激活”,会自动弹出“连接错误”窗口,然后点击“脱机激活”,弹出脱机激活窗口后,记录“用户码1、用户码2”; 3、运行UltraEdit注册机“IDMA…

    2025年6月29日
    1

发表回复

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

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