묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 핵심 원리 - 기본편
static class TestBean 질문입니다
static inner class로 TestBean을 사용했는데요. static 키워드를 빼면 예외가 발생합니다. 내용을 보니 TestBean.class를 인자로 받아 스프링 컨테이너를 생성하고 인자로 받은 클래스를 빈으로 등록(생성)하는 과정에서 문제가 생기는 걸로 보입니다. 이 상황을 TestBean을 생성하려면 외부클래스(AutowiredTest)의 인스턴스가 필요한데 컨테이너에서 관리하는 정보에 없어서(AutowiredTest가 빈으로 등록되지 않아서) 외부클래스의 인스턴스를 생성할 수가 없고 그로 인해 static이 아닌 내부클래스를 생성(빈으로 등록)하지 못해 발생한 예외라 이해하면 될까요..? static이 붙었을 때는 TestBean을 컨테이너에 등록( 내부적으로 생성자 호출)할 때 외부클래스의 인스턴스 유무는 상관이 없기 때문에 문제없이 동작한다고 이해했고요. 몇 강 전부터 궁금했는데 이제야 질문드립니다. 제가 이해한 내용이 맞을까요? 혹시 잘못 이해한 부분이 있는지 궁금합니다^^ 강의는 정말 재미있게 잘 보고있습니다! 감사합니다^^*
-
해결됨스프링 핵심 원리 - 기본편
안녕하세요
스프링 입문 스프링 데이터 JPA 강의에서 Spring Data JPA에서 제공하는 Repository를 구현하고 있으면 Spring Data JPA가 자동으로 구현체를 등록 해준다. 이 말씀을 하셨었는데 AppConfig가 생성자 주입으로 전달하듯이 Spring Data JPA가 Repository를 구현하고 있는 인터페이스들을 찾아서 주입 역할을 해주고 있는건가요?? @Autowiredpublic SpringConfig(MemberRepository memberRepository){ this.memberRepository = memberRepository;}@Beanpublic MemberService memberService(){ return new MemberService(memberRepository);} 여기에서 SpringDataJpaMemberRepository를 어떻게 찾아가는지 궁금해서 질문 드립니다. (강의 보면서 SI 다니며 묵힌 갈증이 확 풀리는 것 같네요. 강의 감사히 듣고 있습니다. HTTP강의 까지 꼭 완강 하겠습니다!)
-
미해결스프링 핵심 원리 - 기본편
안녕하세요! 스프링 관련해서 질문 드립니다.
안녕하세요 영한님, 항상 좋은 강의 감사드립니다. 수업을 듣던 중 의문점이 생겨서 질문 드립니다. 결국 스프링을 사용하는 목적은 애플리케이션 개발에 필요한 기본 뼈대가 되는 기능들은 제공해 줄테니 개발자들은 비즈니스 로직에 집중하여 생산성을 높이는데 집중하자는 것이 목적이라는 생각이 드는데요. 혹시, 예를들어, 파이썬의 장고나 nodejs는 사용목적이 생산성을 높이기 위해 사용하는 프레임워크가 아닌건가요? 만약, 다른 프레임워크들도 결국 생산성을 높여준다는 것이 목적이라면, 다른 프레임워크들과 비교해서 자바의 스프링이 차별성을 갖는 점은 무엇이길래 메이저 it 기업에서 그토록 많이 사용되는 것인지 궁금합니다.
-
해결됨스프링 핵심 원리 - 기본편
AppConfig에서 MemberRepository 객체 생성에 관하여 질문있습니다.
현재 AppConfig에선는 MemberService, OrderService 둘 다 memberRepository()를 통해 MemoryMemberRepository 객체를 주입 받고 있습니다. 하지만 memberRepository()를 호출할 때마다 MemoryMemberRepository 객체가 새로 생성됩니다. 따라서 MemberService와 OrderService는 서로 다른 Repository를 참조하고 있습니다. 이렇게 서로 다른 MemoryMemberRepository를 참조해도 되는지 여쭤보고 싶습니다. 아니면 저장소인 store를 static으로 선언했기 때문에 서비스간 참조하는 객체는 다르지만 store는 공유하고 있기 때문에 상관없을까요? 아니면 추후에 서비스들이 하나의 MemberRepository만 참조하도록 하는게 나을까요?
-
미해결스프링 핵심 원리 - 기본편
싱글톤 DIP 위반에 관한 질문입니다.
이전 강의와, 이번 강의 내에서, 싱글톤 패턴을 사용하는 경우 DIP 위반이라고 말씀하셔서 질문 드립니다. 과거 강의에서 작성한 AppConfig 클래스 내부에 public MemberRepository memberRepository() { return MemoryMemberRepository.getInstance(); } 이런식으로 작성한다면, 예전에 말하셨던 Configuration(구성?) 하는 부분만 변경될 뿐, 사용하는 부분에서는 new AppConfig().memberRepository 를 하면 되는데 왜 DIP 위반이라고 하시는지 궁금해서 질문드립니다. ^_^
-
미해결스프링 핵심 원리 - 기본편
싱글톤 주의할점 강의에 대하여 궁금한 점이 있어 질문드립니다~!!
선생님~! 해당 싱글톤 주의할점에서 싱글톤은 무상태로 유지해야한다고 하셨습니다. 때문에 강의에서 지역변수 userAprice 와 userBprice를 만들어서 처음에 입력된 userAprice에 입력된 값이 출력되도록 변경하셨는데, 이게 현재 user가 2명이어서 괜찮았지만 만약에 정말 1초마다 5만명씩 유저가 가격을 입력한다면, 지역변수를 순간적으로 5만개씩 만들어서 처리하는 건지, 아니면 다른 방법으로 해당 사항을 해결하는 건지 궁금합니다 !! (공유객체의 참조와 지역변수의 관계에 대하여 조금이해가 않되서 질문드립니다. ㅠㅠ)
-
해결됨스프링 핵심 원리 - 기본편
이번 강의가 아닌 앞으로의 개발에 관해 문의 드립니다.
안녕하세요 강의 정말 잘 보고 있습니다. 다름이 아니고 아직 강의를 다 보지는 못했지만 강의 완료 후 추후 어떻게 공부 혹은 새로운 지식을 습득해야할지에 대해 궁금해 글올립니다. Spring강의를 통해 Spring을 알게되어 좋은 한편 강의를 다 듣고 추후 새로운 버전의 Spring이 혹은 그 Spring을 뛰어넘는 새로운 프레임워크나 툴들이 나왔을때 어떻게 정보를 알고 공부를 해야할지 궁금해서요 언제까지나 강의가 나오기만을 기다릴수는 없는거고 매뉴얼은 중간중간 찾아볼수는 있으나 기초부터 매뉴얼만 보고 공부하는건 무리인듯 싶어서요 몇가지 질문을 요약드리자면.. 1. Spring에 대해 처음 접하실때 혹은 다른 새로운 기술들을 접하실때 어떻게 공부하시는지 궁금합니다.(원서?, 국내도서?, 매뉴얼?) 2. 혹시 개발동향이나 최신 정보를 얻기위해 주로 가시는 웹사이트가 있다면 추천해 주실수 있으실까요? 아직 마지막영상까지 보지를 않고 질문을 드려 남은 영상에서 답변을 주실수도 있을텐데 너무 궁금한 마음에 문의드립니다 아, 그리고 HTTP 관련 강의 먼저 올려주신다고 하셨는데 기대하고 있습니다 감사합니다!!
-
미해결스프링 핵심 원리 - 기본편
개발부터 배포 프로세스
안녕하세요, 좋은 강의 만들어주셔서 감사합니다. 현업에서는 개발, 배포 프로세스가 어떻게 진행되는지 궁금합니다 제가 지금까진 spring mvc쪽 만 해봤는데요, 뷰까지 통합해서 띄우기 때문에 하나의 프로젝트에서 모두 개발되었습니다. 하지만 요즘은 보통 프론트엔드 vue,react 백엔드은 spring으로 개발을 진행되자나요? 이렇게 개발될때 어떻게 진행되는지 전체적으로 궁금합니다. 1. 프론트쪽에서 빌드한뒤에 spring boot에 static쪽에 넣고 배포하나요? 2. 그리고 만약 프론트서버, 백엔드서버 따로 구축되어있으면 백엔드쪽 api를 호출하려면 프론트쪽에서 백엔드 ip를 알아야 api호출이 가능하자나요, 그럼 프론트쪽에 api ip가 다 공개되는건가요...? 보안상으로 안좋지않나요..? 백엔드하시는분인데 프론트쪽도 함께 질문하는게 아이러니합니다만 현업에서 어떻게 개발부터 배포까지 진행되는지 궁금하네요ㅜ 감사합니다.
-
해결됨스프링 핵심 원리 - 기본편
질문 있습니다~!
안녕하세요. 영한님, 항상 좋은 강의 감사드립니다 :) 수업을 듣다가 몇가지 궁금한 점이 생겨 질문 드립니다. 1. 스프링 애플리케이션을 실행하면 스프링 컨테이너가 생성되고 bean이 생성될텐데, 스프링 컨테이너랑 bean은 모두 JVM의 heap 영역에 생성되는 건가요?? 2. heap 영역에 생성된다면, GC의 대상이 될 수도 있는건가요??
-
미해결스프링 핵심 원리 - 기본편
변수 만드는 단축키 뭐였나요??
안녕하세요 강의 너무 잘보고 있습니다 너무 짱짱이에요 제가 궁굼한건 new Member(,,,); 을 쓰고 어떤 단축키를 누르니 Member member = new Member(...); 로 만들어주는 단축키가 궁굼합니다 앞에 강의에서 설명해주셨던거 같은데 못찾겠네요 ㅠㅠ
-
미해결스프링 핵심 원리 - 기본편
orderServiceImpl에서 repository와 service
안녕하세요 강사님 강의 잘 보고 있습니다. 다름이 아니라 OrderServiceImpl에서 MemberRepository가 아닌 MemberServiceImpl을 써도 같은 결과가 나올 텐데요 왜 repository를 쓰셨는지 궁금합니다! 😊 단지 많은 접근으로 인한 메모리 낭비 문제인가요? 아니면 다른 이유가 있을까요??
-
미해결스프링 핵심 원리 - 기본편
provider 관련 궁금증이 있습니다.
logic() 메서드 호출 시 그때 마다 프로토타입 빈이 생성되어 사용이 되는데 해당 코드를 보면 provider.get() 입니다. 이 경우에는 new PrototypeBean(); 을 호출하는 것과 다른 점이 있을까요? ObjectProvider 같은 경우에는 이외 많은 기능이 있어 사용 하는것이 수긍이 가나 단순히 빈을 해당 라인에서 생성하는 것은 생성자를 호출하는것과 동일한데 provider.get() 코드와 new PrototypeBean(); 코드가 다른점이 있을까요?
-
미해결스프링 핵심 원리 - 기본편
안녕하세요, 선생님. 몇 가지 질문 여쭙겠습니다.
안녕하세요, 김영한 선생님? 강의 내용 중 궁금한 부분이 생겨 질문 드립니다. 첫 째로, DiscountService 라는 static class에서, `private final Map<String, DiscountPolicy> policyMap;` 의 Autowired가 동작하는 방식이 Map<String, DiscountPolicy> 라는 데이터 타입을 보고, 스프링이 "아, Map이니까 이에 걸맞게 넣어줘야 하는구나" 라고 인식해서 주입해주는 것인가요? 바꿔 말하면, List, Map 이외에 다른 컬렉션에서도 모두 사용될 수 있나요? 혹은 더 나아가서, 커스텀 클래스에도 사용할 수 있나요? 그 범위가 어디까지인지, 동작 방식이 궁금합니다. 두 번째로, pdf 강의자료 중, "로직 분석" 의, 'discount() 메서드는 discountCode 로..' 부분에서, rateDiscountPolicy가 넘어오면 fixDiscountPolicy 스프링 빈을 찾아서 실행한다고 작성되어 있는데, 이는 rateDiscountPolicy의 오타인가요? 마지막으로, 조금 다른 이야기인데, 11월 중에 출시하실 스프링 웹 MVC의 구체적인 날짜를 혹시 알 수 있을까요? 너무 기대되는 강의라 하루 빨리 듣고싶습니다. :) 항상 강의 잘 보고 있습니다. 감사합니다.
-
해결됨스프링 핵심 원리 - 기본편
Spring의 Bean주입 관련 질문입니다
안녕하세요 영한님 이번 강의를 듣고 궁금증이 생겨 이렇게 질문드립니다. 1. 첫번째 질문입니다. 평소에 의존성 주입을 할때 의존성을 주입할 객체를 private final로 선언한후에 Lombok의 @RequiredArgsConstructor를 사용하거나 final로 선언된 객체를 생성자를 통하여 받아 주입을 하였습니다. 근데 강의를 듣다보니 영한님같은 경우는 @Autowired를 생성자에 사용하고 계신데 로그상으로 봣을때는 @Autowired가 있고 없고가 차이가 없어 보입니다. 혹시 @Autowired의 사용 유무에 따라서 내부적으로 차이점이 있는건가요? 2. 두번째 질문은 14:40 구간에 스프링 빈저장소 그림을 보다가 문득 생각났는데요 Bean객체가 빈 저장소에 등록되는 순서가 존재하는 걸까요? MemberService의 경우는 MemberRepository의 의존성을 주입 받아야하는데 MemberService가 먼저 빈저장소에 등록되고 이후에 MemberRepository에 등록되는 경우는 MemberService가 생성될때 MemberRepository의 빈정보는 빈 저장소에 없는 상태인데 이럴경우는 어떻게 해당 객체를 생성자를 통하여 주입후 MemberService가 생성되는지 궁금해졌습니다. 그래서 제가 스스로 생각해본 내용은 전체의 빈을 먼저 스캔한후 주입받을 내용이없는 빈을 먼저 빈저장소에 등록후 이후에 주입받을 빈이 있는 객체를 생성하여 빈저장소에 저장한다. 라고 생각도 해보았는데 로그상으로 보면 Creating shared instance of singleton bean 'AClass' Creating shared instance of singleton bean 'BClass' Autowiring by type from bean name 'AClass' via constructor to bean named 'BClass' 이 순서대로 빈이 생성되어 주입되는듯하네요 그래서 또 다른 생각은 SpringMVC같은 경우는 컨트롤러에서 요청된 내용을 reflection을 통하여 해당하는 요청의 메소드를 invoke시키는 것으로 배웠는데 그렇다면 빈들을 먼저 빈 저장소에 저장후에 그 이후에 저장된 빈에서 주입이 안된 객체를 찾아 꺼내고 reflection을 통하여 생성자의 파라미터에 주어진 객체를 저장해줄까 라는 생각도 해보았습니다. 스프링에서는 내부적으로 빈이 어떻게 주입이 되는지가 궁금합니다. ㅎㅎ!
-
해결됨스프링 핵심 원리 - 기본편
도메인에 대해서..
"도메인", "도메인모델"이라는 "뜻"과 "설명"이 저에게 아직 와 닫지 않아서 질문드릴게 있는데요!! 제가 이해한 도메인은... 예를들어 회원가입 이라는 소프트웨어를 만든다고 하면 가입, 수정, 탈퇴 등 단위적인 부분들을 도메인이라 부르고, 도메인 모델은... 가입, 수정, 탈퇴 등 기능과 데이터를 함꼐 보여주는 클래스 다이어그램으로 표현하는 부분들이 도메인 모델이라 부르나요? 자세한 설명 부탁드립니다.
-
해결됨스프링 핵심 원리 - 기본편
자바 함수형 인터페이스 질문
안녕하세요!제가 자바 8 부터 기본으로 제공하는 함수형 인터페이스들(Predicate, Function, Supplier, Consumer 등등..) 을 공부했습니다. 각각이 어떤 기능을 하는지는 알겠는데 실무에서는 어떤 식으로 사용되는지 궁금해서 여쭤보고 싶습니다. 특히 스프링과 함께 사용할 때요! 꼭 자바 기본 함수형 인터페이스가 아니더라도 직접 만들어 사용하는 경우도 있는지 알고 싶어요!감사합니다!
-
미해결스프링 핵심 원리 - 기본편
@Component 사용시 implement 된 구체화 클래스가 두 개일 경우
안녕하세요 강사님 오랜만에 질문드립니다. DiscountPolicy 인터페이스를 FixDiscountPolicy RateDiscountPolicy 두 곳 모두에서 implement하고 @Component를 적용하면 ComponentScan에서 Autowired를 사용하면 OrderserviceImpl 에서 당연히 타입으로 두개의 구체화 클래스가 있으니까 오류나잖아요. 그럼 저희가 처음에 기획 했던건 fix랑 rate랑 유연하게 코드를 변경 할 수 있느냐에서 출발했는데, 지금 Autowired 사용한 강의 구조에서는 fix와 rate의 변경시에 @Component 를 썼다 지웠다해서 적용 해줘야된다는건데,,, 다른 좋은 방법이 있나요? 뭔가 코드의 변경을 최소화 하기위해서 였는데 AppConfigAuto파일에서의 변경이아니고 구체화 클래스 내의 어노테이션을 삽입/삭제해서는 조금 이상한거같아서요... 내용이 넘 길고 주저리썼네요 ㅠ 의견 부탁드립니다.
-
미해결스프링 핵심 원리 - 기본편
request scope 질문!
안녕하세요! 강의를 듣다보니 궁금한 점이 생겼는데요. 강의 내용중 아래 부분에서 궁금한 부분이 생겼습니다! 특별한 scope는 꼭 필요한 곳에서만 최소화해서 사용하자 그럼 실무에서는 어떤 용도로 request scope를 가장 많이 사용하나요?? 가령 보여주신 예제처럼 고객들의 request를 로그로 기록해 어떤 요청이 많았는지 분석하는 용도로 쓰이는건가요?? 아니면 다른 용도가 있다면 알려주시면 감사하겠습니다!! 좋은 강의 감사드립니다.
-
해결됨스프링 핵심 원리 - 기본편
Service 레이어의 Impl 객체에 대해 질문이 있습니다.
안녕하세요!스프링 예제를 볼 때 마다, Repository에 대해 구현은 여러개 인게 많은데 Service 에 대한 구현 객체는 꼭 Impl 이라는 이름으로 하나 더라구요..ㅜㅜ현업에서 하나의 서비스 인터페이스에 대해 두 개 이상의 서비스 구현체를 만드는 경우가 있나요? 있다면 어떤 예시가 있을까요?감사합니다!
-
미해결스프링 핵심 원리 - 기본편
@SpringBootApplication에 대한 질문입니다.
안녕하세요 영한님! 완강하고 리뷰하는데 질문이 생겨서 질문드립니다!!! 이전에 제가 질문으로 AutoAppconfig는 @Configuration 붙어있는데 exclude 안당하고 어떻게 돌아가냐 라는 질문에 new Annotation....(AutoAppconfig.class); 에 넣어주기 때문이라고 하셨습니다. @SpringBootApplication 은 @ComponentScan이 내부 코드에 들어가 있고 그렇기에 최상단에 위치하는 것이 좋다고 하셨습니다. 그렇다면 이 CoreApplication은 빈등록이 어떻게 되는거죠?? 그냥 얘는 스프링에서 자동으로 해주기 때문에 AutoAppconfig 같이 직접 스프링 컨테이너에 넣어줄 필요가 없는건가요?? 궁금합니다!