inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

172만명의 커뮤니티!! 함께 토론해봐요.

준영속 상태 질문

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 준영속 상태란 persist context 안에서 한번이라도 관리된 적이 있는 entity의 상태를 의미한다고 알고 있습니다. 하지만 찾아본 바에 의하면 jpa가 '한번이라도 관리된 적이 있는지' 여부를 추적하는 메커니즘을 가지고 있는 것 같지는 않고, 단순히 식별자 여부로 판단하는 것 같은데 그렇다면 Member memberA = em.find(Member.class, 1L); Member memberB = new Member("B", memberA.getId()); memberB 도 준영속 상태라고 보는 것이 맞나요? memberB 가 준영속 상태가 아니라면 사실상 준영속 상태를 만드는 방법은 detach() 를 호출하는 방법밖에 없는 건가요? 감사합니다.

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
댓글 1 좋아요 0 조회수 85

(해결) 각 테스트가 상태를 공유하지 않습니다.

해결됨

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] "회원 리포지토리 테스트 케이스 작성" 강의에서 MemoryMemberRepositoryTest 를 작성하시며 @AfterEach 를 통해 각 테스트 케이스가 끝날 때 마다 repository 필드의 상태를 초기화해야 한다고 말씀하셨습니다. 그런데 저는 별 다른 오류가 나타나진 않아서 다음과 같이 작성해봤습니다. @AfterEach void afterEach() { System.out.println(repository.hashCode()); } 그랬더니 각 repository 의 해쉬가 서로 다르더라구요. MemoryMemberRepository 구현 내부에서 상태를 출력하게 해보면, 매 테스트 케이스마다 새로운 상태가 되는 것으로 보입니다. 제가 잘못 작성한 부분이 있는 걸까요? 아니면 스프링, 라이브러리 버전의 문제인가요? 전체 코드는 다음과 같습니다. 읽어주셔서 감사합니다. // MemoryMemberRepository.java package hello.hello_spring.repository; import hello.hello_spring.domain.Member; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Optional; public final class MemoryMemberRepository implements MemberRepository { private final Map<Long, Member> store = new HashMap<>(); private long sequence = 0; @Override public Member save(Member member) { member.setId(++sequence); store.put(member.getId(), member); return member; } @Override public Optional<Member> findById(Long id) { return Optional.ofNullable(store.get(id)); } @Override public Optional<Member> findByName(String name) { return store.values() .stream() .filter(member -> member.getName().equals(name)) .findAny(); } @Override public List<Member> findAll() { return store.values() .stream() .toList(); } public void clearStore() { store.clear(); } } // MemoryMemberRepositoryTest.java package hello.hello_spring.repository; import hello.hello_spring.domain.Member; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.*; class MemoryMemberRepositoryTest { MemoryMemberRepository repository = new MemoryMemberRepository(); @AfterEach void afterEach() { System.out.println(repository.hashCode()); } @Test void save() { var member = new Member(); member.setName("spring1"); repository.save(member); var result = repository.findById(member.getId()).get(); assertThat(member).isEqualTo(result); } @Test void findByName() { Member member1 = new Member(); member1.setName("spring1"); repository.save(member1); Member member2 = new Member(); member2.setName("spring2"); repository.save(member2); var result = repository.findByName("spring1").get(); assertThat(result).isEqualTo(member1); } @Test void findAll() { Member member1 = new Member(); member1.setName("spring1"); repository.save(member1); Member member2 = new Member(); member2.setName("spring2"); repository.save(member2); var result = repository.findAll(); assertThat(result).hasSize(2); } }

  • java
  • spring
  • mvc
  • spring-boot
귀여운 고양이 댓글 1 좋아요 0 조회수 259

spring security 6부터 Implicit 지원 안하네요

미해결

스프링 시큐리티 OAuth2

spring security 6부터 AuthorizationGrantType.IMPLICIT 가 제거되어서 OAuth2AuthorizationRequestException 이 발생합니다. spring security 6로 실습 따라가면서 학습하시는 분들은 참고하세요 https://github.com/spring-projects/spring-security/issues/11506

  • java
  • spring
  • spring-boot
  • oauth
시나모롤 댓글 1 좋아요 0 조회수 289

환경변수 이후 build failed

해결됨

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

환경변수 까진 다시 설정했습니다만.. build 안되네요

  • java
  • spring
  • mvc
  • spring-boot
dmlfla7520 댓글 2 좋아요 0 조회수 135

정신이 나갈것같아요

해결됨

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

ERROR: JAVA_HOME is set to an invalid directory: C:\Program Files\Java Please set the JAVA_HOME variable in your environment to match the location of your Java installation. C:\study\hello-spring> 환경변수에 java-home 추가해서 경로 다시쓰고 자바 23버전 설치하고 인텔리제이 자바23 통일하고 다해봤는데. 안되네요

  • java
  • spring
  • mvc
  • spring-boot
