>source
문제

@Value가 항상 기본 calue를로드하기 때문에 무언가를 제대로 이해하지 못했다고 생각합니다.

자바 코드

따라서 다음과 같은 것이 있습니다 :

@Value("${disableQuerySecurityDebug:false}")
private boolean disableQuerySecurityDebug;

이것은 항상 false로 설정되어 있습니다.

속성 파일 :application-disableQuerySecurityDebug.properties

application-disableQuerySecurityDebug.properties 라는 속성 파일이 있습니다 .

파일 안에 다음과 같은 항목이 있습니다 :

disableQuerySecurityDebugMne=true

그리고 다음 프로파일로 응용 프로그램을 실행합니다. disableQuerySecurityDebugMne

값이 true로 설정 될 것으로 예상했지만 항상 false입니다.

업데이트

데드 풀의 답변을 바탕으로 다음과 같이 끝났습니다.

   @Profile("disableQuerySecurityDebug") @Data
    @Configuration
    public class DisableSecurityConfig implements DisableQuerySecurityDebug {
        @Value("${disableQuerySecurityDebug:true}")
        private boolean securityDisabled;
    }
    @Profile("!disableQuerySecurityDebug") @Data
    @Configuration
    public class EnableSecurityConfig implements DisableQuerySecurityDebug{
        @Value("${disableQuerySecurityDebug:false}")
        private boolean securityDisabled;
    }
    public interface DisableQuerySecurityDebug{
        public boolean isSecurityDisabled();
    }


  • 답변 # 1

    @Value  주석은 yml 에서 스프링 빈에 속성 값을 주입하는 데만 사용됩니다  또는 properties  파일

    와이즈 비즈

    특정 프로파일을 기반으로 값을 주입하려면

    This annotation can be used for injecting values into fields in Spring-managed beans and it can be applied at the field or constructor/method parameter level.

    를 사용하십시오.  수업 중

    @Profile
    
    

    다음 스위치를 사용하여 명령 줄에서 지정할 수도 있습니다.

    @Profile("disableQuerySecurityDebug")
    @Configuration
    public class Config {
     @Value("${disableQuerySecurityDebug:false}")
     private boolean disableQuerySecurityDebug;
      }
    
    
    java -jar demo.jar --spring.profiles.active=disableQuerySecurityDebug

관련 자료

  • 이전 c - stm32 시리얼 dma - 스트림의 시작 찾기
  • 다음 java - 이전에 자동 연결된 객체에서 Bean 객체를 다시 초기화하는 방법은 무엇입니까?