스프링 프레임워크 핵심 기술

스프링 프레임워크 핵심 기술

(89개의 수강평)

1555명의 수강생
35,200원 44,000원
(20% 할인, 17일 남음)
지식공유자 · 백기선
23회 수업 · 총 4시간 42분 수업
평생 무제한 시청
수료증 발급 강의
수강 난이도 '초급'
qndyqldy 프로필

Aspect 클래스를 만든다고 한다면 목적에 맞게 여러개의 Aspect 클래스를 만드면 되는건가요..? qndyqldy 1일 전

예를들면 주문에 대한 Aspect, 사용자에 대한 Aspect 이렇게 만들면 되나요..?

1
강택연 프로필

@Qualifier 어노테이션 적용위치 관련 질문입니다. 강택연 4일 전

예제에서는 필드에 @Qualifier 어노테이션을 적용하셨는데, 생성자에 해당 어노테이션 적용시 "The annotation @Qualifier is disallowed for this location"이라는 에러메세지를 받았습니다. 생성자에 적용이 안되는 이유를 알 수 있을까요?

1
주해용 프로필

classpath 주해용 5일 전

강의중에..클래스패스를 기준으로 messages를 읽는다는게 무슨뜻이에요~? 이해가 잘 가지 않습니당.

messageSource.setBasename("classpath:/messages");

1
주해용 프로필

type safty 문제가 어떤것을 의미하나요~? 주해용 8일 전

type safty 문제가 어떤것을 의미하나요~?

1
counterchord89 프로필

해당 타입의 빈 모두 주입 받기 관련 질문입니다. counterchord89 10일 전

List를 사용해 해당 타입의 빈 모두를 주입 받은 상태에서 특정 빈만을 꺼내서 사용할 수 있는건가요 아니면 주입받은 모든 빈을 사용할 수 있는건가요?

어떤 상황에서 어떻게 사용하는지 설명해 주시면 정말 감사하겠습니다.

2
김도영 프로필

exit code 에 따른 ContextClosedEvent 작동여부 김도영 11일 전

강의 잘보고 있습니다.

ContextClosedEvent  실행 부분을 따라 했는데

작동하지 않아서 한참 이유를 찾아보다가 

제가 사용중인 intellij 에서 stop application 을 하면

exit code -1 이 떨어지더군요.

그런데 영상강좌를 계속 돌려보다 알았는데 영상에서는

exit code 130 이 떨어지는걸 봤습니다.

그래서 runner 에서 이벤트 호출 하고 마지막에

System.exit(130) 을 추가했더니

ContextClosedEvent 리스너가 작동했습니다.

exit code 에 따라 왜 작동여부가 달라지는지,

개발환경에서 exit code 를 조절 가능한지 궁금합니다.

1
김도영 프로필

앞서 드린 질문 의 보충 내용입니다. 감사합니다. 김도영 11일 전

여기까지 application.xml 내용과 springApplication.run 주석시 정상 실행된 캡쳐 입니다.

아래는 주석해제시 에러 메시지 입니다.

=========================================

14:06:33.019 [main] DEBUG org.springframework.boot.context.logging.ClasspathLoggingApplicationListener - Application failed to start with classpath: unknown

14:06:33.019 [background-preinit] DEBUG org.hibernate.validator.internal.xml.config.ValidationXmlParser - Trying to load META-INF/validation.xml for XML based Validator configuration.

14:06:33.021 [background-preinit] DEBUG org.hibernate.validator.internal.xml.config.ResourceLoaderHelper - Trying to load META-INF/validation.xml via TCCL

14:06:33.022 [background-preinit] DEBUG org.hibernate.validator.internal.xml.config.ResourceLoaderHelper - Trying to load META-INF/validation.xml via Hibernate Validator's class loader

14:06:33.022 [background-preinit] DEBUG org.hibernate.validator.internal.xml.config.ValidationXmlParser - No META-INF/validation.xml found. Using annotation based configuration only.

14:06:33.188 [background-preinit] DEBUG org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator - Loaded expression factory via original TCCL

14:06:33.191 [background-preinit] DEBUG org.hibernate.validator.internal.engine.ValidatorFactoryImpl - HV000234: Using org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator as ValidatorFactory-scoped message interpolator.

14:06:33.191 [background-preinit] DEBUG org.hibernate.validator.internal.engine.ValidatorFactoryImpl - HV000234: Using org.hibernate.validator.internal.engine.resolver.TraverseAllTraversableResolver as ValidatorFactory-scoped traversable resolver.

14:06:33.192 [background-preinit] DEBUG org.hibernate.validator.internal.engine.ValidatorFactoryImpl - HV000234: Using org.hibernate.validator.internal.util.ExecutableParameterNameProvider as ValidatorFactory-scoped parameter name provider.

14:06:33.192 [background-preinit] DEBUG org.hibernate.validator.internal.engine.ValidatorFactoryImpl - HV000234: Using org.hibernate.validator.internal.engine.DefaultClockProvider as ValidatorFactory-scoped clock provider.