dmlfla7520 댓글 1 좋아요 0 조회수 221

[16강] 확장함수 관련 질문입니다!

미해결

자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)

안녕하세요 강사님 확장함수 관련하여 질문이 있습니다. 강의 중에 확장함수는 원본 클래스의 private, protected 멤버 접근이 안된다. 라고 말씀해주신 부분이 있습니다. 제가 확장함수를 이해하기로는 특정 클래스에 내가 사용할 특정 로직을 심는 함수 라고 이해를 했습니다. 이렇게 이해를 하고 나니 어짜피 외부에서는 확장함수로 추가할 원본 클래스의 private 혹은 protected 멤버에 접근이 불가능할텐데, 확장함수는 원본 클래스의 private, protected 멤버 접근이 안된다. 내용은 어디에 어떻게 적용이 되는 것인지 이해가 잘 가지 않습니다. 혹시 어떠한 경우에 적용이 되는 내용인지 조금 더 구체적인 예시를 들어주실 수 있으실까요 ?

  • java
  • kotlin
  • 객체지향
denia park 댓글 2 좋아요 1 조회수 145

22강 다차원 배열과 문자열 배열 j=0으로 선언되는 사유

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

22강 다차원 배열과 문자열 배열 j=0으로 선언되는 사유가 궁금합니다. 04:38 에 for 문 2개인데 첫번째 for문 탈출 후에 두번째 for 문에서 j=2 상태에서 위 for문으로 올라갈때 j가 다시 j=0으로 선언되는 사유가 궁금합니다.

  • python
  • java
  • c
  • 정보처리기사
s 댓글 2 좋아요 0 조회수 182

메인 페이지로 접속해도 login url로 리다이렉트가 되지 않습니다..

미해결

스프링 시큐리티

@Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .antMatchers("/user").hasRole("USER") .anyRequest().permitAll(); http.formLogin(); } } @RestController public class SecurityController { @GetMapping("/") public String index() { return "home"; } @GetMapping("/user") public String user() { return "user"; } }

  • java
  • spring-boot
  • spring-security
강프로그래머 댓글 1 좋아요 0 조회수 265

명령프롬프트 gradle builder 실행

해결됨

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

경로 찾아서 gradle builder 하니 오류가 뜹니다. gradle clean builder 로 해도 오류가 뜨네요. 자바 경로를 찾을 수 없다고 뜨는 것 같은데...

  • java
  • spring
  • mvc
  • spring-boot
dmlfla7520 댓글 2 좋아요 0 조회수 155

spring-data-jpa 연습 중 순환참조 오류가 발생했습니다.

미해결

