55,000원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 해결됨스프링 프레임워크 핵심 기술
본 강의 완강 후 후속 강의 선택 질문
양질의 강의를 올려주셔서 큰 도움이 되었습니다. 이후 기선님의 Spring MVC와 Spring boot 를 수강할 예정입니다. 어떤 강의를 먼저 수강하는 것이 학습에 효율적일까요?
- 해결됨스프링 프레임워크 핵심 기술
@Autowired Target 질문
@Autowired의 타겟에 ElementType.ANNOTATION_TYPE은 언제 사용하는 건가요? @Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD, ElementType.ANNOTATION_TYPE}) @Autowire를 학습하고 있는 와중에 궁금한게 생겼습니다. Constructor, metod, field는 어떻게 사용하는지 알겠는데... parameter이랑 annotation은 사용한적이 없기 때문에 이걸 어떻게 사용하는지 의문이 드네요.ㅜㅜ;;; 파라미터야 대충 @Override public String print(@Autowired PetType petType, Locale locale) { return petType.getName(); } 이렇게 하면 될것 같은데, 어노테이션은 어떻게 사용을 해야할지.. 감이 잡히지 않네요. 인터넷에 찾아보니까 어노테이션에 추가하는 거라고는 하는데, 커스텀 어노테이션을 만들고, 그곳에다 주입을 해주는 건지... 아무튼... 이 두개는 아마 사용은 잘 하지 않을 것 같긴한데요. 스프링에 추가되어있어서 질문드립니다. 다시 질문을 작성하자면, @Autowired에서 target으로 parameter이랑, annotation은 언제 사용되는건가요?
- 미해결스프링 프레임워크 핵심 기술
Validator 인터페이스 supports 메서드
equals로 타입비교를 해도 되나요?? equals로 하면 내용비교를 한다고 한거 같은데 instanceof 이나 isAssignableFrom를 써야 되는거 아닌가요? 제가 잘못알고 있는건가요 ..
- 해결됨스프링 프레임워크 핵심 기술
Converter, Formatter의 bean 등록 시 test code 통과와 관련한 질문
Converter와 Formatter를 통한 data binding 예제를 따라하던 중 궁금한 점이 있습니다. Converter를 bean으로 등록한 경우 test code의 @WebMvcTest annotation에 명시적으로 Converter bean class를 등록하지 않아도 test code가 통과되었는데, Formatter를 bean으로 등록한 경우에는 EventController와 Formmater class를 @WebMvcTest에 명시해야만 통과되는 것을 확인했습니다. 어떤 이유에서 이렇게 되는 것인지 궁금합니다. Here is my code -> https://github.com/camel-master/SpringBootExample.git
- 해결됨스프링 프레임워크 핵심 기술
프로토타입 객체가 아닌 POJO 객체의 참조는 어떤가요?
@Component도 @Scope("prototype")도 사용하지 않는 일반 객체를 싱글톤 빈에서 참조한다면매번 다른 인스턴스를 사용할 수 있나요?
- 해결됨스프링 프레임워크 핵심 기술
MessageSource 실습 중 실행창에 물음표로 출력되는 현상 질문
IoC컨테이너의 MessageSource 인터페이스 기능을 실습하던 중 실행창에 영어 이외의 문자들이 물음표로만 찍히는 현상이 있는데요. 왜 이런 현상이 발생하며 어떻게 해야 해결할 수 있을까요? 각각의 message properties file명과 내용은 다음과 같습니다. 1. messages.properties è title={0} Spring 2. messages_ja_JP.properties è title = {0}スプリング 3. messages_ko_KR.properties è title={0} 스프링 message source를 출력하기 위한 runner class 코드는 다음과 같습니다. package me.dave.springapplicaitioncontext; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.context.MessageSource; import org.springframework.stereotype.Component; import java.util.Locale; @Component public class AppRunner implements ApplicationRunner { @Autowired MessageSource messageSource; public void run(ApplicationArguments args) throws Exception { Locale.setDefault(new Locale("en", "US")); System.out.println(Locale.getDefault()); System.out.println(messageSource.getMessage("title", new String[]{"Hello "}, Locale.getDefault())); System.out.println(messageSource.getMessage("title", new String[]{"Hello "}, Locale.KOREA)); System.out.println(messageSource.getMessage("title", new String[]{"Hello "}, Locale.JAPAN)); } }
- 미해결스프링 프레임워크 핵심 기술
[IoC 컨테이너 5부: 빈의 스코프] scopeName
질문 하기는 아니고 다른분 참고요. [IoC 컨테이너 5부: 빈의 스코프] 4:30 강의 중에 스코프 네임이 String으로 적으니 type safe하지 않다고 해서 찾아보니 문서에 정의는 되어 있네요. https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/annotation/Scope.html#scopeName-- 다만 위치한 클래스가 용도 별로 두 개로 나뉘어서 자주 쓰지 않으면 외우긴 힘들어 보이네요 ^^;
- 미해결스프링 프레임워크 핵심 기술
강의 내용 중 질문이 있습니다.
안녕하세요 강사님! 강의 내용 중 특히 DB와 관련하여 일을 하는 Repository 객체들은 생성하는데 비용이 많이 든다고 말씀해주셨는데요.찾아보니 WAS에서 DB에 접근하고 데이터를 가져오기까지 가장 비용이 많이 드는 부분이 DB에 최초로 연결되어 Connection 객체를 생성하는 부분이 비용이 많이 든다고 나오더라고요. 그렇기 때문에 Repository 객체들은 생성하는데 비용이 많이 든다고 말씀해주신 건가요?그렇다면 DB에 최초로 연결되어 Connection 객체를 생성하는 부분이 비용이 많이 드는 이유는 무엇인가요? 비용과 관련된 이야기는 아직 와닿지가 않아서 이런 초보적인 질문을 남기게 되었습니다.
- 미해결스프링 프레임워크 핵심 기술
ConversionService쓸때, WebApplicationType을 None으로 지정하면...
제 컴퓨터 별로 좋지 않아서 일부러 webApplicationType을 None으로 지정하고 수업을 듣고 있습니다. 그러다 ConversionService를 추가하시고 실행시킬때가 있었는데 저는 에러가 발생하라구요. 이게 뭔가 해서 강사님처럼 다운그래이드(스프링 부트 버전)했었는데 알고 보니 webApplicationType을 None으로 지정하면 안되는 거였더라구여ㅎㅎ. 그것도 모르고.. 그래서 궁금한게 클래스에 Web이나 MVC혹은 web을 연상케하는 단어가 있다면 webApplicationType을 None으로 지정하면 안 되는건가요? 너무 당연한 문제라 생각이 들기도 하지만.... ㅎㅎ
- 미해결스프링 프레임워크 핵심 기술
MessageSource 응용 관련 질문
안녕하세요 제가 스프링 공부를 최근에 시작해서 강의내용에 벗어나는 질문일 수도 있는데 MessageSource를 실서비스나 현업에서 어떻게 사용하는지 알고 싶어 질문드립니다. 간단한 예시정도 알 수 있을까요?
- 미해결스프링 프레임워크 핵심 기술
@Autowired required 설정 관련 질문입니다.
아래 질문을 보고 나서도 이해가 되지 않아서 질문드립니다. 의존성 주입을 수동으로 할 거라면 required를 false로 설정하는 것이 아니라 @Autowired annotation을 사용하지 않아도 되는건가요? @Autowired(required=false) 설정을 한것과 @Autowired를 아예 사용하지 않는 것의 차이를 잘 모르겠습니다. 감사합니다
- 미해결스프링 프레임워크 핵심 기술
JoinPoint의 개념이 명확히 잡히지가 않습니다.
안녕하세요~! 우선 좋은 강의 찍어주셔서 감사합니다. 유튜브도 잘 보고 있어요~! 바로 질문으로 넘어가자면 밑에 [스프링 AOP 학습 후 고찰입니다.]라는 질문에서는 JoinPoint가 @Before, @After .. 등의 Annotation이라고 언급을 한 부분에서 맞다고 하셨는데 https://docs.spring.io/spring/docs/4.3.12.RELEASE/spring-framework-reference/html/aop.html 스프링 공식 문서나 "스프링 철저 입문" 이라는 책에서는 @Before,@ After returning, @After throwing @After, @Around Annotation들을 모두 Advice 개념에 끼워 넣더라구요. 강의에서도 언급해주셨지만 JoinPoint를 이해 할 때 "PointCut이 JoinPoint의 부분집합(subset)이다"라는 개념으로 이해를 하면 될까요? 다양한 합류점들이 있지만 PointCut이 그것을 구체적으로 명시한다는 것으로 받아들여집니다. 또 그렇게 되면 Advice는 로직뿐만 아니라 그러한 로직을 어떻게 실행 할 지(before,after..) 컨트롤한다고 까지 생각을 하면 될까요? 말씀해주신데로 용어들의 개념이 어렵네요 ㅠㅠ 감사합니다.
- 미해결스프링 프레임워크 핵심 기술
몇가지 질문이여
question1 이게 실행 흐름이 맞나여? 테스트 코드에서 /envent/{event} 과 같은 형식의으로 url 요청을 날림 => eventController에서 받음 => 데이터 바인딩 설정에 의해 이벤트 에디터에 오버라이딩된 함수들중 setAsText가 실행됨 => id를 문자열로 바꿔서 리턴 -> 테스트 통과 question2(init 함수의 역할에 대해) EventController 클래스의 @InitBinder 어노테이션이 적용된 WebDataBinder 객체를 인자로 받는 (이런 형식은 그냥 스펙이고 문서에 나온 그대로 쓰는거져?) init 함수의 역할은 /envent/{event} 과 같은 형식의 url 요청에 대해 EventEditor 클래스의 오버라이딩된 함수들 즉 setAsText , getAsText가 자동으로 실행되도록 하는것인가여? question3 (EventEditor class의 setAsText, getAsText 함수의 실행 흐름과 데이터 바인딩의 의미에 대해 ) /envent/{event} 과 같은 형식의 url 요청에 대해 EventEditor 클래스의 setAsText 함수가 실행되서 파라 미터로 넘어오는 1이 String 으로 받아져서 아래의 setAsTest(String text) 에서 인자 로 받아지면 그걸 인티저로 바꾸고 생성자를 이용해 이벤트 event.id로 세팅하면 이후 getAsText()가 실행되어 event.id를 문자열로 바꿔서 리턴하는건가여? 이때 굳이 문자열로 다시 바꾸는건 데이터 바인딩을 확인하기 위해서인가여? 즉 이번 강의의 데이터 바인딩이란 url 요청의 파라미터를 이벤트 클래스에 세팅하고 다시 겟하기 위한 도메인 클래스 설정+ init 함수 설정 + 이벤트에디터 함수의 오버라이딩된 setAsText 함수 설정을 말하는거져? question4 event.getId().toString()하면 무엇이 리턴되는건가여? 문자열로 1이 리턴되는건가여? 즉 도메인 클래스에 아래처럼 toString() 함수를 설정해놓으면 객체.특정변수getter.toString 하면 그냥 해당 변수를 문자열로 변환해서 리턴해준다는거져?
- 해결됨스프링 프레임워크 핵심 기술
MessageSource 구현체
안녕하세요. MessageSource 구현체를 강의에서 사용한 ReloadableResourceBundleMessageSource가 아닌 ResourceBundleMessageSource를 사용하면 왜 NoSuchMessageException이 날까요? @Beanpublic MessageSource messageSource() { var messageSource = new ReloadableResourceBundleMessageSource(); messageSource.setBasenames("classpath:/messages"); return messageSource;} 강의에서 처럼 이렇게 빈을 등록해주면 정상적으로 메시지가 출력되는데 var messageSource = new ResourceBundleMessageSource(); 이렇게 구현체를 바꾸기만 하면 NoSuchMessageException이 나네요 왜 프로퍼티에서 메시지를 못읽는건지 궁금합니다 감사합니다. ----------------------------------------- 이것저것 해보다가 해결 방법은 찾았습니다. @Beanpublic MessageSource messageSource() { var messageSource = new ResourceBundleMessageSource(); messageSource.setBasenames("messages"); return messageSource;} setBasenames()에 저렇게 넘겨주면 메시지가 정상적으로 출력이 되더라구요 왜 ReloadableResourceBundleMessageSource를 사용할때와 달리 classpath:/를 붙이면 안되는건가요?
- 미해결스프링 프레임워크 핵심 기술
세 가지 질문이 있습니다.
1. 강의 예제에서 BookService와 BookRepository 둘 다 Bean으로 관리하도록 했습니다. BookRepository는 BookService에서 사용하므로 Bean으로 관리해야 할 것 같은데, BookService를 Bean으로 관리하는 이유가 있을까요? 2. 강의의 예제에서 @Autowired를 사용해 BookRepository에 빈 객체가 주입된 경우 @PostConstruct Annotation이 있는 메소드가 실행되는 건가요? 3. 만약 의존성을 여러 번 주입해야 한다면, @PostConstruct 이 설정된 메소드는 언제 실행되나요?
- 해결됨스프링 프레임워크 핵심 기술
상황에 맞는 에노테이션?
에노테이션들이 아래와 같이 있다고 하셨는데 각각 어떤 의미가 있어서 어떤 상황에 써야하나요? @Component @Repository @Service @Controller @Configuration
- 해결됨스프링 프레임워크 핵심 기술
강사님 @Primary 관련 질문입니다.
@Primary 를 이용해서 빈이 여러개일때 우선주입 받는걸 추천하신다고 하셨는데 그러면 빈을 굳이 여러개 만들 이유가 있나요... 전 설명을 듣고Qualifier 쪽이 더 유용하겠구나 싶었는데 Primary 를 추천하신 이유가 궁금합니다. 제 생각엔 어차피 interface 구현클래스라서 다 타입 safe하지 않을까 싶었는데 ...
- 스프링 프레임워크 핵심 기술
스프링 부트관련...
삭제된 글입니다
- 미해결스프링 프레임워크 핵심 기술
NoSuchMessageException이 뜹니다..
며칠째 원인을 모르겠어서 이렇게 질문 드립니다. [프로젝트 폴더 구조] [ 소스코드 ] @Component public class AppRunner implements ApplicationRunner { @Autowired MessageSource messageSource; @Override public void run(ApplicationArguments args) throws Exception { System.out.println(messageSource.getClass()); System.out.println(messageSource.getMessage("code", new String[] {"yj"} , Locale.KOREA)); } } [ messages_ko_KR.properties ] code = hi {0} messageSource의 클래스를 찍어봤을 때는 DelegatingMessageSource로 찍힙니다. [ getMessage() 메서드 호출시 발생하는 예외 ] 왜 동작을 안하는 걸까요..
- 미해결스프링 프레임워크 핵심 기술
공부한 것들 정리해서 블로깅해도 되나요?
출처 밝힌 뒤에, 공부한 내용들이나 코드들 따로 재구성해서 블로깅해도 되나요? ps:유튜브 너무 잘보고 있어요!