묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
에러가 나서 해결은 하긴했는데 이유가 궁금해요(서버구동시 생성자 매개변수 bean 2개주입으로 인한 에러)
안녕하세요.제가 aop를 프로젝트 다 만들고나서 서버를 구동하니 에러가 좀나더라구요.우선 상황은MemoryMemberRepository 클래스파일에 @Repository 어노테이션이 추가되어 있는 상태였으며, TimeTraceAop 클래스 생성 후 강의보면서 강사님의 코드를 입력해서 추가, 이후 서버를 구동하니 에러가 나더라구요.아래는 에러메세지 입니다.Parameter 0 of constructor in hello.hellospring.SpringConfig required a single bean, but 2 were found:- memoryMemberRepository: defined in file [(생략)\hello\hellospring\repository\MemoryMemberRepository.class]- springDataJpaMemberRepository: defined in hello.hellospring.repository.SpringDataJpaMemberRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration 해당 에러문을 보고 MemoryMemberRepository클래서파일에 추가되어있는 @Repository 어노테이션을 제거 후 서버를 재구동하니 에러없이 정상적으로 프로젝트가 잘 돌아갔습니다. 제 SpringConfig파일에는 @Configurationpublic class SpringConfig {/** 2. 스프링 데이터 JPA 사용후 추가한 부분*/private final MemberRepository memberRepository; public SpringConfig(MemberRepository memberRepository) {this.memberRepository = memberRepository;} @Beanpublic MemberService memberService() {return new MemberService(memberRepository);}}이렇게만 코딩되어 있는데요.여기서 궁금한게 왜 SpringConfig생성자가 호출될때 매개변수로 2개가 들어간건지가 궁금합니다.원래는 SpringDataJpaMemberRepository 하나만 들어가야 하는거 같은데 어떻게 SpringDataJpaMemberRepository와 MemoryMemberRepository가 동시에 생성자의 매개변수로 들어가려 했는지.. @Repository가 어떤 영향을 주는걸까요?이전 jpa 강의를 들을때는 MemberRepository로 사용할 매개변수를 직접설정했는데 그 코드도 주석처리가 되어있습니다. 그래서 이해가 되지 않아 게시판이 질문남깁니다
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
다대일 관계에서 일을 기준으로 페이징을 하려면 어떻게 해야하나요?
일대다 컬렉션 페치조인과 페이징은 기본적으로 양방향을 전제하고, 일을 기준으로 페이징을 하기 때문에 Batch Size 를 이용하는 것은 이해했습니다. Q. 그렇다면 컬렉션이 생기지 않는 다대일 단방향 매핑 구조에서 일 을 기준으로 페이징하려면 어떻게 해야할지 궁금합니다. 예를 들어 게시글(1) : 댓글 (N) 이고 댓글 -> 게시글 방향으로 다대일 단방향 매핑이라면, 게시글을 기준으로 페이징하고 싶을 때 어떻게 하면 될까요? 항상 영한님과 서포터님들께 감사드립니닷!!🙇♂️
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
변경감지 질문입니다.
변경감지가 되어 .persist없이 update문이 발생하는건 객체가 영속성 컨테이너에서 관리되고 있을때 만 변경감지가 일어아는건가요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
교안의 병합사용 부분에서 merge 매개변수 item 질문
em.merge(item) 에서 item이 아니라 itemParam이어야 하는거 아닌가 생각이 드는데 교안이 잘못 작성된거 맞나요?병합은 준영속 엔티티를 영속상태로 변경시키는거니까...
-
미해결코딩으로 학습하는 GoF의 디자인 패턴
팩토리메소드 = 추상팩토리?
이 코드는 팩토리 메소드 패턴이고,public interface ShipFactory { Ship createShip(); } 이 코드는 추상 팩토리 패턴입니다.public interface ShipPartsFactory { Anchor createAnchor(); Wheel createWheel(); } 팩토리 메소드 패턴은 product와 createor간의 의존성을 낮추는것을 목적으로, 서브 클래스인 concreator에게 의존성을 위임합니다. 추상 팩토리 패턴은 여러 객체의 생성이 있을때 여러 객체의 의존성을 낮추기 위해, 마찬가지로 서브 클래스인 concreator에게 의존성을 위임합니다그렇다면 사실상 차이는 생성하는 객체의 수 뿐인데, 왜 다른 이름으로 만들었는지 이해가 안가네요..
-
미해결스프링 시큐리티 OAuth2
로그아웃관련하여 질문드립니다!
안녕하세요!제가 강의를 듣고 직접 구현을 해보고 있는 중에 궁금한 점이 있습니다. 저는 인가서버에다가 로그인 페이지를 구성해서 아이디와 비밀번호를 입력하면 동의화면이 나와서 SCOPE 를 부여한 뒤 리소스 서버에 접근하는 로직의 흐름으로 구현을 생각해보고 있습니다.로그아웃을 하고나면 인가서버를 통해서 동의 받은 SCOPE도 다 날려서 인가서버 로그인화면으로 리다이렉트 하고 싶습니다. 제 바람과는 달리 계속 이미 인가가 된 상태가 되어서 마지막 강의 예제 코드를 기반으로 연구하고 있는데 127.0.0.1:8081/home 에서 로그아웃을 하고난 뒤 127.0.0.1:8081 로 리다이렉트 되도록 했는데 로그인링크를 누르면 127.0.0.1:9000/login 으로 가는 것이 아니라 바로 127.0.0.1:8081 로 이동해서 access token 버튼이 있는 화면으로 넘어갑니다. 제가 질문드리고 싶은 것은 로그아웃을 하고나서 로그인 하면 인가서버에 구현된 로그인 화면으로 이동해서 다시 로그인해서 동의화면을 받도록 하려면 어떤식으로 로직을 구성해야 할까요?ㅠ 몇 주 고민하다가 방법을 모르겠어서 질문드립니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
jpa repository.save 메서드 구현 코드를 보고 싶습니다
강사님 안녕하세요~ 회사에서jpa 사용하면서 깊이 생각 안하고 사용하다가궁금한점이 생겼습니다 특정 리포지토리가 있다고 가정하겠습니다@Repositorypublic interface 리포지토리 extends JpaRepository<도메인, Long>, JpaSpecificationExecutor<도메인> { 리포지토리.save(); 하면 스프링프레임웍 하이버네이트 구현체가 실행해준다고 하는데저는 실제 프레임웍 구현체 소스 코드를 보고 싶습니다제가 IDE 이클립스를 사용중인데 어디라이브러리나소스 코드를 보면 될까요리포지토리.save() -> █이메서드를 클릭하면org.springframework.data.repository.CrudRepository 다시 인터페이스이고 @NoRepositoryBeanpublic interface CrudRepository<T, ID> extends Repository<T, ID> {<S extends T> S save(S entity);=> █ CrudRepository 인터페이스의 save 메서드를 구현코드는또 어느라이브러리에 어떤 메서드를 확인하면 될까요? *.스프링, 스프링부트 강의 수강하며 계속 반복되는 얘기가유연하게 적용하기위해 많은 인터페이스를 사용하고구현체가 있다고 계속 얘기되는데그럼 그런 구현체를 최 하위의 클래스 메서드를 보는 방법이 어떻게 되는지 궁금하네요.. *.추가적으로 소스코드에는리포지토리.save(); =>인터페이스.save();인터페이스.메서드 를 호출했는데스프링 프레임웍에서 어떤 원리로인터페이스.메서드 => 구현체클래스.메서드가 호출되는지이해가 가지 않습니다 바쁘시겠지만 시간 나실때 답변 주시면 감사하겠습니다수고하세요.. #JPA#구현체#하이버네이트#hibernate
-
해결됨Do it! 알고리즘 코딩테스트 with JAVA
[그래프의 표현 실전 문제] 이분 그래프 판별하기(백준 1707) 코드 오류
강사님 항상 유익한 수업 잘 듣고 있습니다! 무료로 강의를 열어주셔서 정말 감사드립니다.[그래프의 표현 실전 문제] 이분 그래프 판별하기(백준 1707) 강의에서 38번째 라인 코드를 'DFS(1)'에서 'DFS(i)'로 수정이 필요해 보입니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
@SpringBootApplication 문제
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]저 @SpringBootApplication 가 문제로 뜨는데 들어가보니 저런 상태인데 뭐가 문제일까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
javax.persistence가 import되지 않습니다
jpa강의를 듣던 도중 강의내용대로 따라했는데 오류가 발생하여 질문드립니다. build.gradle 의존성에 jpa 추가한 뒤 새로고침 했는데 javax.persistence.entity가 import 되지 않습니다. jakarta.persistence.entity는 가능하길래 import하여 진행해봤는데 오류가 나타납니다. https://drive.google.com/file/d/1p2qPm_9abHOmEqKz2oariH7S8iWla_k-/view?usp=sharing
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
라이브러리 실행이 안돼요.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기 자료에 나와있는대로 했는데도 라이브러리 작동이 안되네요ㅠㅠ 매개변수가 비어있는 sql만 찍혀요! 뭐가 문제일까요?build.gradleplugins { id 'java' id 'org.springframework.boot' version '3.0.4' id 'io.spring.dependency-management' version '1.1.0' } group = 'jpabook' version = '0.0.1-SNAPSHOT' sourceCompatibility = '17' configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-devtools' testImplementation 'junit:junit:4.13.1' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.6' } tasks.named('test') { useJUnitPlatform() }application.yml콘솔창 select next value for member_seqfindMember == member: true2023-03-22T18:50:10.129+09:00 DEBUG 61227 --- [ main] org.hibernate.SQL : insert into member (username, id) values (?, ?)2023-03-22T18:50:10.157+09:00 INFO 61227 --- [ionShutdownHook] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'2023-03-22T18:50:10.157+09:00 TRACE 61227 --- [ionShutdownHook] o.h.type.spi.TypeConfiguration$Scope : Handling #sessionFactoryClosed from [org.hibernate.internal.SessionFactoryImpl@d3cce46] for TypeConfiguration2023-03-22T18:50:10.158+09:00 DEBUG 61227 --- [ionShutdownHook] o.h.type.spi.TypeConfiguration$Scope : Un-scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration$Scope@4462a887] from SessionFactory [org.hibernate.internal.SessionFactoryImpl@d3cce46]2023-03-22T18:50:10.160+09:00 INFO 61227 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...2023-03-22T18:50:10.178+09:00 INFO 61227 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.Process finished with exit code 0
-
미해결스프링 시큐리티 OAuth2
사용자 관리에 대해서 문의드립니다.
강의에서는 네이버나 구글을 통해 로그인을 진행하면 access token 을 받고 이를 통해 사용자정보를 받아오면 이를 인증완료로 보는 것 같은데요.일반적으로는 받아온 사용자정보를 가지고 OAuth Client 자체 DB 에 사용자마스터를 등록하고 별도의 사용자 식별키 관리를 해야하지 않는지요? 이러한 처리가 생략되어 있는 것 같은데 이 부분이 궁금합니다.
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Order Entity Cascade 관련 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]@OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) @JoinColumn(name = "delivery_id") private Delivery delivery;Order Entity의 코드입니다. 현재 Order와 Delivery의 관계에서 연관관계의 주인은 Order입니다. 그렇다면 Order에서 delivery의 값을 변경하면 연관관계의 주인이기 때문에 반영이 된다고 알고 있습니다. 그래서 cascade를 굳이 써야하나 고민을 하고있었습니다. 제가 생각해낸 이유는 연관관계의 주인이여서 Order에서 delivery의 값을 변경이 가능한 것은 객체 관점(delivery에 값이 입력되기만 함 영속성 컨텍스트에 저장 X)이고 cascade는 db관점에서의 접근이므로 cascade를 작성해 줘야 묶여서 영속성 컨텍스트로 넘어간다(cascade를 작성하지 않으면 order를 persist했을 경우 delivery에 값은 있지만 영속성컨텍스트로 넘겨주지않음). 입니다. 제가 생각한 방법이 맞는지 궁금합니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
객체의 의존성 주입 할때 주인 테이블에 대한 궁금증
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/)[질문 내용]안녕하세요. 제가 JPA 기본편을 들을 시간이 없이 실무에 바로 적용해보고자 JPA 활용을 먼저 듣게 되었습니다.그래서 의존성 주입에 대한 기본편 내용을 숙지하지 못해서 질문을 드립니다. 강사님께서 테이블 간의 FK지정 시 다 대 1 관계에서 무조건 다의 테이블에 Joincolumn을 엮고 1의 테이블에는 mappedby를 통해서 이 둘을 엮는다고 말씀하셨습니다.하지만, 무조건 적으로 다의 테이블에서만 이를 시행해야하나요? 그 반대로 할 수는 없는건가요???
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
for 문_ 35강 (~까지 수들의 합 구하기)
질문 -> //1. 2의 거듭제곱 반복문을 이렇게 만들어도 될까요? //2. 2^1, 2^2까지의 총합: ... 입니다. 출력되는 말을 다르게 하고 싶은 데 if 문이 너무 길어집니다. if 문 짧게 하고 만들고 싶습니다. public class _05_For { public static void main(String[] args) { //생각나서 만든 2의 거듭제곱 For 문 // 2의 0승부터 2의 10승까지의 합: 2047이 나와야 한다. // 출력되는 문장들의 말을 다르게 하고 싶다 2^1, 2^2까지의 총합: 이런 식으로 int Sum = 0; for (int s = 0; s < 11; s++) { Sum += Math.pow(2, s); //거듭제곱을 계산하기 위해 Math.pow함수(?)를 가져옴 if(s == 0) { System.out.println("2^0까지의 총합: " + Sum + " 입니다."); } else if (s == 1) { System.out.println("2^1까지의 총합: " + Sum + " 입니다."); } else if (s == 2) { System.out.println("2^2까지의 총합: " + Sum + " 입니다."); } // 2^10까지 표현하기에는 조건문이 너무 많아짐, 줄이는 방법을 알고 싶다. } System.out.println("2^의 1부터 10까지, 모든 수의 총합: " + Sum + " 입니다."); } }
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
mappedBy 하실때 "" 따옴표 안에서 자동완성 방법
강사님처럼 mappedBy 따옴표 안에서ctrl + space 눌러봐도 자동완성 제안이 안내려옵니다..인텔리제이는 아래 버전 사용하고 있습니다
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
localhost:8080 로그인 Unauthorized
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]localhost:8080 접속시 로그인창이 나오고 취소시 Unauthorized이런 오류가 나오네요 build.gradleapplicaton.properties 해결책을 알려주시면 감사하겠습니다 우선 프로젝트를 다시 생성해보겠습니다
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
불변 클래스 정의와 관련된 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]불변 클래스를 정의하기 위해서 세터 메서드를 빼거나 private로 둘 수 있다고 하셨는데, JPA 내부적으로 테이블에서 가져온 값을 객체로 주입하기 위해서 세터 메서드를 호출하기 때문에 저렇게 할 수 없지 않나요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
프로젝트 만들 때 선택사항
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.스프링 부트 프로젝트 만들 때 Packaging은 jar, war 둘중 무엇을 선택해야 하나요?java 버전은 11버전으로 진행하면 될까요?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
from절 서브쿼리 예시
hibernate 6부터 from절 subquery가 지원된다고 하셨는데 혹시 예시를 볼수 있을까요?