안녕하세요. 최근 spring-data-jpa 를 공부하다 이상한 순환 참조 오류를 발견했습니다. 그런데 도통 납득이 되지 않아 여쭤보고자 질문 드립니다. spring-data-jpa 를 사용하기 전, 저는 주로 MyBatis 를 아래처럼 주로 사용했습니다. // 주로 mybatis interface 인 mapper 를 먼저 선언하고 @Mapper public interface MyBatisMapper {/* ... */} /* ------------ */ // DAO 객체에 주입해 사용하는 형태로 사용했습니다. @Repository public class MyBatisRepo { private final MyBatisMapper mapper; public MyBatisRepo(MyBatisMapper mapper) { this.mapper = mapper; } /* 생략 */ } 그래서 JPA 에서도 이처럼 사용해 볼까 하는 마음에 연습하던 중, 순환참조 오류가 발생하였습니다. 아래는 spring-data-jpa 에서 오류가 발생한 코드입니다. TestEntity : 연습용 엔티티 @Entity public class TestEntity { @Id private Long id; } DAO 인터페이스 : repository 규약 public interface TestRepo { // 연습용이라 텅 비어있습니다. } JPA 인터페이스 public interface JPATestRepo extends JpaRepository<TestEntity, Long> { // 연습용이라 텅 비어있습니다. } Repository 구현체 @Repository public class JPATestRepoImpl implements TestRepo { private final JPATestRepo jpaRepo; public JPATestRepoImpl(JPATestRepo jpaRepo) { this.jpaRepo = jpaRepo; } // 연습용이라 이후 아무 내용도 없습니다. } 실행시 발생하는 에러 2024-10-19T19:46:00.760+09:00 WARN 66384 --- [testing] [ main] s.c.a.AnnotationConfigApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'JPATestRepoImpl' defined in file [/~~~/Desktop/Coding/testing/build/classes/java/main/core/testing/JPATestRepoImpl.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'JPATestRepoImpl': Requested bean is currently in creation: Is there an unresolvable circular reference? 2024-10-19T19:46:00.761+09:00 INFO 66384 --- [testing] [ main] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default' 2024-10-19T19:46:00.762+09:00 INFO 66384 --- [testing] [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated... 2024-10-19T19:46:00.807+09:00 INFO 66384 --- [testing] [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed. 2024-10-19T19:46:00.811+09:00 INFO 66384 --- [testing] [ main] .s.b.a.l.ConditionEvaluationReportLogger : Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled. 2024-10-19T19:46:00.825+09:00 ERROR 66384 --- [testing] [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPLICATION FAILED TO START *************************** Description: The dependencies of some of the beans in the application context form a cycle: ┌──->──┐ | JPATestRepoImpl defined in file [/~~~/Desktop/Coding/testing/build/classes/java/main/core/testing/JPATestRepoImpl.class] └──<-──┘ Action: Relying upon circular references is discouraged and they are prohibited by default. Update your application to remove the dependency cycle between beans. As a last resort, it may be possible to break the cycle automatically by setting spring.main.allow-circular-references to true. Process finished with exit code 1 콘솔 에러에 따르면 JPATestRepoImpl 가 자기 자신을 의존해 순환참조가 발생한다고 합니다. 하지만 JPATestRepoImpl 는 (코드에서 볼 수 있듯이) JPATestRepo 를 주입받을 뿐, 자기자신을 의존하고 있지 않습니다. 게다가 더 혼란스러운 점은 만약 JPATestRepoImpl 의 이름을 다른 것으로 바꾸면 (예를 들어 TestRepoJPAImpl) 거짓말처럼 순환 참조 오류가 없어집니다. 제가 추측하기로는 스프링이나 JPA 가 bean 이름을 헷갈려 발생하는 오류 같은데, 이를 헷갈려 하는 이유를 도통 모르겠습니다. 당연히 컴퓨터 재시작, 프로젝트 clean, rebuild, 프로젝트 재생성해 시도해봤지만 모두 같은 현상이 나타납니다. 도대체 어떤 이유 때문에 이런 현상이 일어나는 걸까요...? Github repo : https://github.com/jbw9964/testing

  • java
  • spring
  • spring-boot
  • jpa
  • spring-data-jpa
  • intellij
정준상 댓글 2 좋아요 0 조회수 493

인증을 세션이 아닌 jwt로 할 경우 질문입니다.

미해결

스프링 시큐리티 OAuth2

현재 oauth2Login api를 사용해서 사용자 로그인 인증에 성공하면 인증객체가 세션에 저장되고, 이후 인가서버에 code 요청시 OAuth2AuthorizationEndpointFilter 에서도 securityContext에 저장돼있는 인증객체로 인해 인증성공으로 판단후 code를 발급합니다. 근데 세션 기반이 아닌, jwt 토큰을 받아서 검증후 인증을 처리하는 로직이라면 jwt 토큰을 검증하는 필터인 resource Server api의 필터가 OAuth2AuthorizationEndpointFilter 보다 뒤에 있기 때문에 인증객체가 없어서 코드발급을 안해줄텐데 이럴땐 어떻게 해야하나요? jwt토큰을 검증하고 인증객체를 만드는 필터를 OAuth2AuthorizationEndpointFilter 앞에 만든다고 쳐도 그러면 resource Server api의 필터와 똑같이 동작하는 필터가 생기는건데 좋은 방법인것 같진 않습니다. 어떻게 해야 하나요?

  • java
  • spring
  • spring-boot
  • oauth
에욱 댓글 2 좋아요 0 조회수 214

Resouce owner 인증 전 단계 질문입니다.

미해결

스프링 시큐리티 OAuth2

클라이언트가 인가서버에게 인가코드를 요청하기 전에 사용자인증을 받기 위해 사용자 id, 비밀번호를 입력하는 단계가 먼저 거치고, 인증이 되면 인가서버에게 /oauth2/authorize url로 response_type=code ~~ 이런식의 정보를 포함해서 요청하게 되는데 그러면 사용자가 인증받을때 입력한 사용자 id, 비밀번호를 통해 인증처리를 하는건 인가서버에서 하는게 아닌건가요? 인가서버에서 하는거라면 입력한 사용자 id, 비밀번호는 어떤 필터에서 처리하는건가요?

  • java
  • spring
  • spring-boot
  • oauth
에욱 댓글 2 좋아요 0 조회수 128

스캐너 사용하는 문제풀이중 에러코드

미해결

