묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 핵심 원리 - 기본편
static관련 질문드립니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]"static method에 @Bean을 사용하게 되면 싱글톤 보장을 위한 지원을 받지 못한다" 그 이유에 대해서 자세히 알 수 있을까요? 비슷한 질문글들을 봐도 이유에 대한 정확한 설명은 없는 것 같아서요. 제가 찾아본 바로는 bean의 라이프사이클관리, 의존성 주입, 프록시 등등 있는데 무엇이 정확한 이유인지 잘 모르겠어서 질문남깁니다!!
-
미해결아무것도 모르고 시작하는 C#
'봐꿀'문자가 아니라 '바꿀' 문자...
강좌에 오타가 있네요...
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
getter 질문 있어요!
BlackBOX 클래스 내에해상도 getter 설정시String getResolution(){ if (resolution == null || resolution.isEmpty())// isEmpty-> 값이 비어있는것 { return "판매자에게 문의하세요"; } return resolution; resolution == null 이부분이 인스턴스가 null일때 "판매자에게 문의하세요" 라는 반환값이 출력되는 거 아닌가요? 출력시에 해상도null 이렇게 떠서 질문드립니다.
-
미해결스프링 핵심 원리 - 기본편
Map형식으로 빈 주입 시
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]@Autowiredpublic DiscountService(Map<String, DiscountPolicy> policyMap, List<DiscountPolicy> policies) {this.policyMap = policyMap; this.policies = policies; System.out.println("policyMap = " + policyMap); System.out.println("policies = " + policies);}여기 생성자 주입을 통해서 각 빈들이 Map타입과 List타입에 담기는건 알겠는데 실제로 스프링이 빈들을 모아서 어떤 구현체에 담아주는 것인가요 ?
-
해결됨제대로 파는 자바 (Java) - by 얄코
혹시 강의 내용을 블로그에 기재해도 될까요?
강사님 제가 강의를 듣고 강의 내용을 정리해서 블로그에 기재한후 필요할때마다 찾아보고 싶은데혹시 기재가 가능할까요? 불가능하시면 비공개로 올려도 될까요!
-
해결됨스프링 핵심 원리 - 기본편
싱글톤과 쓰레드
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]새로고침을 통해 Request를 반복적으로 수행함에있어서 각 요청의 원자성이 유지되는 이유가 궁금합니다.LogDemoService와 LogDemoController는 싱글톤으로 관리되고 스프링 컨테이너에 유일무이하게 존재한다고 이해하였습니다.sleep을 걸어준 후 로그를 확인해보면, 각 요청에 따른 request의 정보가 일관됨을 확인할 수 있는데,스프링 자체적으로 멀티쓰레드를 실행하여 각 request에 대응하는 Controller와 Service인스턴스를 따로 만드는 것인가요? 그럼에도 불구하고 싱글톤이라고 칭할 수 있는 것인가요?MyLogger를 Controller에서도 provider.getObject();하고 Service에서도 provider.getObject();를 하는데, 많은 Request가 있을때 MyLogger빈도 많이 생성이 될텐데 Contoller와 Service에서 같은 MyLogger빈을 사용하는 이유는 하나의 쓰레드에서 처리하기 때문으로 이해하였습니다. 제가 이해한게 맞나요? Controller와 Service간 파라미터 등으로 MyLogger와 관련된 정보를 교환하지 않았는데, 어떻게 수많은 MyLogger사이에서 일치하는 MyLogger를 DL해오는 것인지 이해가 잘 안됩니다. 만약 각 요청이 쓰레드별로 관리되고 각 쓰레드마다 단 하나의 MyLogger만 존재하는 것인지요...?
-
미해결스프링 핵심 원리 - 기본편
DI 컨테이너를 의미하는 오브젝트 팩토리와 ObjectFactory는 다른 건가요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]pdf로 복습하던 중 질문 있습니다.3. 스프링 핵심 원리 이해2 - 객체 지향 원리 적용.pdf의 24페이지에 다음과 같은 내용이 있습니다. "IoC 컨테이너, DI 컨테이너는 어샘블러, 오브젝트 팩토리 등으로 불리기도 한다." 그리고9. 빈 스코프.pdf의 16페이지에 다음과 같은 내용이 있습니다. "지정한 빈을 컨테이너에서 대신 찾아주는 DL 서비스를 제공하는 것이 바로 ObjectProvider이다. 참고로 과거에는 ObjectFactory가 있었는데, 여기에 편의 기능을 추가해서 ObjectProvider가 만들어졌다." 첫 번째의 경우엔 오브젝트 팩토리가 DI 컨테이너를 의미하고,두 번째의 경우엔 ObjectFactory는 DI 컨테이너가 아니라, DL 서비스를 제공하는 것을 의미하는 거로 이해했습니다. 그럼 여기서의 '오브젝트 팩토리'와 'ObjectFactory'는 다른 것을 의미하고 있는 거로 느껴지는데 맞나요? 둘 다 오브젝트 팩토리라서.. 이름만 같을 뿐 전혀 다른 개념이 맞는지 궁금합니다.
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
12장 동기화 강의
코드는 스레드 객체 에서 java.lang만 빼고 똑같은데 결과가 왜 10이 넘는 숫자가 나오나요? java.lang에 영향인가요
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
12장 Runnable 강의
스레드 객체 만들때 강의에서와 달리java.lang이 있어야 오류가 안 나던데 왜 이런 건가요
-
미해결스프링 핵심 원리 - 기본편
의존 관계 화살표와 연관 관계 화살표
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]강의 자료로 복습 중에 질문이 있습니다.소프트웨어 공학 책에 있는 화살표를 아래 그림에 적용해 보면MemberServiceImpl에서 MemberService로 향하는 화살표와 MemoryMemberRepository에서 MemberRepository로 향하는 화살표는 '구현 관계'를 나타낸 듯하고, AppConfig에서 MemberServiceImpl과 MemoryMemberRepository를 향하는 화살표는 '의존 관계'를 나타낸 듯하고, MemberServiceImpl에서 MemberRepository를 향하는 화살표는 '연관 관계'를 나타낸 것처럼 보이는데요 연관 관계 화살표로 표현된 MemberServiceImpl에서 MemberRepository로 향하는 관계는 의존 관계라고 봐도 되나요? MemberServiceImpl이 MemberRepository를 의존하고 있으니깐.. 연관 관계 화살표로 표현된 이유가 궁금합니다. 제가 UML 다이어그램을 제대로 공부하진 않았는데 의존 관계 주입에서의 의존 관계와, UML 다이어그램에서의 의존 관계는 조금 다른 건가요?
-
해결됨스프링 핵심 원리 - 기본편
스프링 컨테이너 생성 시 DI 컨테이너를 인스턴스로 생성하지 않고 .class로 생성하는 이유가 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 강의 내용 중 아래의 방법으로 스프링 컨테이너를 생성할 수 있었습니다.ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);그런데 AnnotationConfigApplicationContext는 new를 통해 런타임 시점에 초기화가 되는데 AppConfig는 왜 new AppConfig()가 아닌 AppConfig.class 로 클래스 명세만을 필요로하는지 궁금합니다.가령 아래와 같이 AppConfig를 런타임 시점에 생성하여 Bean을 등록하는 것도 가능해야 할 것 같은데 AppConfig.class로 스프링 컨테이너를 생성할 시 어떤 이점이나 효과가 있어서 AppConfig 인스턴스를 통해 스프링 컨테이너를 생성하는 것을 제한하였는지 궁금합니다.ApplicationContext applicationContext = new AnnotationConfigApplicationContext(new AppConfig());
-
미해결스프링 핵심 원리 - 기본편
AutoAppConfig 역할
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]new AnnotationConfigApplicationContext(AutoAppConfig.class);코드가 실행되면서 AutoAppConfig 자체가 빈으로 등록이 되면서 AutoAppConfig빈은 @ComponentScan이라는 어노테이션을 써주면서 컴포넌트를 스캔하는 역할을 하게 되는건가요?즉, AutoAppConfig빈은 ComponentScan라고 생각해두 되나요?
-
미해결스프링 핵심 원리 - 기본편
섹션 9 빈 스코프 질문입니다.
1.프로토타입 스코프 11분 28초에 preDestory같은 메소드가 실행되지 않는다고 했는데요.ac.close(); 이건 preDestory가 아닌가요? 2.프로토타입 스코프 11분 28초싱글톤 빈은 하나의 빈으로 종료까지 관여 하는거고 프로토타입스코프는 여러개의 빈이 생성되고 초기화까지만 관여하는걸로 이해해 도 되나요?3.프로토타입 스코프 10분 강의 똑같이 따라 쳤는데 아래와 같은 에러가나옵니다. 뭐가 문제인건가요?package hello.core.scope; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Scope; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; public class PrototypeTest { @Test void prototypeBeanFind(){ AnnotationConfigApplicationContext ac =new AnnotationConfigApplicationContext(PrototypeBean.class); PrototypeBean prototypeBean1=ac.getBean(PrototypeBean.class); PrototypeBean prototypeBean2=ac.getBean(PrototypeBean.class); System.out.println("prototypeBean2 = " + prototypeBean2); System.out.println("prototypeBean1 = " + prototypeBean1); Assertions.assertThat(prototypeBean2).isNotSameAs(prototypeBean1);//똑같은 인스턴스가 출력됨. ac.close(); } @Scope("Prototype") static class PrototypeBean{ @PostConstruct public void init(){ System.out.println("Prototype.init"); } @PreDestroy public void destory(){ System.out.println("Prototype.destory"); } } }java.lang.IllegalStateException: No Scope registered for scope name 'Prototype'이런에러가 나오는데 뭐가문제인가요?4.파란색선인 프로토타입이닛보다 빨간색프로토타입 빈2가 더빨리 나와야 하는거 아닌가요?println이 더 먼저 있는데요.
-
미해결스프링 핵심 원리 - 기본편
섹션 8 생명주기 강의 질문입니다.
1.빈 생명주기 콜백 시작 9분에서 아래와 같은 3개 단어가 나오는데요.ConfigurableApplicationContext가 최상위 인터페이스고ApplicationContextAnnotationConfigApplicationContext이런 순으로 자식관계가 형성되어있는건가요? 빈 생명주기 콜백 시작 13분에서 스프링빈은 객체 생성후 의존관계주입이 되는데 생성자는 예외라고 하셨는데요. 생성자가 스프링빈을 이미 생성해서 스프링 빈이 같이 들어와야 되기 때문에 파라미터의 예외라고 하셨는데요. 혹시 코드로 예시좀 보여주실 수 있나요? 3.인터페이스 InitializingBean, DisposableBean 3분에서 위와 같은 코드가 나오는데요. 위코드가 의존관계 주입이라는건가요?
-
미해결스프링 핵심 원리 - 기본편
조회한 빈이 모두 필요할 때, List, Map 강의 질문있습니다.
package hello.core.autowaried; import hello.core.AutoAppconfig; import hello.core.discount.DiscountPolicy; import hello.core.member.Grade; import hello.core.member.Member; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import java.util.List; import java.util.Map; public class AllBeanTest { @Test void findAllbean(){ ApplicationContext ac= new AnnotationConfigApplicationContext(AutoAppconfig.class,DiscountService.class); DiscountService DiscountService=ac.getBean(DiscountService.class); Member member=new Member(1l,"userA", Grade.VIP); int dinscountPrice=DiscountService.discount(member,10000,"fixDiscountPlicy"); Assertions.assertThat(DiscountService).isInstanceOf(DiscountService.class); Assertions.assertThat(dinscountPrice).isEqualTo(1000); } static class DiscountService{ private final Map<String, DiscountPolicy> policyMap; private final List<DiscountPolicy> policies; @Autowired public DiscountService(Map<String, DiscountPolicy> policyMap, List<DiscountPolicy> policies) { this.policyMap = policyMap; this.policies = policies; System.out.println("policyMap = " + policyMap); System.out.println("policies = " + policies); } public int discount(Member member, int price, String discountCode) { DiscountPolicy discountPolicy=policyMap.get(discountCode); return discountPolicy.discount(member,price); } } } 해당강의에서 8분 52초를 따라하고 있는데 아래같은 에러가 나옵니다. 근데 강의 초반부에 나오는policyMap,policies는 제대로 출력이 됬는데 어디가 잘못된걸까요? 강의와 다르게 discountService를 DiscountService로 등록했는데 왜 에러 없이 잘 되나요? DiscountService DiscountService <=보통 DiscountService discountService 이렇게 선언되어야 하지 않나요?@Test void findAllbean(){ ApplicationContext ac= new AnnotationConfigApplicationContext(AutoAppconfig.class,DiscountService.class); DiscountService DiscountService=ac.getBean(DiscountService.class); Member member=new Member(1l,"userA", Grade.VIP); int dinscountPrice=DiscountService.discount(member,10000,"fixDiscountPlicy"); Assertions.assertThat(DiscountService).isInstanceOf(DiscountService.class); Assertions.assertThat(dinscountPrice).isEqualTo(1000); }
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
전달값 반환값 차이
반환값이 없는 경우에는 Void를 사용하고 전달값을 쓴다.반환값 return이 있는 경우에는 반환에 따라 Int / String/Double 을 사용한다까지 제가 이해를 한 부분인데...public static void power (int number) public static String getPhoneNumber() 어떤 차이에 따라 어떻게 사용되는지를 잘모르겠습니다.ㅠㅠ
-
미해결스프링 핵심 원리 - 기본편
Extract Method 저는 다른 단축키였군요
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. Geforce Experience 앱 삭제해봐도 안되고 별 검색 다 해보다가 오른쪽 마우스 클릭하니 refactor 가 떡하니 있었어요 alt + shift + m 이었네요 왜 저만 다른걸까요? 설정을 해야하는건가요?
-
미해결스프링 핵심 원리 - 기본편
Bean 등록시 궁금한점이 생겼습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]위 코드상황만 봤을때bean 등록시 memberService를 호출하는 동시에 memberRepository를 호출하면서 의존관계도 설정이 된다고 이해했습니다.그렇다면@Bean public MemoryMemberRepository memberRepository() { return new MemoryMemberRepository(); }위의 메서드에 bean어노테이션이 없어도 memberRepository는 bean객체로 관리가 되나여 ???또한 위의 메서드를 지우고@Bean //각메서드에 bean이라 적으면 각 메서드가 스프링컨테이너에 등록이 된다. public MemberService memberService(){ return new MemberServiceImpl(new MemoryMemberRepository()); }위와 같이 수정해도 bean으로 관리가 되나요 ?
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
섹션 12 에러 (코드는 같은데 선생님만 에러 안 뜸)
섹션 12 예외처리 사용자 정의 예외에서 AgeLessThan19Exception가 선생님 화면에는 에러없이 잘 넘어가지만, 실제로는 클래스를 따로 분리하거나 static class AgeLessThan19Exception를 사용해야하는거 아닌가요? 전 에러때문에 코드 실행이 아예 안됩니다.
-
미해결스프링 핵심 원리 - 기본편
섹터 7강 의존관계 자동 주입 질문있습니다.
@Autowired 필드 명, @Qualifier, @Primary 12분에서 빨간색 네모표시된 커넥션 빈을 획득한다는게 무슨의미인가요?