묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 핵심 원리 - 기본편
필드에 빨간색 오류가 뜨는 이유
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.[질문 내용]위의 코드에서 생성자를 설정해 주지 않으면 빨간색 오류가 뜨는데, memberRepository가 초기화되지 않아서라고 합니다. 여기서 궁금한 점이 필드만 있으면 생성자를 따로 코드로 쳐주지 않아도 자동으로 기본 생성자 설정을 해주지 않나요? 아래 사진에서는 example클래스에서 필드만 넣어줘도 빨간색 줄이 뜨지 않는데 ... 둘의 차이를 모르겠습니다.
-
미해결스프링 핵심 원리 - 기본편
xxxxxxxxImpl 네이밍 룰
[질문 내용]인터페이스를 구현한 구체 클래스가 하나인경우 xxxxxImpl이라는 네이밍을 관례적으로 사용한다고 하셨는데제가 생각했을때는 구현클래스가 하나일경우(기능확장이 필요없다고 판단될경우) 굳이 인터페이스를 만들 필요가 없을것같은데,1.인터페이스를 구현한 구체클래스가 하나인경우가 많은편인지? 혹은 어떤경우인지?2. 이 네이밍룰을 따른후 혹시 구현클래스가 하나더 생긴다면 네이밍을 수정하는지..?
-
해결됨스프링 핵심 원리 - 기본편
CannotLoadBeanClassException
스프링 빈 설정 메타 정보-BeanDefinition 강의 실습 중에 마지막에 xml 파일로 beanDefinition을 만들게 하니까 이런 오류가 뜨더군요그리고 이전에 만들었던xmlAppContext에서도 같은 오류가 발생했는데요 pdf파일의 예시 코드를 복붙해서 돌렸는데도 같은 오류가 나서질문 드립니다 org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [hello.core.member.MemberServiceImpl] for bean with name 'memberService' defined in class path resource [appConfig.xml]; nested exception is java.lang.ClassNotFoundException: hello.core.member.MemberServiceImplappConfig.xml<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="memberService" class="hello.core.member.MemberServiceImpl"> <constructor-arg name="memberRepository" ref="memberRepository"/> </bean> <bean id="memberRepository" class="hello.core.member.MemoryMemberRepository"/> <bean id="orderService" class="hello.core.order.OrderServiceImpl"> <constructor-arg name="memberRepository" ref="memberRepository"/> <constructor-arg name="discountPolicy" ref="discountPolicy"/> </bean> <bean id="discountPolicy" class="hello.core.discount.RateDiscountPolicy"/> </beans> MemberServiceImpl.java package member; public class MemberServiceImpl implements MemberService{ private final MemberRepository memberRepository; public MemberServiceImpl(MemberRepository memberRepository) { this.memberRepository = memberRepository; } @Override public void join(Member member) { memberRepository.save(member); } @Override public Member findMember(Long memberId) { return memberRepository.findById(memberId); } }
-
미해결스프링 핵심 원리 - 기본편
api vs 라이브러리 vs 프레임워크 제가 이해한게 맞을까요?
api: 사람과 컴퓨터 사이에 키보드라는 접점으로 소통하듯이 프로그램과 프로그램 사이는 api라는 접점,규약이 있어서 통신할 수 있고 api를 통해서 데이터나 라이브러리를 호출할 수 있다 라이브러리: 개발하면서 반복되는 코드들을 모아놓은 것 남이 만들어진 코드를 기반으로 개발을 할 수 있어서 생산성이 증가한다 라이브러리는 개발자가 능동적으로 호출할 수 있다프레임워크: 개발하면서 반복되는 코드들을 어떤 규칙에 맞게 쓸 수 있도록 환경을 구성해 놓은 것 라이브러리와 차이점은 개발자가 작성한 코드가 프레임워크에 의해 수동적으로 불려진다는 점이 차이점이다
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
생성자편에서 this.serialNumber 를 넣는이유
생성자편에 블랙박스 클래스에 this.serialNumber에 디스를 붙이는이유가 무엇인가요?그리고 인스턴스변수 int serialNumber; 생성하지않고 클래스변수static int counter = 0; 으로 바로생성해도 되지 않나요?
-
미해결스프링 핵심 원리 - 기본편
RequestURL 이 로그에서 일부 생략됩니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]강의 내용중에 http://localhost:8080/log-demo 이런식으로 로그가 남는데저같은 경우는 http://localhost:8080 부분이 생략된 채로 나옵니다.이런식으로요. 다른분이 작성한 글에도 저와 같은 내용인 것을 보긴했는데그분은 인텔리제이를 재실행하니 고쳐졌다고 하시는데저는 재실행 + 재부팅도 해봤는데 안되네요. 작동에는 문제가없는데 이부분만 그러네요.제 MyLogger 부분에 출력부분을 긁어왔습니다.@Component @Scope(value = "request") public class MyLogger { private String uuid; private String requestURL; public void setRequestURL(String requestURL) { this.requestURL = requestURL; } public void log(String message) { System.out.println("[" + uuid + "][" + requestURL + "] " + message); } @PostConstruct public void init() { uuid = UUID.randomUUID().toString(); System.out.println("[" + uuid + "] request scope bean create : " + this); } @PreDestroy public void close() { System.out.println("[" + uuid + "] request scope bean close : " + this); } }
-
해결됨스프링 핵심 원리 - 기본편
hashmap동시성 문제
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.[질문 내용]MemoryMemberRepository에 HashMap을 사용할 경우 동시성 문제가 발생할 수도 있다고 하셨는데, 여러 객체나 클래스에서 MemoryMemberRepository에 접근할 경우도 있으니까 그 문제를 언급해주셨던 걸까요? 어느 측면에서의 동시성 문제인지 궁금해서 질문남깁니다
-
미해결스프링 핵심 원리 - 기본편
DiscountPolicy 질문 있습니다
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]Member, Order와 다르게 왜 Discount만 Service 라는 명칭이 없는데요. 이 때 MemberService, OrderService 와 같은 Service 역할이지만 단순히 할인정책 이라는 설계 이름때문에 Service가 아닌 Policy로 붙인 건가요? 아니면 Discount 부분은 MemberService, OrderService와는 개념적으로 다른 건가요?
-
미해결Java/Spring 주니어 개발자를 위한 오답노트
Controller / application Service / Domain 의 역할 구분
안녕하세요 강의 잘 듣고 있습니다.헥사고날 아키텍쳐 부분 강의를 듣고, 궁금한 부분이 새겨서 질문 남깁니다!Application Service(이하 서비스) 에서 도메인부분을 분리 하여 객체의 상태 변화에 대한 부분을 처리하도록 하고, 서비스에선 Repository와 소통해서 필요한 객체나 컨트롤러에서 정보(예를 들어 수정 정보 등등) 등등을 얻어서 도메인 부분에 위임한다고 이해했습니다. 그렇게 도메인 영역을 분리하면 테스트에 용이하다는 것은 이해했습니다. 그런데 실제로 토이프로젝트에 적용해보려고 코드를 수정하는 중에 예를 들어 게시글을 수정하는 과정이라면 컨트롤러에서 처음 요청을 받을 때 postId, updateRequest를 받아서 서비스에 업데이트를 요청하고, 다시 서비스에선 아이디를 통해 Post를 찾고, PostDomainService(가칭)에 Post와서 updateRequest를 넘겨 수정한다면 거의 같은 내용의 파라미터를 굳이 2 계층을 건너 불필요한 위임이 반복 된다고 생각했습니다. 궁금한 것은 2가지 입니다.이런 경우엔 PostDomainService 클래스를 만들기보단 Post 객체 자체에서 업데이트를 처리하는 것이 맞을까요? - (1번 코드)도메인과 도메인 서비스의 차이는 객체의 상태(도메인)와 객체의 행동(도메인 서비스) 일까요? 엔티티와 도메인의 구분이 잘 이해가 되지 않습니다. //== 업데이트 로직 ==// public void updateInfo(PostUpdateReqDto updatePost) { this.title = updatePost.getTitle(); this.content = updatePost.getContent(); } // 기존 서비스에서의 로직 @Transactional public PostUpdateResDto updatePost(final Long postId, final PostUpdateReqDto postUpdateReqDto) { Post findPost = postRepository.findWithMemberByPostId(postId); Post updatedPost = postDomainService.updatePost(findPost, postUpdateReqDto); // 위 과정에 생기면 사라지는 메서드 // findPost.updateInfo(postUpdateReqDto); checkForbiddenWord(findPost); return new PostUpdateResDto(findPost); }
-
미해결스프링 핵심 원리 - 기본편
안녕하세요
안녕하세요 calculatePrice가 Order 도메인안에 있는 이유를다른분들이 질문하신 글의 답변을 보았는데[이 때 calculatePrice 가 여러곳에서 사용된다면 그 메서드마다 calculatePrice를 구하는 코드를 작성해야 할텐데요, 이후에 calculatePrice를 구하는 공식이 바뀌거나 한다면 수정하기 번거롭겠지요.] OrderService에 calculatePrice을 생성하고 new Order (memberId, itemName, itemPrice, discountPrice, caculatePrice)를 해서 주문을 생성해도 되지않나요?
-
해결됨스프링 핵심 원리 - 기본편
프로토타입 @PreDestroy 관련 질문드립니다!
1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요 수업 막바지를 달리고있는데 PrototypeTest하는데서 질문이 생겼습니다Prototype으로 테스트를할때 close를 해도 아무결과가 나오지않는거면 @Predestroy는 없어도 상관이없는걸까요? 그리고 관리는 클라이언트가 어떻게 하는건지도 궁금합니다!
-
미해결스프링 핵심 원리 - 기본편
final 키워드 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. MemberServiceImpl와 OrderServiceImpl에서 private final로 만들게 되는 것 같은데 final을 붙여야하는 이유가 궁금합니다. final을 붙일때와 붙이지 않았을때의 차이...?
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
인텔리제이 실행 관련 문의드립니다-!
안녕하세요 :)인텔리제이 실행 시 작업 중인 클래스( _03_Operator3)가 아닌 특정 클래스( _02_Operator2)가 실행이 되어 문의 드립니다.이것저것 건드리다 보니 실행 버튼 옆에 표시된 부분이 ( _02_Operator2) 로 설정되어있었고, 다시 이것저것 누르다 보니 해결이 되었습니다...!어쩌다 보니 문제 해결은 되었지만 원인과 해당 부분이 어떤 기능인 지 알 수 있으면 좋을 듯 해 문의 남깁니다.감사합니다 :)
-
미해결스프링 핵심 원리 - 기본편
ctrl+alt+m 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]ctrl+alt +m / ctrl+alt+m 누른 후 m / ctrl+alt+shift+t 누른 후 extract method 클릭 모든 방법으로 다 했는데도 불구하고 저렇게 뜨는데 어떻게 해결해야 할까요
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
아스키코드 질문 있습니당
String[][] seats3 = new String[10][15]; char ch = 'A'; // 아스키코드 넣기 for (int i = 0; i < seats3.length; i++) { for (int j = 0; j < seats3[i].length; j++) { seats3[i][j] = String.valueOf(ch) + (i + 1); // 아스키 코드를 문자열로 바꿔서 } ch++; } 여기서 ch라는 변수에 넣은 아스키 코드는 기본적으로 문자열로 넣은걸로 알고있는데 반복문 안에 들어가면 정수형으로 자동 형변환 되는건가용? 왜 에러가 뜨고 메소드를 써야하는지 더 자세한 설명이 궁금합니다 원리가 따로 있는건지....seats[i][j] 여기는 각각 index번호가 들어가야 하지 않나용
-
해결됨Java/Spring 주니어 개발자를 위한 오답노트
테스트 하기 쉬운 코드에서 테스트의 범위?
영상에서 종종 "테스트 하기 좋은 코드는 잘 설계된 코드일 것이다." 라는 말을 해주셨습니다. 어떤 테스트를 기준으로 테스트 하기 좋은 코드가 잘 설계된 코드일까요?- 예를 들어 단위 테스트, 통합 테스트, 인수 테스트가 존재한다 하면, 세가지 테스트 중 어떤 테스트를 테스트하기 편한 코드를 기준으로 잡는게 좋을까요?
-
해결됨Java/Spring 주니어 개발자를 위한 오답노트
스프링에서 서비스 레이어(Apllication Layer) 테스트에 대한 질문입니다.
제 개인 프로젝트를 진행하면서, 서비스 레이어에서는 단순히, 도메인 레이어에 존재하는 다른 객체들을 호출해서 비즈니스 로직을 처리하는 책임만을 담당하다보니, 서비스 레이어에 존재하는 객체를 테스트하는 코드를 작성하게 되면 대부분 테스트할 내용이, 메소드의 실행순서를 올바르게 실행해줬는가? 와 같은 부분만 테스트할게 없었는데 이 부분이 제가 잘못 설계한 부분이 아닌 오히려, 객체간의 책임을 잘 나누고 서비스 레이어의 책임에 맞게 코드를 작성한것 같다는 확신을 강의를 보고나서 알수 있었습니다 좋은 강의 감사합니다😊
-
미해결Java/Spring 주니어 개발자를 위한 오답노트
Repository 대신 Reader / Writer 사용 질문있습니다!!
안녕하세요.회사내에서 Reader, Writer 개념을 도입하여 사용하고 있습니다. 흐름은 아래와 같습니다controller -> service -> reader or writer -> repository제가 궁금한것은 JPA를 사용하고 있어 단건데이터 수정시 더티체킹을 하고 있는데요.writer내에서 더티체킹을 위한 엔티티를 조회하는거 조차 하면 안되는지 궁금합니다!안된다면 reader에서 엔티티를 조회하고 서비스로 반환한 다음 해당 엔티티를 writer로 넘겨줘야 하는지요..!!아 그리고 해당 강의가 지식공유자 답변 미제공 강의더라구요 ㅠㅠ 답변이 의무는 아니시지만 선생님의 지구 내핵 같은 깊은 배려심으로 답변을 해주시는거신지요.. 한줄기 빛 같은 강의(강의보다 시력 0.2 감소됨) 감사드립니다.
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
instanceof의 의미
안녕하세요 선생님.다형성 수업 중if (factoryCam instanceof FactoryCam){ } ;부분의 필요성이 궁금합니다.어짜피((FactoryCam)speedcam).detecFire();와 같은 코드는 실행이 불가능한데다형성 수업 중 적어주신 if 문 내용과instanceof 의 쓰임이 왜 필요한지, 어떤 의미를가지는지 궁금합니다.감사합니다.
-
미해결Java/Spring 주니어 개발자를 위한 오답노트
ProductService부분에서 리팩토링 언급 질문
안녕하세요. 강의 너무 잘 듣고 있습니다.섹션2의 '스프링에서 OOP와 안티패턴 : Transactiojn script' 회차를 듣던 중 10분 42초 부분에서 ProductService 코드를 리팩토링하고 싶다고 말씀해주셨는데 어떤 부분에서 리팩토링 하고 싶으신건지 궁금합니다!! 제 부족한 지식으론 딱히 건드릴게 보이질 않아서요 ㅠㅠ※ 3년차 개발자이지만 회사 내 사수가 없어 좌절하고 있던 시기에 우근님의 강의를 듣는 순간 가뭄의 단비와 같으며 세상에서 가장 달콤한 술을 먹은 것 마냥 취하게 해주셔서 감사합니다..