iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >使用spring@value加载时机
  • 152
分享到

使用spring@value加载时机

2024-04-02 19:04:59 152人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录spring@value加载时机说说@value注入时问题@Value设置默认值使用@Value注入配置值的时候报错spring@value加载时机 @value是spring中

spring@value加载时机

@value是spring中一个用来注入类的成员变量的一种注解,其从配置文件中注入配置的值,需要在spring中配置下需要注入这个类PropertyPlaceholderConfigurer,有多种出入方式,如:

<bean id="propertyConfigurer" class="PropertyPlaceholderConfigurer">
		<property name="locations">
			<list>
				<value>classpath*:config/*.properties</value>
			</list>
		</property>
		<property name="ignoreUnresolvablePlaceholders" value="true" />
		<property name="fileEncoding" value="UTF-8"/>
	</bean>

 @Value注入是在spring注入该类的默认构造器之后,再进行注入的。

使用

org.springframework.beans.BeanUtils的public static <T> T instantiateClass(Constructor<T> ctor, Object... args)

进行实例化@Component的类。使用这个bean工厂DefaultListableBeanFactory。

使用

org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(final String beanName, final RootBeanDefinition mbd, final Object[] args)

来创建这个bean的实例,mbd中是一些类似这样的数据:

scope=singleton; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null

默认情况下spring管理的bean都是单例。

实例构造完成之后,这个时候@Value注解就会触发,org.springframework.beans.factory.annotation。

AutowiredAnnotationBeanPostProcessor的inject(Object bean, String beanName, PropertyValues pvs)

这个方法就会将bean的属性注入进去了。

注入属性完成后(下图第557行),spring再去加载其他的bean。@Value其实也是使用了@AutoWire的机制。

由于spring只会在初始化时,加载这个类的构造器,如果需要修改配置文件中的值,可以通过spring上下文获取bean实例,使用set方式修改值。

@Value加载中文时出现乱码,可以在PropertyPlaceholderConfigurer配置编码格式,上文的code中有调到,也可将中文改成unicode编码。

说说@value注入时问题

@Value设置默认值

使用@Value注解将变量进行自动注入的时候,经常会出现的一个问题就是我们可能会由于在配置参数中忘记设置该参数造成整个项目报错,其实我们可以通过给被@Value注解作用的变量进行注入的时候如果没有找到该配置参数时设置一个默认值,相当于是一个兜底的方案:

没有默认值的用法:

@Value("${spring.port}")
private String port;

增加默认值的用法:

@Value("${spring.port:8080}")
private String port;

这里需要注意的是:

1.即使你的配置参数的值是String类型的话也不需要加双引号

2.被static修饰的变量通过@Value会注入失败

使用@Value注入配置值的时候报错

Consider defining a bean of type‘java.lang.String’ in your configuration.

这里是因为,我在同一个class 里面,引用了另一个注解@AllArgsConstructor

后面我对比删除了@AllArgsConstructor,只是留下@Value 。项目正常启动。

结论:@AllArgsConstructor 与 @Value 注解不能同时使用

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: 使用spring@value加载时机

本文链接: https://www.lsjlt.com/news/143919.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 使用spring@value加载时机
    目录spring@value加载时机说说@value注入时问题@Value设置默认值使用@Value注入配置值的时候报错spring@value加载时机 @value是spring中...
    99+
    2024-04-02
  • 如何使用spring @value加载
    这篇文章主要介绍了如何使用spring @value加载的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何使用spring @value加载文章都会有所收获,下面我们一起来看看吧。spring@value加载时...
    99+
    2023-06-29
  • Spring使用@Value注解与@PropertySource注解加载配置文件操作
    1、@Value注解简介 Spring框架提供的@Value注解可以将外部的值动态注入到Bean中,@Value注解使用在字段、构造器参数和方法参数上。 @Value可以指定属性取值...
    99+
    2024-04-02
  • Spring注解@Value及属性加载配置文件方式
    Spring中使用@Value注解给bean加载属性的配置文件有两种使用方式 第一种:使用@Value("#{configProperties['websit.msgname']}"...
    99+
    2024-04-02
  • Java类的加载时机
    必须初始化的四种情况 有四种情况类是必须要进行初始化的,对于这四种情况原文描述如下: 但是对于初始化阶段,虚拟机规范则是严格规定了有且只有4种情况必须立即对类进行初始化,而加载、验证...
    99+
    2024-04-02
  • 使用Spring如何实现加载Bean
    本篇文章给大家分享的是有关使用Spring如何实现加载Bean,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1 定义bean的方式常见的定义Bean的方式有:通过xml的方式,...
    99+
    2023-05-31
    spring bea bean
  • SpringBoot spring.factories加载时机分析
    目录spring.factories作用源码解析用法spring.factories作用 这个类似于Java中的SPI功能,SpringBoot启动的时候会读取所有jar包下面的M...
    99+
    2023-03-13
    spring.factories加载时机 Spring boot spring.factories
  • 使用Spring初始化加载InitializingBean()方法
    目录Spring初始化加载InitializingBean()1、spring初始化bean有两种方式2、相同点3、不同点4、InitializingBean接口定义的源码如下所示5...
    99+
    2024-04-02
  • spring类的加载机制是什么
    Spring框架的类加载机制主要涉及到两个方面:类路径扫描和类加载器。 类路径扫描:Spring框架在启动时会扫描应用程序的类路...
    99+
    2024-04-02
  • Spring启动时加载Environment和属性配置
    Spring启动时加载Environment和属性配置是通过使用Spring Boot的特性来实现的。Spring Boot提供了一...
    99+
    2023-09-13
    Spring
  • Spring Boot 启动加载数据 CommandLineRunner的使用
    实际应用中,我们会有在项目服务启动的时候就去加载一些数据或做一些事情这样的需求。 为了解决这样的问题,spring Boot 为我们提供了一个方法,通过实现接口 CommandLineRunner 来实现。很简单,只需要一个类就可以,无需其...
    99+
    2023-05-31
    spring boot 加载
  • Java类的加载时机是什么时候
    本篇内容主要讲解“Java类的加载时机是什么时候”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java类的加载时机是什么时候”吧!必须初始化的四种情况有四种情况类是必须要进行初始化的,对于这四种...
    99+
    2023-06-25
  • 如何使用Python在LeetCode上加载Spring框架?
    LeetCode是一家面向程序员的在线编程平台,通过该平台,程序员可以学习算法和数据结构,提高自己的编程能力。而Spring框架则是一款非常流行的Java开发框架,它提供了很多方便的功能,可以帮助程序员快速开发高质量的Java应用程序。本...
    99+
    2023-06-17
    leetcode load spring
  • Java类的加载时机与过程
    目录1 开门见山2 类的加载时机3 何时开始类的初始化4 被动引用例子5 类的加载过程5.1 加载5.2验证5.3准备5.4 解析5.5 初始化6 题目分析1 开门见山 以前曾经看到...
    99+
    2024-04-02
  • SpringBoot spring.factories加载时机源码分析
    这篇文章主要介绍“SpringBoot spring.factories加载时机源码分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringBoot spring.fact...
    99+
    2023-07-05
  • 详解Spring的@Value作用与使用场景
    目录1 简介2 三种形式3 使用场景4 引入配置文件5 使用举例1 简介 不得不说,Spring为大家提供许多开箱即用的功能,@Value就是一个极其常用的功能,它能将配置信息注入到...
    99+
    2023-05-19
    Spring @Value @Value 作用
  • Spring注解@Value及属性加载配置文件方式的示例分析
    这篇文章主要介绍了Spring注解@Value及属性加载配置文件方式的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Spring中使用@Value注解给bean加载属...
    99+
    2023-06-20
  • 使用Spring @DependsOn控制bean加载顺序的实例
    spring容器载入bean顺序是不确定的,spring框架没有约定特定顺序逻辑规范。但spring保证如果A依赖B(如beanA中有@Autowired B的变量),那么B将先于A...
    99+
    2024-04-02
  • PHP和Spring集成时如何优化加载性能?
    PHP和Spring是两种不同的编程语言,它们在功能和性能上有着各自的优劣。但是,很多项目需要将它们集成在一起使用,以实现更复杂的功能。在集成PHP和Spring时,如何优化加载性能是一个非常重要的问题。在本文中,我们将探讨如何优化PHP和...
    99+
    2023-09-20
    spring load 编程算法
  • Spring Boot如何在加载bean时优先选择我
    目录引言一、适用场景二、三种实现方式1. @Configuration 注解 + @DependsOn 注解2. @Component 注解 + @DependsOn 注解3. 实现...
    99+
    2023-03-14
    springboot加载bean优先选择我 springboot加载bean
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作