반응형
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name
'bean_name': Unsatisfied dependency expressed through field 'field'; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating bean with name
'bean_name': Injection of autowired dependencies failed; nested exception is
java.lang.IllegalArgumentException: Could not resolve placeholder 'something' in value
"${something}"
...
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with
name 'bean_name': Injection of autowired dependencies failed; nested exception is
java.lang.IllegalArgumentException: Could not resolve placeholder 'something' in value
"${something}"
...
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder
'something' in value "${something}"
...
@Value("${...}")값이 적용이 안되는 줄 알았다.
보통이라면....
1. 오타때문에 Profile에서 선언한 Property값과 @Value의 값이 일치 하지 않아서
2. pom.xml의 packaging이 올바르지 않아 application.yml파일을 읽지 못해서
3. applicatiom.yml처럼 파일명이 잘못되어 읽지 못해서
4. 적용된 Profile이 설정되지 않거나 잘못 설정해서
등등의 이유로 이런 일이 발생한다고 한다.
혹시나 타입때문에 그런가 하고 DataType도 확인
Map으로 주입받을 때 : @Value("#{${...}}")
List나 String등으로 주입받을 때 : @Value("${...}")
확인결과 이상없음...
Profile구성 확인
// 그룹으로 사용
spring:
profiles:
group:
local: devprop,common
---
spring:
profiles:
group:
dev: devprop,common
---
// 각각 Property 선언
spring:
profiles:
group:
prod: prodprop,common
---
spring:
config:
activate:
on-profile: devprop
---
spring:
config:
activate:
on-profile: prodprop
---
spring:
config:
activate:
on-profile: common
정상적으로 되어있음
뭐가 문제일까 해서 Profile을 주석처리 해봤는데 이상함을 감지...
Profile설정시 체크박스의 체크 여부로 된다고 알고있었으나 주석처리 해도 나타나는등 정상적인 동작을 하지 않는다.
Run Configuration에서 VM option에서
-Dspring.profiles.active=local
설정값을 강제로 설정하니 동작한다....
관련하여 찾아보다 알게 된 사실은
저 체크박스는 Maven의 POM.xml에서 설정되어 나타나는 것이라고 한다.
<properties>
...
</properties>
<profiles>
<profile>
<id>local</id>
<properties>
<env>local</env>
<maven.test.skip>true</maven.test.skip>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>prod</id>
<properties>
<env>prod</env>
</properties>
</profile>
</profiles>
<dependencies>
...
</dependencies>
이렇게 설정하면 local과 prod라는 항목의 체크박스가 나타나게 된다.
반응형
'Backend > Spring | SpringBoot' 카테고리의 다른 글
[Error Log] PropertyReferenceException, NoSuchBeanDefinitionException, UnsatisfiedDependencyException (0) | 2024.02.21 |
---|---|
[Spring] JPA 기본키 전략 (0) | 2024.02.21 |
Failed to load resource: the server responded with a status of 404 () (0) | 2024.02.19 |
i18n (0) | 2024.02.19 |
Tomcat 에러 (0) | 2024.02.19 |