김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 스캐너 사용한 여러 문제풀이시 전부 같은 에러코드로 컴파일이 되지 않는데요.강사님이 쓰신 코드와 완전히 같은데도 말이죠. 어떻게 해결 하나요 ?

  • java
  • 객체지향
문희영 댓글 3 좋아요 0 조회수 259

2018 연속된 자연수의 합 구하기 백준 사이트에서 메모리 초과 오류가 발생합니다.

미해결

Do it! 알고리즘 코딩테스트 with JAVA

이유가 뭘까요 ....? import java.util.Scanner; class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int count = 1; int startIndex = 1; int endIndex = 1; int sum = 1; int n = sc.nextInt(); while(endIndex != n) { if(sum == n){ count++ ; endIndex++ ; sum = sum + endIndex; } else if(sum > n) { sum = sum - startIndex; startIndex++ ; } else { endIndex++ ; sum = sum + endIndex; } System.out.print(count); } } }

  • java
  • 코딩-테스트
  • 알고리즘
yujinkim301 댓글 1 좋아요 0 조회수 221

Java기출변형

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

29:30 마지막 세줄 System.out.println(result(1); System.out.println(result(2); System.out.println(result(3);은 왜 출력안하나요?

  • python
  • java
  • c
  • 정보처리기사
SUDAM 댓글 2 좋아요 0 조회수 184

3회 대비영상 2번째 동영상 질문있어요.

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

int arr[2] = {++a, b++} printf(a,b) printf(arr[0],arr[1]); 배열안에는 왜 b++의 값이 6으로 출력되지 않는가요? 배열에서 후위 연산자가 적용이 안된다고 보면 되는것일까요? (설명하신대로 배열에 적용 후 +1이 되기때문에 미적용?) 왜 자식클래스의 sharedMethod 호출됨이 출력되지..? 오류가 나야하는게 아닌가..? 10분동안 봤는데 이제보니 소문자의 parent였네요.. 낚시 제대로 당했습니다..ㅠㅠ 2번은 해결완료..!

  • python
  • java
  • c
  • 정보처리기사
주서 댓글 1 좋아요 0 조회수 117

32:14 질문있습니다!

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

안녕하세요. 혹시 답을 SELECT * FROM 제품 WHERE 단가 < (SELECT AVG(단가) FROM 제품); 으로 해도 상관 없을까요? 질문은 동영상 강의에 들어가서 오른쪽에 커뮤니티 버튼을 통해 해주세요. 그래야 어떤 강좌에서 질문하셨는지 알 수 있습니다. 영상에서 몇 분 몇 초 대를 알려주셔야 제가 한 번에 질문 내용 확인이 가능합니다. 이미 다른 누군가가 질문을 한 이력 이 있을 수 있습니다. 질문 게시판을 한 번 확인 부탁드립니다. 학교의 과제나 타 강사의 코드 등 외부 수업 자료에 대해서는 답변하지 않습니다. 제가 다루는 커리큘럼 외의 이론이나, 너무 디테일한 컴퓨터 이론에 대해서는 답변 드리지 않습니다. 시험에 안 나오는 경우가 많고, 나와 봤자 1문제 나오는데 외워야 할 부분이 많은 것 등 (예시: 서브넷 마스크 계산) 질문을 올릴 때 이 글은 모두 지우고 내용을 입력해주세요.

  • python
  • java
  • c
  • 정보처리기사
문홍준 댓글 2 좋아요 0 조회수 150

SQL 문제 답변 작성시 계행 준수해야할까요?

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

SQL 쿼리문 작성시 계행을 잘 지켜야하는지 궁금합니다

  • python
  • java
  • c
  • 정보처리기사
zmfhth54 댓글 2 좋아요 0 조회수 205

this 사용에 관한 질문 드립니다.

해결됨

김영한의 실전 자바 - 기본편

[질문 내용] 안녕하세요 항상 좋은 강의 감사드립니다. 영한님께서는 this를 무조건 붙이는 방법론에 대해서 추천하시지 않는다고 하셨는데, 그럼 this의 사용을 피하기 위해 의도적으로 변수명을 다르게 지으시는지 여쭤보고 싶습니다. 코드는 깔끔해지겠지만 오히려 헷갈리는 상황이 발생할수도 있겠다는 생각이 들어 여쭤봅니다! 감사합니다!

  • java
  • 객체지향
조재룡 댓글 1 좋아요 0 조회수 137

업케스팅 질문입니다

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

20:57에서 main함수 내에 parent.childMethod(); 를 넣는다면 업케스팅된 상황에 자식에만 있는 것을 불러오는 것이라 오류가 발생한다 가 맞을까요??

  • python
  • java
  • c
  • 정보처리기사
asdfa 댓글 2 좋아요 0 조회수 145

인기 태그

인프런 TOP Writers

주간 인기글