14:06:33.192 [background-preinit] DEBUG org.hibernate.validator.internal.engine.ValidatorFactoryImpl - HV000234: Using org.hibernate.validator.internal.engine.scripting.DefaultScriptEvaluatorFactory as ValidatorFactory-scoped script evaluator factory.

14:06:33.337 [main] ERROR org.springframework.boot.SpringApplication - Application run failed

java.lang.IllegalStateException: Failed to load property source from location 'classpath:/application.xml'

at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.load(ConfigFileApplicationListener.java:545)

at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.loadForFileExtension(ConfigFileApplicationListener.java:494)

at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.load(ConfigFileApplicationListener.java:464)

at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.lambda$null$7(ConfigFileApplicationListener.java:443)

at java.base/java.lang.Iterable.forEach(Iterable.java:75)

at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.lambda$load$8(ConfigFileApplicationListener.java:443)

at java.base/java.lang.Iterable.forEach(Iterable.java:75)

at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.load(ConfigFileApplicationListener.java:440)

at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.lambda$load$0(ConfigFileApplicationListener.java:335)

at org.springframework.boot.context.config.FilteredPropertySource.apply(FilteredPropertySource.java:54)

at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.load(ConfigFileApplicationListener.java:323)

at org.springframework.boot.context.config.ConfigFileApplicationListener.addPropertySources(ConfigFileApplicationListener.java:214)

at org.springframework.boot.context.config.ConfigFileApplicationListener.postProcessEnvironment(ConfigFileApplicationListener.java:198)

at org.springframework.boot.context.config.ConfigFileApplicationListener.onApplicationEnvironmentPreparedEvent(ConfigFileApplicationListener.java:188)

at org.springframework.boot.context.config.ConfigFileApplicationListener.onApplicationEvent(ConfigFileApplicationListener.java:176)

at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172)

at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165)

at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139)

at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:127)

at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:76)

at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:53)

at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:345)

at org.springframework.boot.SpringApplication.run(SpringApplication.java:308)

at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226)

at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215)

at com.example.ExampleApplication.main(ExampleApplication.java:16)

Caused by: java.util.InvalidPropertiesFormatException: jdk.internal.org.xml.sax.SAXParseException; An XML properties document must contain the DOCTYPE declaration as defined by java.util.Properties.

at java.base/jdk.internal.util.xml.PropertiesDefaultHandler.load(PropertiesDefaultHandler.java:85)

at java.base/java.util.Properties.loadFromXML(Properties.java:962)

at org.springframework.core.io.support.PropertiesLoaderUtils.fillProperties(PropertiesLoaderUtils.java:137)

at org.springframework.core.io.support.PropertiesLoaderUtils.loadProperties(PropertiesLoaderUtils.java:122)

at org.springframework.boot.env.PropertiesPropertySourceLoader.loadProperties(PropertiesPropertySourceLoader.java:59)

at org.springframework.boot.env.PropertiesPropertySourceLoader.load(PropertiesPropertySourceLoader.java:47)

at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.loadDocuments(ConfigFileApplicationListener.java:562)

at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.load(ConfigFileApplicationListener.java:518)

... 25 common frames omitted

Caused by: jdk.internal.org.xml.sax.SAXParseException: An XML properties document must contain the DOCTYPE declaration as defined by java.util.Properties.

at java.base/jdk.internal.util.xml.PropertiesDefaultHandler.startElement(PropertiesDefaultHandler.java:160)

at java.base/jdk.internal.util.xml.impl.ParserSAX.parse(ParserSAX.java:470)

at java.base/jdk.internal.util.xml.impl.ParserSAX.parse(ParserSAX.java:411)

at java.base/jdk.internal.util.xml.impl.ParserSAX.parse(ParserSAX.java:374)

at java.base/jdk.internal.util.xml.impl.SAXParserImpl.parse(SAXParserImpl.java:97)

at java.base/jdk.internal.util.xml.PropertiesDefaultHandler.load(PropertiesDefaultHandler.java:83)

... 32 common frames omitted

Process finished with exit code 1

그리고 

https://stackoverflow.com/questions/29173614/loading-applicationcontext-xml-when-using-springapplication/37193379

위 링크를 보고 importSource 를 시도해 보았지만 결과는 같았습니다.

다시 테스트를 해보니 

ClassPathXmlApplicationContext  로 

컨테이너 생성 하고 Array.toString 까지 주석처리를 해도

application.xml 파일이 있으면 일단 오류가 발생하는것 같습니다.

xml 파일의 전체 내용 입니다.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

<bean id="carService" class="com.example.CarService">
<property name="carRepository" ref="carRepository" />
</bean>
<bean id="carRepository" class="com.example.CarRepository" />

</beans>

1
김도영 프로필

xml 로 빈설징시 springApplication.run 김도영 11일 전

