묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
dataSource 우선순위(?)
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]ItemServiceApplication에 test일때만 dataSource를 직접 정의해주었는데인메모리 DB가 properties에 정의한 datasource보다 우선되는건가요?h2 서버 끄고 properties는 그대로 둔 채 돌려도 정상작동 하는 것으로 봐선 properties의 datasource는 아예 시도를 안 하는 것 같은데...인메모리가 있으면 무시하고 넘어가는 것인지 궁금합니다!
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
서버 시작 시 자동으로 브라우저 실행하기
서버 시작 시 자동으로 브라우저 실행하는 설정이 따로 있나요?
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
서블릿 컨테이너에 서블릿 등록
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]서블릿 컨테이너에 서블릿 객체를 등록한다의 뜻은 서블릿 객체를 스프링 빈으로 스프링 컨테이너에 등록한다는 것과 같은 뜻인가요? 이렇게 생각한 이유는 DispatcherServlet 서블릿 객체를 DispatcherServletConfiguration 설정 클래스(@Configuration)에서 @Bean을 통해 스프링 컨테이너에 스프링 빈으로 등록했기 때문입니다.
-
미해결스프링 핵심 원리 - 기본편
김영한 선생님 인텔리제이 테마 설정 질문입니다
스프링 잎사귀모양이랑 클래스마다 C로 표시되게 하는 테마는 어떻게 설정할 수 있을까요? 얼티밋에서만 가능한 설정이더라도 알려주시면 감사드리겠습니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
User와 loanhistory 관계
User가 UserLoanHistory를 가지게 됨으로써 대출하는 로직이 간단해지지만 UserLoanHistory관련 CRUD를 전부 User에서 비즈니스 로직을 처리해야하는 건가요? User가 처리하는 로직이 너무 많아지는 것 같아 이게 객체지향적인 게 맞나 고민이 되네요 현재 경우는 C U 밖에 없지만 만약 예를 들어서 작가와 책 엔티티가 있을 때 연관관계의 주인은 책에 있지만 작가가 보유한 책을 조회하는 로직을 더 간편하게 처리하기 위해 작가는 책을 리스트로 가지면서 생명주기를 관리하면, 책을 수정하거나 삭제할 때도 무조건 작가의 도메인에서 로직을 처리하게 되는 건가요? 단일책임원칙을 위배하는 것이 아닌가 고민이 되어 질문드립니다!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
김영한강사님 스프링 강의 로드맵 질문드려요.
안녕하세요.저는 얼마전에 미국에서 컴퓨터 과학을 전공한 사람입니다.자바에 대한 기본적인 이용은 할줄 아는 상태이구요. 앞으로 한 2달뒤에 취업을 해야하는데요. 자바 백엔드 신입으로 취직하기 위해 들어야 하는 최소 정도를 알고 싶어서요. 김영한 강사님이 보시기에 자바 백엔드 신입으로 일하는데 최소한 역량을 갖추려면 어떤 강의들을 들어야 하죠? 최소한이요.항상 존경합니다. 김영한 강사님.
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
jsonignore와 지연로딩?
[섹션3 - 간단한 주문조회 V1 엔티티를 직접 노출] 강의에서[6:09] 처음에 api를 호출했을때는 양방향 연관관계 때문에 무한루프가 발생하였는데요, 이때는 지연로딩에 의한 이슈가 없었는데[11:07] JsonIgnore를 추가하여 순환 참조가 되는 상황을 제거했을때는 왜 지연로딩에 의한 이슈가 생기는 건가요??잘 동작하던 프록시객체가 JsonIgnore가 생겼다고 에러가 나는 상황이 잘 이해가 안되어 질문을 올립니다
-
미해결스프링 핵심 원리 - 기본편
Map, List로 빈 조회 시 질문
안녕하세요 AllBeanTest에서 List랑 Map으로 AnnotationConfigApplicationContext(AutoAppConfig.class, DiscountService.class); 여기서 FixDiscountPolicy랑 RateDiscountPolicy를 어떻게 스프링빈으로 등록하는지 이해가 되지않습니다. 4강 스프링 빈 조회 - 동일한 타입이 둘 이상 에서 동일한 타입의 스프링빈이 두개 이상일시 에러가 발생하고, 이를 방지하기위해 빈 이름을 지정하는걸로 나와있는데 어떻게 두개를 같이가져와 map. list에 저장 할 수 있는건가요? 그리고 rateDiscountPolicy에 @MainDiscountPolicy 어노테이션이 설정되있으면 FixDIscountpolicy대신 RateDiscountPolicy만 우선으로 가져오는걸로 이해를 햇었는데 제 생각이 어디가 잘못된건지 이해가 되지않습니다. ㅠ
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
테스트가 실패해요
하다가 안돼서 깃허브 소스 복붙하고 돌려도 테스트가 실패해요.
-
미해결Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트
페이징 기능은 어떻게 테스트 하시나요?
안녕하세요. 강사님 강의듣고나서 새로운 시각이 열리게 된 것 같아서 요새 개발을 재밌게 배우고 있습니다. 감사합니다.배경public interface PostJpaRepository extends JpaRepository<PostEntity, Long> { @Query(value = "select new store.ppingpong.board.post.dto.PostWithWriter(p.id, p.title, p.postType, u.userInfo.nickname, p.createdAt) " + "from PostEntity p " + "join UserEntity u on p.userId = u.id " + "where p.forumId = :forumId", countQuery = "select count(p) from PostEntity p where p.forumId = :forumId") Page<PostWithWriter> findPostAndUsernameByForumId(@Param("forumId") String forumId, Pageable pageable); }(Post는 User의 id를 필드로 가지고 있고 Forum을 조회 시, forumId와 같은 Post리스트를 페이징처리하면서, User의 name필드 정보가 필요해서 다음과 같은 쿼리를 작성한 상황입니다.)페이징 기능이 필요해서, 제일 먼저 생각난게 spring data jpa에서 제공하는 페이징기능이었습니다.그런데, 테스트코드를 작성하려보니 뭔가 잘못된 것 같다고 느꼈습니다.문제상황@Override public Page<PostWithWriter> findByForumId(String forumId, Integer listNum, Pageable pageable) { List<Post> list = data.stream() .filter(post -> post.getForumId().equals(forumId)) .toList(); FakePage<Post> posts = new FakePage<>(list, pageable.getPageNumber(), pageable.getPageSize(), list.size()); posts.stream() .map() // ??? return null; }FakePostRepository를 작성하던 중 Page를 상속받은 FakePage를 구현 후, "스트림으로 PostWithWriter dto에 넣어줘야겠다" 라고 생각할 때였습니다.위 상황에서는 Post를 받는 정적 팩토리 메서드를 만들면 될 것 같긴했습니다. 그러나, 테스트코드를 위해서 메인코드를 수정해야하는 상황이 좀 이상하다고 생각했습니다.질문일단 제가 이 상황에서 드는 다양한 생각은dto는 단순히 전달목적이니 코드수정이 들어가도 상관없다.jpa의 페이징기능을 포기하고 Comparator를 구현해서 직접 정렬한다.페이징 기능에 한해서 Mock 프레임워크 기능을 이용한다. 물론 지금은 서비스가 단순히 repository를 호출하는거라 테스트 할 의미가 적은 것 같지만, 나중에 위 같은 상황에서의 대처가 궁금해서 질문올립니다.강사님의 답변을 듣고 싶습니다. 감사합니다!
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
도메인과 웹이 백, 프론트를 의미하는건가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]웹을 다른거로 바꾸어도 도메인은 바꾸지 않아도 된다고 설명해주신 부분이 프론트 클라이언트를 앱을 이용하든 웹을 이용하든, 리액트, html,css,is를 이용한 프론트를 이용하든 백앤드는 변경이 없어도 된다는것과 같은 말인건가요?
-
미해결스프링 웹 MVC
7:58 예제 코드 찾는 법
안녕하세요 기선님!기선님의 스프링 강좌 재탕하고 있습니다.7:58 부분에 스프링의 테스트 코드 예제는 보통 어떻게 검색하여 찾으시는건가요?그냥 깃허브에서 검색하셨는지 꿀팁이 있다면 알려주시면 감사하겠습니다.!
-
미해결스프링 부트 - 핵심 원리와 활용
properties파일 혹은 yaml파일을 통해 설정 데이터를 관리하는 방법에 대해 질문이 있습니다.
안녕하세요 강의 잘 보고 있습니다. 강의에서 언급해주신 내부 파일을 통한 설정 데이터 관리에 대해 궁금한 점이 있어 질문 드립니다. 강의에 있는 내용대로 소스코드와 설정데이터를 같이 관리한다고 하였을때 깃헙을 통해 버전관리를 하게 되면(public 레포지토리라 가정) 외부에 설정 정보가 노출되는 보안상 문제가 발생하게 되지 않을까요? 해당 이슈를 막기 위한 방법으로는 깃 이그노어에 설정파일을 추가하고 pull할 때 마다 설정파일을 공유를 하는 방법이 있을것 같습니다. 그러나 이는 설정 파일에 대한 버전을 관리하지 못하는 문제점이 발생하기에 바람직한 방법은 아니라 생각합니다. 이러한 상황에 대해서 버전관리 레포를 private으로 하는것 이외의 해결책은 존재하는지 궁금합니다.
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
authentication관련 질문...
public void login(Account account) { System.out.println(account); UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(account.getNickname(), account.getPassword(), Collections.singleton(new SimpleGrantedAuthority("ROLE_USER"))); SecurityContextHolder.getContext().setAuthentication(token); }우선 AccountService에 있는 login입니다.제가 테스트를 하던 도중 나머지는 다 되는데 authetication부분에서 문제가 있는것을 발견했습니다. 단위테스트로 하다보니 권한이 부여가 되지 않아서 회원가입을 해도 다시 원상태로 복구되더군요 springsecurity6로 바뀌면서 새로 바뀐부분이 있길래 구글링해서 바꿀만큼 바꿔보고 찾을만큼 찾아봤다 생각했는데도자꾸 권한부여 부분에서 문제가 생깁니다(위의 login함수)이럴경우 어떻게 바꾸어야 할까요...? 저 위에 SecurityContextHolder.getContext().setAuthentication(token); 라는 코드전에 토큰을 출력해 보니UsernamePasswordAuthenticationToken [Principal=jungsik, Credentials=[PROTECTED], Authenticated=true, Details=null, Granted Authorities=[ROLE_USER]]이렇듯 AUtheticated는 true로 반환되는데 redirect될때는 권한이 사라지는것 같습니다
-
해결됨실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
Open 키워드를 사용해야 하는 이유
안녕하세요 강사님 덕분에 편히 배우고 있습니다.다름이 아니라 이번 강의 초반에 @Transactional 어노테이션을 사용할 시 open 키워드를 클래스와 매서드에 다 사용해주어야 하고, 만약 이게 싫다면 플러그인을 적용해야 한다고 말씀하셨는데요,찾아보니 코틀린에서는 기본적으로 모든 클래스가 최종 클래스고, 그렇기 때문에 상속이 되지 않아 open 키워드를 사용해 상속 가능성을 열어두어야 한다는 것 같더라구요.그런데 왜 이게 @Transactional 어노테이션을 사용할 때도 해당되는 내용인지 잘 모르겠습니다. 프록시 객체가 생성되기 때문인 걸까요?제가 코틀린 기본 강의를 들었음에도 잘 기억이 나질 않아 질문드립니다. 항상 감사드립니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
안녕하세요 다른분 질문에서 강사님에 답변에서 질문있습니다.!!
똑같은 이름의 책 등록을 막기 위해서는 스프링 부트의 멀티스레드 구조와 단일 인스턴스 - 서버가 1대인 경우 - 일 때의 synchronized 구문, 멀티 인스턴스 - 서버가 N>=2 대 인경우 - 일 때의 DB unique key 등을 언급해야 하고, (이 과정에서 서버의 인프라도 설명이 들어갑니다!) 동시 대출을 방어하기 위해서는 DB의 Lock(잠금) 종류와 원리에 대해 설명해야 합니다. 이렇게 답변주셨는데 대용량 트래픽 개인프로젝트를 설계한다고 해야한다면 서버를 여러대 생각을 하고 DB unique key를 생각을 해야할지 먼저 서버 1대를 생각하고 synchronized 구문으로 똑같은 이름의 책 등록을 막아야할지 고민입니다.!!
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
그럼 연관관계를 사용하는 것이 항상 좋을까?라는 말씀에 질문있습니다.
비즈니스 요구사항,기술적인 요구사항,도메인 아키텍처 등 여러 부분을 고민해서 연관관계를 사용을 선택해야한다고 하셨고 도메인을 설계할 때 이거는 이렇게 하니까 이렇게 하자 저거는 저렇기 때문에 저렇게하자라고 하셨습니다.실례가 될수 있지만 강사님께서는 어떻게하시는지 예시를 좀 들어주실수 있을까요..?개인프로젝트할때 도움이 될것같습니다!!!
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
생성 메서드 질문! Static을 왜 붙이는건가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]생성메서드의 용도가 갑자기 까먹었는데그냥 생성자로 넣어주려는걸로 아는데Static으로 정적으로 왜쓰는건가요?Static 빼면 안되나요?
-
미해결스프링 핵심 원리 - 기본편
설정 관련
강의 노트에서 build and run using과 run tests using 설정에서 spring3.2 이상부터는 Gradle을 설정하라고 하셨는데검색했더니 run tests using를 IntelliJ로 설정해야 테스트 코드를 실행했을 때 성공테스트 목록이 보인다고 하는데run tests using만 intelliJ로 설정해도 코드가 돌아가는데 이상이 없을까요?
-
미해결스프링 핵심 원리 - 고급편
ContextV1 은 템플릿 콜백 패턴이 아닌가요?
ContextV2는 템플릿 콜백 패턴이라고 하셨는데ContextV1 은 템플릿 콜백 패턴이 아닌가요?