首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么方法看不到在构造函数中设置的值?(Spring Boot)

在Spring Boot中,如果在构造函数中设置了某个属性的值,但在方法中无法看到该值,可能是因为以下几个原因:

  1. 方法在构造函数之前被调用:如果方法在构造函数之前被调用,那么在方法中访问属性时,属性还没有被初始化,因此无法看到设置的值。可以通过调整方法的调用顺序来解决这个问题。
  2. 属性被重写:如果在子类中重写了父类的属性,并在子类的方法中访问该属性,那么子类方法中看到的值将是子类中的属性值,而不是构造函数中设置的值。可以通过使用super关键字来访问父类的属性。
  3. 属性作用域问题:如果属性的作用域是私有的(private),那么在类的外部是无法直接访问该属性的。可以通过提供公共的访问方法(getter和setter)来获取和设置属性的值。
  4. 构造函数参数问题:如果构造函数中的参数与方法中的参数同名,那么方法中的参数将会屏蔽构造函数中的参数,导致无法访问构造函数中设置的值。可以通过修改方法参数的名称来解决这个问题。

总结起来,无法在方法中看到构造函数中设置的值可能是因为方法的调用顺序、属性重写、属性作用域或构造函数参数等问题导致的。需要仔细检查代码逻辑,确保属性的正确访问和赋值。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

创建子类对象时,父类构造函数调用被子类重写方法为什么调用是子类方法

public static void main(String[] args) { A a = new A(); B b = new B(); } } 问题:为什么创建...但是:创建B对象父类会调用父类方法? 答案: 当子类被加载到内存方法区后,会继续加载父类到内存。...如果,子类重写了父类方法,子类方法引用会指向子类方法,否则子类方法引用会指向父类方法引用。 如果子类重载了父类方法,则子类重载方法引用还指向子类方法。...如果子类方法没有重写也没有重载父类方法,则方法引用会指向父类方法。 当子类对象创建时,会先行调用父类构造方法构造方法也是方法),虚拟机会在子类方法区寻找该方法并运行。...其结果是当编译时候,父类构造方法调用方法参数已经强制转换为符合父类方法参数了。 上边代码在编译前已经转换为下面这个样子了。

6.1K10

SpringCache整合SpringDataRedis

还需要添加spring-boot-starter-data-redis依赖 org.springframework.boot...这将创建基于代理或基于AspectJ建议,当调用以CacheResult , CachePut , CacheRemove或CacheRemoveAll注释方法时,将拦截器编织到调用堆栈。...这是指定要使用CacheManager替代方法,且 * 功能更强大。如果同时设置了cacheManager()和#cacheResolver() ,则忽略缓存管理器。...默认情况下,此高速缓存管理器首次写入时创建高速缓存。 由于Redis如何表示空数据结构,因此Redis上看不到空缓存。...缓存 所以我们需要配置一个redis缓存管理器RedisCacheManager,观察RedisCacheManager构造函数 刚开始可以选择使用最简单一个构造函数,这个构造函数需要两个参数 /

94210

SpringCache整合SpringDataRedis

还需要添加spring-boot-starter-data-redis依赖 org.springframework.boot...这将创建基于代理或基于AspectJ建议,当调用以CacheResult , CachePut , CacheRemove或CacheRemoveAll注释方法时,将拦截器编织到调用堆栈。...这是指定要使用CacheManager替代方法,且 * 功能更强大。如果同时设置了cacheManager()和#cacheResolver() ,则忽略缓存管理器。...默认情况下,此高速缓存管理器首次写入时创建高速缓存。 由于Redis如何表示空数据结构,因此Redis上看不到空缓存。...缓存 所以我们需要配置一个redis缓存管理器RedisCacheManager,观察RedisCacheManager构造函数 刚开始可以选择使用最简单一个构造函数,这个构造函数需要两个参数

73540

编写可移植性更强程序:spring boot工程application.properties设置log4j2日志输出路径

spring boot工程,为了灵活切换部署环境,可以把application.properties文件放到jar包外部....如果使用了log4j2作为日志框架,想在不同部署环境上灵活log4j2日志输出目录,可以用以下方法 1 application.properties设置logging.config来设定log4j2...配置文件位置 2 application.properties设置logging.path,resources目录下放置log4j2-spring.xml来作为log4j2配置文件,log4j2...-spring.xml中使用${sys:LOG_PATH}作为日志输出路径 对于logback等日志框架,也可以使用同样方法 原文见https://docs.spring.io/spring-boot.../docs/1.5.7.RELEASE/reference/htmlsingle/#boot-features-custom-log-configuration

2.6K50

Spring Data JDBC参考文档

这建立使用 Spring Data Repositories 解释核心存储库支持之上。您应该对那里解释基本概念有充分了解。 9.1. 为什么选择 Spring Data JDBC?...入门 引导设置工作环境一种简单方法STS 或从Spring Initializr创建一个基于 Spring 项目。 首先,您需要设置一个正在运行数据库服务器。...其他一切都由 Spring Boot 完成。 在此设置,您可能需要自定义几项内容。 9.5.1....之后,所有尚未由构造函数填充非瞬态属性都在实体实例上设置。...如果属性是不可变,我们将使用持久性操作(请参阅对象创建)使用构造函数来创建实例副本。 默认情况下,我们直接设置字段

