묻고 답해요
130만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 핵심 원리 - 기본편
혹시 스프링 완전정복 로드맵의 마지막 강의인 스프링부트는 기존 스프링부트 로드맵의 강의와 무슨차이인가요?
관련글이 안보여서 질문남깁니다!
-
미해결스프링 핵심 원리 - 기본편
빈 등록 안 된 상태에서 @Autowired사용
강의 4:13초에 실행된 결과 값이 이해가 가지 않습니다. 저는 오류가 발생해야 된다고 생각합니다. 그 이유는 @Autowired가 생략된 것으로 @Autowired로 인해 의존 관계가 주입이 되어야 하는데 new AnnotationConfigApplicationContext(); 인자 속에 DiscountService.class만 존재합니다. 그러면 DiscountService생성자의 매개변수 타입이 빈 등록이 안 되어 있어 주입해 줄 타입의 빈이 존재하지 않아 오류가 발생해야 한다고 생각하는데 오류가 왜 안 나는 것인가요? 감사합니다.
-
미해결PHP 7+ 프로그래밍: 객체지향
모델 User 등에서 속성들을 protected 나 private 으로 설정하지 않는 이유가 있습니까?
강사님 강의 잘 듣고 있습니다~ ^^* 역시 후반부에 오니 핵심들이 꼭꼭 쌓여있습니다.앞에서 잘 설명해 주셨던 것들이 잘 조합되어서,저의 이해도도 많이 높아 졌습니다. 그런데 궁금한게 User 클래스와 같은 Model을 만드실때,속성을 protected 나 private으로 미리 선언하지 않고모델의 메서드 내에서 매직메서드 __set() 을 통한 할당을 함으로써,public 접근이 가능하게 됩니다. 강의에서 말씀하셨듯이 VO나 DTO에 대한 언급을 하지 않는 이유는 이해가 갑니다만,뷰 등에서 모델의 객체(vo)가 수정되지 않을 것을보장(immutable)해 주는 것은 중요하지 않습니까? 혹시 별다른 이유가 있는지 궁금해서 질문드립니다. MVC 아키텍처에서 VO가 중요한 이유는VO가 변하지 않음을 보장하는 것이라고 생각하거든요~^^ 강사님의 다음 라라벨 강의도 기대되네요~ ^^*
-
미해결스프링 핵심 원리 - 기본편
MemberServiceImpl와 MemoryMemberRepository의 메소드 질문있습니다!
MemberServiceImpl의 join과 findMember메소드는결과적으로 memberRepository의 save와 findById를 수행하는것을 알수있는데요여기서 MemberServiceImpl 내부에서 store변수를 만들어서 join과 findMember를 직접 구현해 사용해도 되는데 굳이 MemoryMemberRepository를 만들어서 한번더 클래스를 만들어주는 이유가있나요?제가 이유를 생각해볼때에는 코드의 대한 가독성과 전체 구조의 분리를 위해 서비스와 리포지토리를 분리하는것으로 짐작하고있는데 이것외의 큰이유가 있는지 궁금합니다!
-
미해결스프링 핵심 원리 - 기본편
"스프링 DB 1,2편"과, "스프링 부트와 JPA 실무 완전 정복 로드맵"은 어떤 차이가 있고 어떤 걸 먼저 접하는 게 좋을까요?
제목이내용입니다. 레거시 프로젝트 경력이 있는 편이라 쿼리는 좀 아는데 JPA는 전혀 접해보지 못해 JPA를 최대한 빨리 학습하고 싶습니다. MVC 1,2편을 빨리 끝내고 JPA 로드맵을 바로 수강하는 것이 유리할까요?
-
미해결자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)
코틀린으로 엔티티 작성
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 강의의 내용과 질문이 관계 없을수도 있지만 정답이 있는 부분이 아닌 것 같아 너무 궁금해서 남겨봅니다.. ㅠ 강의중에 코틀린을 사용할 때 되도록 불변으로 만드는 것이 좋다고 하셔서 User 엔티티를 이런식으로 작성했습니다. 이렇게 되면 유저의 필드를 변경하고 싶을 때 새로운 User 객체를 만들어야 합니다. 그래서 User 엔티티 안에 이런 메서드를 작성했습니다. 두 번째 방법으로 private set을 사용해서 setter만 막고 updateName 함수를 만들어줬습니다. 세 번째로 프로퍼티를 아예 private으로 설정하고 getter와 updateName 함수를 만들어줬습니다. 네 번째는 그냥 var로 만들어 기본 생성되는 getter와 setter를 사용한다 입니다. 정답이 있는 문제는 아니지만 저는 2, 3번이 좋은 방법이라는 생각이 듭니다. 그런데 자바의 저런 보일러 플레이트 코드들을 줄일 수 있는 것이 코틀린의 장점중 하나인데, 저렇게 사용하면 무슨 소용이 있나 싶기도 합니다. 그러다보니 코틀린은 getter, setter를 사용하는 것을 권장하게 설계되어있나? 라는 생각이 듭니다. 1번이나 4번 처럼 사용하는 것이 좀 더 코틀린스러운 개발 방법일까요?
-
미해결스프링 핵심 원리 - 기본편
ApplicationContext 컨테이너에 대해 질문 있습니다.
지금 ApplicationContext컨테이너를 만든 이유가 AppConfig클래스에 있는 함수들을 컨테이너에 집어 넣기 위해 만든거라고 보면 될까요? ApplicationContext컨테이너의 위치를 어디에 설정하면 좋을까요?
-
미해결스프링 핵심 원리 - 기본편
assertThat이 안됩니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 구글링 하면서 assert 관련 import를 전부 지워도 보고, 새로운 구문을 추가해보기도 했지만 Assertions를 입력하면 junit관련된 친구만 나오고 assertj와 관련된 친구는 전혀 나오지 않습니다.
-
해결됨스프링 핵심 원리 - 기본편
다양한 설정 형식 지원 - 자바 코드, XML 부분에서 질문 있습니다.
강의에 나온 대로 xml 파일을 만들고 코드도 그대로 붙여넣었는데 사진처럼 memberRepository에 빨간색 오류가 뜹니다. 무엇이 문제인건가요?
-
해결됨스프링 핵심 원리 - 기본편
빈 관련 에러
안녕하세요, org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'hello.core.order.OrderServiceImpl' available 에러가 발생하였습니다. ac.get을 어떻게 수정해야할까요 ㅜ
-
해결됨스프링 핵심 원리 - 기본편
Assertion 질문
Assertion 이전에 assertj로 사용을 한 이후에 바로 주피터 것을 사용하려고 했는데 저는 주피터꺼 임폴트해서 엔터 눌렀음에도 불구하고 교수님처럼 org.junit.jupiter.api.Assertions로 변경이 안됩니다.. 왜 그런지 알 수 있을까요!? 아래와 같이 뜹니다..
-
해결됨스프링 핵심 원리 - 기본편
에러,AssertThat
AssertThat 부분 에러가 왜 나는 것일까요.. ㅠ 혹시몰라 import 때문인 줄 알고 import static org,assertj.core.api.Assertions.*; 를 추가하였으나 자동 주석처리 됩니다,,
-
미해결자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)
함수 null 질문드립니다.
@nullable public String getName() { return name; } - 위 함수는 리턴타입이 reference 타입이니 어노테이션을 지우면 참조형식이 될거 같은데 플랫폼 타입이 되는데 함수만 그런 규칙이 적용이 되는건가요?
-
미해결자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)
안녕하세요 질문이 있습니다!
안녕하세요~ 질문이있는데용 OPEN 키워드를 사용하지않고 사진의 코드를 실행시키면 값이 300으로 나오게되는데요~ Derived(300) 으로 부모가 호출이되고 자식의 프로퍼티가( override )가 아니기 때문에 부모의 초기화블록이 실행되면서 자식의 초기화되지 않는 init 블럭에 접근하지 않고 부모의 init에서 처리하기 때문에 300이 재대로 출력되는건가요?
-
해결됨스프링 핵심 원리 - 기본편
컴포넌트 스캔 방식을 이용하면 @Bean 어노테이션을 쓸 필요가 없는건가요
컴포넌트 스캔 방식 말고, AppConfig와 같은 설정파일에 수동으로 직접 빈을 등록하는 경우 @Bean 어노테이션을 써서 스프링 컨테이너에 빈을 직접 등록했는데, 컴포넌트 스캔 방식을 활용하면 이런 @Bean 어노테이션을 쓸 필요가 없는것이지요?? 그럼 @ComponentScan 과 @Bean 이 두개의 어노테이션은 표기만 다른것이지 결국 똑같은 일?(빈 등록)을 하는 녀석들인건가요 ..! (너무 기본적인 질문같아서.. 죄송합니다)
-
미해결스프링 핵심 원리 - 기본편
appconfig
안녕하세요 김영한 개발자님 강의를 복습하다가 궁금한 점이 생겨서 질문남깁니다. appconfig class에서, 아래 코드 public class AppConfig { public MemberService memberService() { return new MemberServiceImpl(new MemoryMemberRepository()); } } ... 처럼 구현 객체를 생성하고 연결하는 책임을 가진다고 하셨는데, 그럼 제 생각에는 MemberServiceImpl 클래스가 생성되기 전에 AppConfig 클래스가 먼저 실행되어야 한다고 여겨집니다. 그런데 코드 어느 부분에서도(MemberApp, OrderApp 제외) Appconfig 클래스를 호출하는 부분이 없어서 매커니즘(?)이 궁금했습니다. appConfig라는 이름의 클래스가 있으면 스프링이 자동으로 실행시켜주는 것인지, 아님 MemberApp, OrderApp과 같은 클래스를 만들어서 사용해야 하는 것인지 헷갈리는데 어떤게 맞을까요?! (여담이지만, 처음들었을 때 헷갈렸던 내용이 반복해서 들으니 이해가 자연스럽게 돼서 너무 감격스럽고 성장한 것 같아 행복합니다. 아직 궁금한점도 많고 부족하지만 꾸준히 공부하겠습니다. 좋은 강의와 항상 답변해주시는 서포터즈 분들도 감사드려요)
-
미해결스프링 핵심 원리 - 기본편
필드 주입 문제점 해결 방안
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요. 강의 너무 잘 듣고 있습니다. 강의에서 필드주입시 순수 자바코드로 실행이 불가능해서 테스트 하기 힘들다고 하셨습니다. public class MemberServiceImpl implements MemberService{ @Autowired private MemberRepository memberRepository;// @Autowired public MemberServiceImpl(MemberRepository memberRepository) { this.memberRepository = memberRepository; } 위 코드처럼 생성자를 따로 작성해주면 해결될 문제인거 같아 문의드립니다. 1. 필드주입시 생성자를 따로 작성하는 방법을 사용하면 필드주입의 모든 문제점이 해결되는 것이 맞을까요? 2.만약 생성자를 따로 작성하여 문제점이 해결된다해도 필드주입을 추천하지 않으신다면 그 이유를 알 수 있을까요? 감사합니다!
-
미해결스프링 핵심 원리 - 기본편
중급편
지금 고급편은 있던데 중급편은 아직 안나온건가요?
-
미해결스프링 핵심 원리 - 기본편
초기화란 뭘 해주는 건가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 영상에서 사용하신것처럼 디비같은것과 connect() 이런걸 해주는걸 초기화라고하나요? 그런데 그걸 보통 스프링이 해준다고 들었는데 그걸 제외한다면 어떤게 초기화 단계에서 실행되나요?
-
미해결스프링 핵심 원리 - 기본편
필드주입은 확실히 간결한거 맞나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 단지 너무 간결해져서 테스트할때 제가 접근할방법이 없어진다 이런 이유가 맞는건가요?