인프런 커뮤니티 질문&답변

김철준님의 프로필 이미지

작성한 질문수

실전! Querydsl

조회 API 컨트롤러 개발

yaml profiles 인식이 안 됩니다 ㅠ

해결된 질문

24.07.25 09:03 작성

·

108

0

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예

[질문 내용]
강의에 나온 내용대로 아래 처럼도 해 보고

spring:
  profiles:
    active: local

검색해서 나온대로 아래처럼도 해보았는데,

spring:
  config:
    activate:
      on-profile: local

오류도 뜨지 않고 콘솔에는 insert 쿼리가 아예 뜨지 않습니다 ㅠ

답변 2

0

y2gcoder님의 프로필 이미지

2024. 07. 25. 09:41

안녕하세요. 김철준님, 공식 서포터즈 y2gcoder입니다.
저는 보통 그럴 때 application.yaml 에서 띄어쓰기나 필요한 옵션이 누락되어있는지 먼저 확인하는 것 같습니다! 추가로 AI 답변과 함께 아래의 링크도 참고해주십쇼!

링크들로도 해결되지 않는다면 기동할 때의 로그와 application.yaml 을 보여주시겠습니까?

https://docs.spring.io/spring-boot/reference/features/profiles.html

https://lordofkangs.tistory.com/320

 

 

 

 

감사합니다.

김철준님의 프로필 이미지
김철준
질문자

2024. 07. 25. 10:31

앗 넵 그런데 우선 추가적으로 확인하고 있는데 혹시해서 @Profile("local")을 아래 코드에서 빼봐도 아예 insert가 안 들어가는 걸 봐서 init 클래스 자체에 문제가 있을지도 모르겠습니다 ㅠㅠ

spring:
  profiles:
    active: local
  datasource:
  #
    url: jdbc:h2:tcp://localhost/~/querydsl
    username: sa
    password:
    driver-class-name: org.h2.Driver
  jpa:
    hibernate:
      ddl-auto: create
    properties:
      hibernate:
#        show_sql: true
        format_sql: true
        use_sql_comments: true # jpql 쿼리를 코멘트로 보기
logging.level:
  org.hibernate.SQL: debug
  org.hibernate.type: trace
package study.controller;

import jakarta.annotation.PostConstruct;
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Profile;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import study.querydsl.entity.Member;
import study.querydsl.entity.Team;

@Profile("local")
@Component
@RequiredArgsConstructor
public class InitMember {

    private final InitMemberService initMemberService;

    @PostConstruct
    public void init() {
        initMemberService.init();
    }

    @Component
    static class InitMemberService {
        @PersistenceContext
        EntityManager em;

        @Transactional
        public void init() {
            Team teamA = new Team("teamA");
            Team teamB = new Team("teamB");
            em.persist(teamA);
            em.persist(teamB);

            for (int i = 0; i < 100; i++) {
                Team selectedTeam = i % 2 == 0 ? teamA : teamB;
                em.persist(new Member("member" + i, i, selectedTeam));
            }
        }
    }
}

 

김철준님의 프로필 이미지
김철준
질문자

2024. 07. 25. 10:52

앗 패키지가 문제였네요 해결했습니다 ㅠ

0

인프런 AI 인턴님의 프로필 이미지

2024. 07. 25. 09:06

안녕하세요, 인프런 AI 인턴입니다.

김철준님의 yaml profiles 인식이 안 됩니다에 대한 문제는 스프링 부트 2.4 이후 profile yml 설정과 관련되어 있습니다. 스프링 부트 2.4부터 프로파일 설정 방법에 변화가 있어, 예전 방식대로 설정하면 인식되지 않는 문제가 발생할 수 있습니다.

이 문제와 관련하여 이전에 비슷한 질문이 있었고, 아래에 해당 질문과 해결 방안이 제시된 링크를 참조하시면 도움을 받을 수 있을 것 같습니다.

  • profile 인식 방법에서는 spring.config.activate.on-profile을 사용하는 대신 spring.profiles.active를 사용하여 프로파일을 활성화하는 방법과, application-{프로파일명}.yml 형식으로 프로파일별 설정 파일을 구성하는 방법에 대해 설명하고 있습니다. 스프링 부트 2.4 이상에서는 application.yml에서 직접 프로파일을 활성화하는 대신, 프로그램 실행 시 사용할 프로파일을 지정해야 할 때가 있으며, 이를 통해 해결할 수 있는 방법을 제시합니다.

이 링크에서는 스프링 부트 2.4 이후 버전에서 프로파일을 사용할 때 주의해야 할 사항과 명확한 설정 방법에 대해 안내하고 있습니다. 질문하신 내용과 유사한 설정 문제를 다루고 있어, 설정 파일의 들여쓰기 및 프로파일 활성화 방법을 다시 확인하는 데 도움이 될 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.