1.4K30

spring-boot-2.0.3不一样系列之源码篇 - run方法(三)之createApplicationContext,绝对有值得你看地方

利用反射调用AnnotationConfigServletWebServerApplicationContext构造方法进行实例化,期间有对构造方法进行可访问性设置,同时还进行了Kotlin校验。...处理运行时bean引用,解析托管集合,调用初始化方法等。支持自动装配构造函数,按名称属性和按类型属性。             ...GenericWebApplicationContext,通用web应用上下文,GenericApplicationContext基础上增加web支持         无参构造方法,只是调用了super...我们看下类所在包可知,SpringApplication是Spring boot特有的类,而AnnotatedBeanDefinitionReader是spring类,我们知道spring boot...依赖spring,但spring不依赖spring boot,那么我们spring能用spring boot特有的内容吗?

2.4K30

Spring Boot 中文参考指南

4.8.2 属性默认 Spring Boot 一些库使用缓存来提高性能,比如,模版引擎会缓存编译后模版,以此避免重复解析,但这样开发过程我们就不能即时看到模版变更。...单元测试@TestPropertySource devtools激活下,$HOME/.config/spring-boot目录Devtools全局设置配置 Config 数据加载按照以下顺序...这意味着绑定器将期望找到一个带有您希望绑定参数构造函数。如果您使用是 Java 16 或更高版本,构造函数绑定可以与记录一起使用。...可以使用@DefaultValue构造函数参数指定默认,或者使用 Java 16 或更高版本时使用记录组件指定默认。转换服务将用于将String强制转换为缺失属性目标类型。...您不能对由常规 Spring 机制创建 bean 使用构造函数绑定(例如@Componentbean、使用@Bean方法创建 bean 或使用 @Import加载 bean) 如果您类有多个构造函数

4K10

一张图帮你记忆,Spring Boot 应用在启动阶段执行代码几种方式

并且每个参数可以有多个在里面,因为 getOptionValues 方法返回 List数组 重写 run() 方法上有 throws Exception 标记,Spring Boot 会将 CommandLineRunner...,顾名思义「属性设置之后」,调用该方法时,该 bean 所有属性已经被 Spring 填充。...如果我们某些属性上使用 @Autowired(常规操作应该使用构造函数注入),那么 Spring 将在调用afterPropertiesSet 之前将 bean 注入这些属性。...@Autowired 字段,则 @PostConstruct 方法可能会遇到 NullPointerExceptions 小结 如果我们使用构造函数注入,则这两种解决方案都是等效 ---- 源码分析...灵魂追问 上面程序运行结果, afterPropertiesSet 方法调用先于 @PostConstruct 方法,但这和我们 Spring Bean 生命周期之缘起 调用顺序恰恰相反,你知道为什么

1.8K20

Spring Boot+Vue开发实战_有关理解图片带字

