묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 핵심 원리 - 기본편
의존관계 자동 주입 - 조회한 빈이 모두 필요할 때
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]조회한 빈이 모두 필요할 때, List, Map을 사용하는 예제에서요 DiscountService 클래스는 Map으로 모든 DiscountPolicy를 주입받는다고 했는데 생성자로 의존관계가 주입되는건가요??그리고 만약 생성자로 의존관계가 주입된다고 하면 Map<String, DiscountPolicy> 에서 String 타입은 빈으로 등록된 게 없어서 의존관계가 주입될 수 없는거 아닌가요??
-
미해결스프링 핵심 원리 - 기본편
롬복
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]롬복 관련해서 질문이 있는데요 @RequiredArgsConstructor 쓰면 자동으로 생성자에 의존관계가 주입되는 건가요??
-
미해결스프링 핵심 원리 - 기본편
의존관계 자동 주입 - 필드주입
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]의존관계 자동주입 부분 강의에서 필드 주입이라는거는 스프링 컨테이너에서 빈을 찾아서 주입해주는걸 말하는 건가요?? 필드 주입은 정확히 어떤 때 쓰는건가요??
-
미해결스프링 핵심 원리 - 기본편
의존관계 자동 주입 강의 관련 질문
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]의존관계 자동 주입 부분 강의듣고 있는데요 생성자 주입이랑 수정자 주입부분 설명하실때 코드에 this.memberRepository = memberRepository;이런 코드가 존재하는데 이는 필드값을 변경하는거 아닌가요?? 싱클톤 컨테이너 강의에서 싱글톤 방식의 주의점에서 특정 클라이언트가 값을 변경할수 있는 필드가 있으면 안된다고 하셨는데 그러면 위의 코드처럼 쓰면 안되는거 아닌가요??
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
상속(전반전) 질문입니다.
처음 public class Camera에 대한 생성자를 만들 때 public Camera() { this.name = "카메라";}그리고 public class SpeedCam에 대한 생성자를 만들 때public SpeedCam() {this.name = "과속단속 카메라";}이렇게 둘 다 this가 자동으로 들어가는데 이유가 무엇인지 궁금합니다.
-
미해결스프링 핵심 원리 - 기본편
수정자 주입
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]수정자 주입 부분 강의에서setter함수에 print문을 넣었을때 @Autowired 를 붙이면 프린트문이 출력이 되는데 @Autowired를 안 붙이면 프린트문이 출력이 안된다고 하셨는데 왜 그런건가요??AutoAppConfigTest를 실행시켰을때 setter 함수를 호출하지 않았는데 OrderServiceImpl에서 @Autowired를 붙여 수정자 주입을 붙였을때 setter의 프린트문이 출력되는 원리는 무엇인가요??
-
미해결스프링 핵심 원리 - 기본편
의존관계 자동 주입 - 생성자 주입
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]생성자 주입 부분에서 생성자 주입을 이용하면 setter 메서드를 쓰면 안된다고 하셨는데 왜 그런건가요??생성자 주입을 하면 setter 메서드는 아예 못쓰는 건가요???
-
미해결스프링 핵심 원리 - 기본편
싱글톤 패턴 문제점에 대해
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 싱글톤 패턴을 구현하는 코드 자체가 많이 들어간다.클라이언트 코드에서 getInstance() 메소드를 이용해서 싱글톤을 이용한다면 구체 클래스를 의존하므로 DIP에 위반된다. (AppConfig와 같이 설정 정보 클래스를 사용하지 않는 것을 전제)3. 생성자가 private로 자식 클래스를 만들기 어렵다.4. 클라이언트가 구체 클래스에 의존해서 OCP 원칙을 위반할 가능성이 높다. (AppConfig와 같이 설정 정보 클래스를 사용하지 않는 것을 전제)5. 내부 속성을 변경하거나 초기화 하기 어렵다.6. 테스트하기 어렵다.여기서 5, 6 부분이 잘 이해가 잘 되지 않는데예시를 보여줄 수 있을까요?
-
해결됨스프링 핵심 원리 - 기본편
아직 자동, 수동 실무 운영 기준이 안 와닿아요.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]저는 그래도 한 눈에 볼 수 있는 AppCofig가 더 좋은 것 같아요. 아직 배우는 중이고, 실무 경험이 없어서 그런거겠죠? 실무 경험이 많으시니 보통 Service, Repository, Controller같은 거는 거기서 거기이니 그러신 거겠죠? 저는 @Service, @Repository, @Cotroller는 최상단에 놓고, 나머지는 아래쪽에 넣고 줄바꿈 좀 해주고 주석 좀 넣어주고 그런 식으로 하는 게 좋을 것 같아요. rate fixed 같은 경우는 강의대로 따로 모아두고 ApplicationContext에 인자로 여러 개 추가할 수 있으니까..
-
미해결스프링 핵심 원리 - 기본편
컴포넌트 스캔 관련 질문
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]컴포넌트 스캔 강의를 듣다 질문이 있는데요 @ComponentScan 을 쓰면 @Configuration도 꼭 써줘야 되나요 아니면 그냥 @ComponentScan만 써도 되는건가요??? 두 개의 어노테이션의 차이는 뭔가요?그리고 앞선 강의인 싱글톤 컨테이너에서 @Configuration 과 @Bean 을 이용했을땐 따로 @Autowired 안써서 의존관계를 주입을 안해줬는데 그때는 따로 의존관계를 주입하지 않아도 되나요??
-
해결됨스프링 핵심 원리 - 기본편
@configuration 싱글톤
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]싱글톤으로 등록이 되는 이유는 AutoAppConfig에 @Configuration이 붙었기 때문인가요?
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
접근 제어자(전반전) 질문입니다!
안녕하세요? 늘 강의 잘 보고 있습니다!가격이 더 이상 -5000원으로 나오지 못하도록 접근 제어자인 private을 사용했는데요!이후 BlackBoxrefurbish 클래스에서 private int price라고 바꿔줌으로써 해당 클래스 내에서만 접근이 가능하도록 하도록 하였고, AccessModifier에서 get, set으로 price를 설정해주었습니다.그리고 출력값으로 10만원이 출력되었는데 이러한 출력 과정이 구체적으로 궁금합니다!1. b1.setPrice(200000)이고, b2.setPrice(-5000) 인데 BlackBoxrefurbish 클래스에서 접근 제어자 private를 설정했으니 BlackBoxrefurbish 클래스에서 가정한 if 문(아래 사진)에 따라 10만원이 출력된 걸까요?접근을 제한한다는 뜻이 -5000원을 제한한다는 의미로 받아들여도 되는지 궁금합니다!
-
해결됨스프링 핵심 원리 - 기본편
ac.getBeansOfType(Object.class);
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]스프링 컨테이너에 설정 정보를 넣어주고 이를 기반으로 테이블을 만드는 것으로 인지했습니다.현재 AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(TestConfig.class); 와 같이 설정하였고obj클래스는 스프링 컨테이너에 설정 정보를 넣어주지 않았는데 컨테이너 안에 왜 obj 빈이 존재하며 getBeansOfType을 할 수 있는 이유가 궁금합니다.
-
해결됨스프링 핵심 원리 - 기본편
Map<String, DiscountPolicy> 등록될 때 String
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]Map에 DiscountPolicy 주입될 때, getBean하는거랑 비슷하잖아요. 이 때 String도 자동으로 넣어주는.. 그런 부분이 잘.. 안 와닿아서요. 그러니까 Map 자체는 Key가 필요하기 때문에, 자동으로 맵 자체가 그러니까 따지자면 getBean(DiscountPolicy.class).toString()해서 자체적으로 넣어주는 거죠? 이걸 Map<>이 실행해주는거죠?
-
미해결자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)
java 코드와 같이 빌드하였더니 오류 발생
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.kotlin 폴더 아래에 Main.kt JavaMoney.java 를 만들어 서 빌드하니 아래의 오류가 납니다. 여기 저기 뒤져봐도 해결을 못해서요. 어떻게 하면 좋을지요? 개발 환경 인텔리제이이며, kotlin 코드 만으로는 빌드 및 실행이 잘됩니다. 결과 : java: error: invalid flag: a=cJavaMoney.java import org.jetbrains.annotations.NotNull;import java.util.Objects;public class JavaMoney implements Comparable<JavaMoney> {private final long amount; public JavaMoney(long amount) {this.amount = amount; }public JavaMoney plus(JavaMoney other) {return new JavaMoney(this.amount + other.amount); }@Override public int compareTo(@NotNull JavaMoney o) {return Long.compare(this.amount, o.amount); }@Override public boolean equals(Object o) {if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; JavaMoney javaMoney = (JavaMoney) o; return amount == javaMoney.amount; }@Override public int hashCode() {return Objects.hash(amount); }@Override public String toString() {return "JavaMoney{" +"amount=" + amount +'}'; }}Main.kt fun main(args: Array<String>) {val money = JavaMoney(1_000);}
-
미해결스프링 핵심 원리 - 기본편
IoC 컨테이너에 대해
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.'AppConfig 처럼 객체를 생성하고 관리하면서 의존관계를 연결해 주는 것을 IoC 컨테이너 또는 DI 컨테이너라 한다. ' 라고 하셨는데여기서 IoC 컨테이너라고 부르는 이유가AppConfig를 사용하는 클라이언트 구현 객체가외부에서 구현 객체를 주입하는 방식을 통해(DI) 프로그램의 제어를 외부로 넘기는 것(IoC)을 만족하기 때문인가요? 정리 하자면IoC: 프로그램의 제어를 외부로 넘기는 것DI: 외부에서 구현 객체를 주입하는 방식 결국 IoC 라는 개념이 DI 같은 개념을 사용해서 프로그램 제어가 외부로 넘기는 방식이라고 이해해도 되는지 궁금합니다.
-
미해결스프링 핵심 원리 - 기본편
빈 스코프 강의 관련 질문
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]빈 스코프와 Provider 강의를 듣고 있는데요 그대로 코드 따라치고 있는데 web 패키지를 빌드하면 java: package hello.core.common does not exist이런 오류가 뜹니다 ㅠㅠㅠ분명히 hello.core 아래에 common 패키지가 존재하고 있고 import도 잘 되어있는데 왜 안되는 건가요??이런 경우 문제를 어떻게 해결하나요??
-
미해결스프링 핵심 원리 - 기본편
@Bean 메서드를 호출하면 프록시되어서 AppConfig@CGLIB 의 override 된 함수가 실행되는건가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]영한님의 말씀에 의하면AppConfig의 자식클래스인 AppConfig@CGLIB가 스프링 빈으로 제일 먼저 등록되어서, 누가 @Bean 메서드를 호출하려할때 가로챈? 다음, 빈으로 등록된 AppConfig@CGLIB에 override 된 해당 메서드를 실행하여 (등록이 안되어 있으면)스프링 빈으로 등록할지, 등록된 걸 내보낼지 결정한다. 라고 이해했는데 맞는지 궁금합니다!
-
해결됨스프링 핵심 원리 - 기본편
참조값이 다른게 스프링 컨테이너를 사용하지 않아서라고 이해했는데 맞는지 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]강의에 전부터 계속 스프링 컨테이너를 사용하시다가 이번에 아래 그림처럼 AppConfig 객체를 바로 생성해서 사용하시길래 처음에 "스프링 컨테이너를 만들었는데 왜 참조값이 다르게 나오지?"라고 잘못이해했었는데요,제가 이해한게 맞다면 아래 첫번째 그림은 스프링 컨테이너를 사용한게 아니라서(싱글톤 패턴도 사용하지 않았고) 매번 함수 호출시마다 new에 의해 객체가 새로 생기는거고, 두번째 그림이 스프링 컨테이너를 생성해서 등록된 하나의 객체를 사용하고 있는거라고 이해했는데 맞는지 궁금합니다 :)
-
해결됨나도코딩의 자바 기본편 - 풀코스 (20시간)
Getter & Setter
1. Getter는 값을 가져오는 메소드, Setter는 값을 설정하는 메소드인데resolution의 조건을 getter에 넣었는지 궁금합니다!값을 설정하는 setter에 넣는 게 왜 안 되는지 궁금합니당그리고 price의 경우에도 getter가 아닌 setter에 조건을 넣은 이유가 궁금합니다! resolution과 price에 대한 오류만 있을뿐인데 modelName, color도 다 같이 getter&setter에 넣어줘야 하나요?