안녕하세요.

xml 로 빈설징시 springApplication.run 을 주석처리 하지 않으면 오류가 발생하는데 이유가 궁금합니다.

오류내용 : classpath unknown

IllegalStateException fail to load property source from location

classpath:/application.xml

감사합니다.

1
Sujin Huh 프로필

질문 있습니다. Sujin Huh 14일 전

12:57초

코드를 입력하고 실행을 했더니 기존 코드에나왔던 결과 값만 나옵니다. 

어디가 문제가 있는지 , 강좌를 다시 봐도 모르겠습니다. 

@EventListener
@Async
public void handle(ContextClosedEvent event) {
System.out.println(Thread.currentThread().toString());
System.out.println("======ContextClosedEvent=====");

}

10
허수진 (탈퇴) 프로필

단축키 질문입니다. 허수진 (탈퇴) 17일 전

저번 예제로배우는 강의에서는 단축키가 나왔는데, 이번 강좌에는 따로 보이지가 않습니다. 혹시 ... 방법이 있을까요?

1
부캐릭 프로필

Spring이 아닌 일반Java프로젝트에 Annotation을 사용해서 메소드 성능측정하고 싶은데요 부캐릭 24일 전

사용가능할까요?

애노테이션을 똑같이 만들었는데 

PerfAspect 클래스는 어떻게 만들어야 할 지 모르겠어요.

1
노은영 프로필

단축키 질문합니다! 노은영 25일 전

안녕하세요,

context.getBeanDefinitionNames();를 드래그하고 어떤 단축키를 누르셨는데, 결과 값을 받을 수 있는 String[] beanDefinitionNames가 앞에 생겼네요!

어떤 단축키 사용하셨는지 알려주실 수 있을까요?

1
yooha9621@naver.com 프로필

이 예제 설명의 진짜 의도를 모르겠습니다. yooha9621@naver.com 1달 전

12:25에서 사용한 예제에 대한 질문입니다.

bookrepository를 목킹하셔서 널이 아니라 북을 리턴하도록 바꾸셔서 단위 테스트를 하셨잖아요.

이 때 bookrepository를 빈으로 등록해서 의존성 주입이 가능하게 만들었기 때문에 테스트가 용이해진다. 라는 정보를 알려주고자 이 예제를 설명해주신건가요?

그렇다면 빈에 등록이 되어야만 목킹이 가능한건가여?

bookrepository를 new로 선언한 뒤 목킹?해서 테스트하면 안되는건가요?

그냥 이 예제를 설명하심으로써 정확히 어떤 핵심내용을말씀하시고자 하는지 제대로 이해가 안되서 질문드립니다.

2
엄수현 프로필

수강강좌 질문 과 쿠폰질문 엄수현 1달 전

안녕하세요 강사님  최근 취업을 해서  스프링시큐리티를 통해서 인증/인가 개발은 담당하게된   주니어 개발자 입니다.

회사에서  업무에 빠른 적응을 위해서 파일럿 프로젝트라고 개인에게  준건데 제가 스프링을 잘몰라서 주말 과 비는 시간을 활용해서 계속해서 스프링공부를 하려고 합니다 다만  스프링 핵심 기술을 듣고  뭐를 듣는게 가장 좋을까요? 스프링을 오랫동안 깊게 공부해본적이 없어서 강의순서를 조금이라도 알려주시면 정말 감사하겠스빈다.

강의는 스프링 웹 mvc 스프링부트개념과 활용 스프링데이터 jpa  스프링 기반 rest api 스프링 security  있는데 강의순을 추천해주시면 좋겠습니다.! 부트를 하는데 mvc도 듣는게 좋을지도 알려주세요!! 그리고 강사님 강의를 들으면 20% 짜리 쿠폰을 주시는걸로 아는데 혹시 20% 할인 이벤트가 없을까요 금전적 부담이 있어서 질문드립니다.  저 강의를 전부다 구매 할 생각 이라서요. 그리고 항상 유투브로 좋은 강의 개발자로써 좋은이야기를 많이 해주셔서 감사합니다!

그럼 이 두가지 질문에 답변해 주시면 정말 감사하겠습니다.!

1
최천일 프로필

앱 개발자가 서버를 만든다면 어떻게 듣는게 효율적일까요? 최천일 1달 전

스프링으로 서버를 만들어보기 위해 수강하고 있습니다.

다른게 아니라 제가 모바일(안드로이드) 개발자를 목표로 하고 있는데 그렇다면

강사님 강좌를 어떻게 듣는게 좋을지 궁금합니다.

1
지식공유자 되기
많은 사람들에게 배움의 기회를 주고,
경제적 보상을 받아보세요.
지식공유참여
기업 교육을 위한 인프런
“인프런 비즈니스” 를 통해 모든 팀원이 인프런의 강의들을
자유롭게 학습하는 환경을 제공하세요.
인프런 비즈니스