,会 new 一个SpringApplication 对象,创建这个对象构造函数做了一些准备工作,编号第2~5步就是构造函数里面所做事情 /** * Static helper that can...: SpringBoot三种启动方式 2、确定应用程序类型 SpringApplication构造方法内,首先会通过 WebApplicationType.deduceFromClasspath(...(); run方法代码段截图 7、将java.awt.headless设置为true 这里将java.awt.headless设置为true,表示运行服务器端,没有显示器器和鼠标键盘模式下照样可以工作...,它将maven和系统环境变量都加载进来了 11、忽略bean信息 这个方法configureIgnoreBeanInfo() 这个方法是将 spring.beaninfo.ignore 默认设为...=\ com.spring.application.MyExceptionReporter 接着我们application.yml 把端口号设置为一个很大,这样肯定会报错, server:

40230

@Bean与@Component用在同一个类上,会怎么样?

那么问题来了:Spring 容器到底有几个 UserManager 类型对象? |  Spring Boot 版本 项目中用 Spring Boot 版本是:2.0.3.RELEASE。...结果验证 验证方式有很多,可以 debug 跟源码,看看 Spring 容器到底有几个 UserManager 对象,也可以直接从 UserManager 构造方法下手,看看哪几个构造方法被调用,等等...我们从构造方法下手,看看 UserManager 到底实例化了几次。 图片 只有有参构造方法被调用了,无参构造方法岿然不动(根本没被调用)。...所以Spring 5.1.2.RELEASE (Spring Boot 则是 2.1.0.RELEASE )做出了优化处理。 我们来具体看看。 图片 启动直接报错,Spring也给出了提示。...没有显示指定,那么默认就是false ,之后Spring Boot启动过程,会用此覆盖掉SpringallowBeanDefinitionOverriding默认

24210

你可知道publisherReturns参数spring-boot-starter-amqp作用?

设置为false,RabbitMQ将直接丢弃该消息。 了解了这个背景之后,分为使用和不使用spring-boot-starter-amqp两种场景。...未使用spring-boot-starter-amqp场景下,我们直接给channel设置监听器并且将消息mandatory设置为true,即可实现消息无法路由之后通过该channel将消息return...Debug: 还是回到不使用SpringBoot代码,回调函数出打断点查看调用链。 监听器是被ChannelIN.processAsync()方法触发。...接下来分析为什么spring.rabbitmq.publisher-returns设置为flase场景下我们监听器为什么没有被加入集合。...= null我们第二步设置了ReturnsCallback,所以为true 那么就取决于isMandatoryFor(message)这个方法返回 而isMandatoryFor(message)

1.8K30

一线互联网大厂真实面试题集锦

finalize() 方法什么时候被调用?析构函数 (finalization) 目的是什么? 如果对象引用被置为 null,垃圾收集器是否会立即释放对象占用内存?...Java 线程池相关问题 Java 线程池是如何实现? 创建线程池几个核心构造参数? 线程池中线程是怎么创建?是一开始就随着线程池启动创建好吗?...构造方法注入和设注入有什么区别? Spring 框架中有哪些不同类型事件? FileSystemResource 和 ClassPathResource 有何区别?...举一个用 Java 实现装饰模式(decorator design pattern)?它是作用于对象层次还是类层次? Java 为什么不允许从静态方法访问非静态变量?...如何重新加载 Spring Boot更改,而无需重新启动服务器? Spring Boot 监视器是什么? 如何在 Spring Boot 禁用 Actuator 端点安全性?

83730

美团 Java 面试 154 道题分享!

finalize() 方法什么时候被调用?析构函数 (finalization) 目的是什么? 如果对象引用被置为 null,垃圾收集器是否会立即释放对象占用内存?...Java 线程池相关问题 Java 线程池是如何实现? 创建线程池几个核心构造参数? 线程池中线程是怎么创建?是一开始就随着线程池启动创建好吗?...构造方法注入和设注入有什么区别? Spring 框架中有哪些不同类型事件? FileSystemResource 和 ClassPathResource 有何区别?...举一个用 Java 实现装饰模式(decorator design pattern)?它是作用于对象层次还是类层次? Java 为什么不允许从静态方法访问非静态变量?...如何重新加载 Spring Boot更改,而无需重新启动服务器? Spring Boot 监视器是什么? 如何在 Spring Boot 禁用 Actuator 端点安全性?

1.3K40

9千字长文带你了解SpringBoot启动过程–史上最详细 SpringBoot启动流程-图文并茂

,会 new 一个SpringApplication 对象,创建这个对象构造函数做了一些准备工作,编号第2~5步就是构造函数里面所做事情 /** * Static helper that can...: SpringBoot三种启动方式 2、确定应用程序类型 SpringApplication构造方法内,首先会通过 WebApplicationType.deduceFromClasspath(...(); run方法代码段截图 7、将java.awt.headless设置为true 这里将java.awt.headless设置为true,表示运行服务器端,没有显示器器和鼠标键盘模式下照样可以工作...,它将maven和系统环境变量都加载进来了 11、忽略bean信息 这个方法configureIgnoreBeanInfo() 这个方法是将 spring.beaninfo.ignore 默认设为...=\ com.spring.application.MyExceptionReporter 接着我们application.yml 把端口号设置为一个很大,这样肯定会报错, server

5.8K53

美团JAVA面试154道题分享

finalize() 方法什么时候被调用?析构函数 (finalization) 目的是什么? 如果对象引用被置为 null,垃圾收集器是否会立即释放对象占用内存?...Java 线程池相关问题 Java 线程池是如何实现? 创建线程池几个核心构造参数? 线程池中线程是怎么创建?是一开始就随着线程池启动创建好吗?...构造方法注入和设注入有什么区别? Spring 框架中有哪些不同类型事件? FileSystemResource 和 ClassPathResource 有何区别?...举一个用 Java 实现装饰模式(decorator design pattern)?它是作用于对象层次还是类层次? Java为什么不允许从静态方法访问非静态变量?...如何重新加载 Spring Boot更改,而无需重新启动服务器? Spring Boot 监视器是什么? 如何在 Spring Boot 禁用 Actuator 端点安全性?

1.8K21

踩坑:@PostConstruct、@DependsOn、@Order注解嵌套使用解决Bean加载优先级问题

方法(myInit())调用执行在构造函数之后,Servlet init() 方法之前,Servlet destroy()方法之后。...class Test01 { // 该静态变量属性需要通过Spring容器赋值,(hello)定义application.properties。...: /** * Test02拥有一个@PostConstruct注解修饰init()初始化方法和无参构造函数 */ @Component public class Test02 { @PostConstruct...,控制台打印Test01类HELLO静态变量值,然后 init()方法执行时,控制台打印Test01类WORLD静态变量值。...因为,Test02类会在我们Spring Boot项目启动时首先被初始化调用,也就是说IOC容器会首先去加载Test02对象,而这时候Test01还尚未被加载到容器,这时候Test01两个静态变量

80700
领券