springboot中静态变量值的注入及子项目间的profile的设置

本文介绍如何在Spring Boot项目中实现多环境配置信息的静态变量注入,通过定义静态变量并在application-dev配置文件中设置值,利用@Value注解完成注入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在springboot项目中,经常会将controller层、service层等作为不同的子项目,我们常常将提供的服务层打包成jar包,在controller所在的web项目中调用,可以在pom文件中引用:


前面简单说了一下项目之间的引用,接下来要说下如何实现多环境的配置信息作为静态变量在项目之间的注入,对于application.properties在多环境下的配置可以参照 此文http://www.jb51.net/article/108670.htm。本文主要介绍静态变量的注入。

1、在application-dev配置文件中写入配置内容:

2、在application.properties中指定profile


3、静态变量定义的文件在common项目中


代码如下:

@Component
public class WxArg {
    public static String appID;
    public static String appsecret;
    public static String USER_AUTH_CODE;
    public static String SSO_IDENTIFY_URL;

    public String getAppID() {
        return appID;
    }
    @Value("${wxArg.appID}")
    public void setAppID(String appID) {
        WxArg.appID = appID;
    }

    public String getAppsecret() {
        return appsecret;
    }

    @Value("${wxArg.appsecret}")
    public void setAppsecret(String appsecret) {
        WxArg.appsecret = appsecret;
    }

    public String getUserAuthCode() {
        return USER_AUTH_CODE;
    }

    @Value("${wxArg.userAuthCode}")
    public void setUserAuthCode(String userAuthCode) {
        USER_AUTH_CODE = userAuthCode;
    }

    public String getSsoIdentifyUrl() {
        return SSO_IDENTIFY_URL;
    }

    @Value("${wxArg.ssoIdentifyUrl}")
    public void setSsoIdentifyUrl(String ssoIdentifyUrl) {
        SSO_IDENTIFY_URL = ssoIdentifyUrl;
    }
}
注意:

1>在set方法上使用@Value("${wxArg.ssoIdentifyUrl}")获取;

2>方法不要用静态方法;

3>在类方法上加上@Component;

4、测试

@RunWith(SpringRunner.class)
@SpringBootTest
public class WxArgTest {
   private static org.slf4j.Logger logger = LoggerFactory.getLogger(WxArgTest.class);

   @Test
   public void AppID (){
      logger.info("WxArg.appID--------->" + WxArg.appID);
      logger.info("WxArg.appsecret--------->" + WxArg.appsecret);
      logger.info("WxArg.userAuthCode--------->" + WxArg.USER_AUTH_CODE);
      logger.info("WxArg.ssoIdentifyUrl--------->" + WxArg.SSO_IDENTIFY_URL);

   }
}

### Spring Boot 类路径概念及作用范围 #### 类路径定义 类路径(Classpath)是指向Java虚拟机指示应用程序所需的各种类文件的位置集合。在Spring Boot项目中,类路径不仅包含了编译后的`.class`文件,还包括各种配置文件、静态资源以及第三方库等[^1]。 #### 资源定位机制 当启动一个Spring Boot应用时,JVM会依据指定的类路径来查找加载所需的字节码和其他资源。这意味着所有的依赖项都应当被正确放置于类路径之下以便程序运行期能够顺利找到这些组件。例如,在构建工具Maven或Gradle的帮助下,外部jar包会被自动下载至本地仓库,最终加入到项目的类路径环境中[^3]。 #### 配置文件读取 对于位于src/main/resources目录下的application.properties或者application.yml这样的全局设置文档,默认情况下也会处于classpath根目录下;因此可以直接通过`@Value`注解注入属性值或是借助Environment接口动态获取环境变量信息。此外,如果存在多个profile特定版本,则可通过激活相应模式来自适应不同场景的需求。 #### 自动装配扫描 值得一提的是,Spring Boot还利用了特殊的命名约定——即默认会在main application class所在package及其子packages范围内执行component scan操作以发现候选bean实例。这进一步体现了合理规划好自己的代码结构是多么重要的一件事,因为只有这样才能够让框架顺利完成初始化工作而不至于遗漏任何重要的组成部分[^2]. ```java @SpringBootApplication(scanBasePackages = {"com.example.demo"}) public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } ``` #### 外部化配置支持 除了内置方式外,还可以将一些敏感数据如数据库连接字符串存储在一个独立位置通过命令行参数的形式传递进来覆盖原有设定。这种方式既安全又灵活,允许运维人员根据实际情况调整部署策略而不需要修改源代码本身[^4].
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值