inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

스프링부트가 @EnableConfigurationProperties를 사용하는 이유

해결됨

토비의 스프링 부트 - 이해와 원리

안녕하세요! 토비님! 강의 정말 잘 듣고 있습니다. 덕분에 공부가 많이 되고 있어요. 강의 내주셔서 정말 감사합니다 :) 해당 강의를 듣고 나서, @Import가 더 간결해보이는데, 스프링 부트는 왜 굳이 @EnableConfigurationProperties()를 사용했을까? 라는 의문이 들어 아래와 같은 작은 고민을 해보았습니다. 처음에는 ServerProperties 빈 등록을 자동화 하기 위한 장치라고 생각했는데, 두 애너테이션 모두 클래스명을 일일히 적어주어야 하는걸 보니 자동화를 위한 것은 아닌 것 같다는 생각이 들어, 고민의 방향을 바꿔 보았습니다. 결론적으로, 저는 "@EnableConfigurationProperties()를 사용하는 이유가 @Import만으로는 어떠한 추가적인 행위를 할 수 없기 때문에 @EnableConfigurationProperties를 구현해서 사용한 것 아닐까..?"라고 추측이 되는데, 스프링 부트에서 @EnableConfigurationProperties() 라는 애너테이션을 도입한 이유가 무엇일까요..?

  • spring
  • spring-boot
  • spring-jdbc
딱구 댓글 1 좋아요 1 조회수 1119

@SpringBootTest와 @ExtendWith + @ContextConfiguration 차이가 궁금합니다.

해결됨

토비의 스프링 부트 - 이해와 원리

안녕하세요. 강의 잘 듣고 있습니다! 일반적으로 사용하는 스프링 컨테이너를 포함하는 @SpringBootTest 와 강의에서 사용하신 @ExtendWith + @ContextConfiguration 의 차이점이 궁금합니다. @ExtendWith(SpringExtension.class) @ContextConfiguration(classes = HellobootApplication.class) @TestPropertySource("classpath:/application.properties") class DataSourceTest {} @SpringBootTest(classes = HellobootApplication.class) class DataSourceTest {} 위 두 코드의 실행결과가 같은 것을 확인하였습니다. 만약 두 애너테이션의 classes 속성이 동일하다면 @SpringBootTest 를 사용하는 것이 테스트 프로퍼티를 명시할 필요가 없어서 더 좋아보이는데요. 두 애너테이션의 동작 방식의 차이점이나 장단이 있는지 궁금합니다!

  • spring
  • spring-boot
  • spring-jdbc
Seunghoon Choi 댓글 1 좋아요 0 조회수 1473

다국어 처리 신규 항목이 생겼을 때 최선의 방법 문의 드립니다.

미해결

토비의 스프링 부트 - 이해와 원리

토비님 안녕하세요~ 질문을 계속 많이 드리게 되어 토비님 시간을 많이 뺏진 않을까 죄송한 생각이 듭니다 공부하면서 궁금했던 사항이 중간 중간 계속 떠올라서요.. 스프링 사용하면서 사용자에게 다국어 메세지 처리하는 방법이 두가지가 있다고 경험했습니다 1 .js 파일에 관리하는 방법 자바파일에 관리하는 방법 2. 테이블에 등록하고 필요할때 select 하는 방법 (하지만 메세지 처리 데이터가 수만건을 넘어갈 땐 너무 많진 않을까.. ) 우선 저는 *.js 파일에 수기성으로 관리 할 경우 서버 재구동을 해야 하기 때문에 자바스크립트나 자바 파일에 관리 하는것은 아닌가 생각이 듭니다. 다국어 처리시 신규 메세지항목이 생겼을 때 서버를 재시작 하지 않고 적용 할 수 있는 최선의 베스트 방법일지 궁금합니다 감사합니다. 수고하세요. --█●●-------------------------------------------- #다국어 #처리 #최선 #방법 #부트 #스프링 #스프링부트 #spring #sping-boot #springboot #토비 --█●●--------------------------------------------

  • spring
  • spring-boot
  • spring-jdbc
주아아빠 댓글 1 좋아요 0 조회수 626

동시간대 저장을 제어 하는 방법을 문의 드립니다

미해결

토비의 스프링 부트 - 이해와 원리

동시간데 저장을 제어 하는 방법을 문의 드립니다 안녕하세요 토비님 ~ 시스템을 사용하는 유저가 해외 각지역에 많이 있고 어떤 오더정보가 있다고 가정하겠습니다 한국유저가 어떤 오더 금액적인부분 조회 하고 저장을 시도합니다 거의 동시간데에(0. 몇초차이로) 일본유저가 동일 오더를 금액적인부분조회 하고 저장을 시도합니다 한국유저가 오더저장을 하던 일본유저가 오더저장을 하던 저장하는데 비지니스로직때문에 2~5 초 의 긴 시간이 걸리기 때문에 한국유저 , 일본유저는 차후에 서로 본인이 기대했던 값이 틀리게 저장이 됩니다 이런 동시성 저장 문제를 방어 해결하기 위해서 저장 프로세스 로직이나, 자바 기술적인 부분을 어떻게 적용 해야 할까요? 이런문제는 배치성 자바로직을 돌릴때도 마찬가지입니다 동일 데이터를 동시간데에 한국유저가 자바배치 작업을 수행하고 거의 동시간데에(0. 몇초차이로) 일본유저가 자바배치 작업을 수행 할수 있습니다 (참고로, 제가 우선 경험한 부분을 말씀드리면 저장되는 순서 히스토리성을 관리를 해야 하는 경우는 저장하기 전에 데이터베이스에 락관련테이블하나 만들고 사용자가 저장하기전에 나 저장 할꺼야 하고 락관련테이블에 레코드를 넣고 시작 합니다 ) 감사합니다 수고하세요. --█●●-------------------------------------------- #동시 #동시성 #방어 #로직 #방법 #부트 #스프링 #스프링부트 #spring #sping-boot #springboot #토비 --█●●--------------------------------------------

  • spring
  • spring-boot
  • spring-jdbc
주아아빠 댓글 1 좋아요 0 조회수 351

스프링에 삭제/수정을 시 방어 코드 로직이 있을 까요?

미해결

토비의 스프링 부트 - 이해와 원리

스프링에 삭제/수정을 시 방어 코드 로직이 있을 까요? 안녕하세요 토비님 ~ 오더 삭제를 위한 매핑 정보 @RequestMapping(value ="/경로/{오더번호}" 삭제로직 mvc 공부하다가 궁금한점이 있어 문의 드립니다 위와 같은 삭제 로직 호출 부분이 있다고 가정 할 때 웹, 스프링 공부를 한 사람이 악의 적인 의도를 갖고 클롬 개발자도구를 사용해서 오더 삭제 URI 주소를 확인 유추하게 되어 악의적으로 자기 오더가 아닌 오더번호 or 오더Seq를 쿠팡/배달의민족 등 삭제 시도 공격을 할 수 있을 거라고 생각해봤습니다 물론 삭제 로직 에 사용자의 로그인 정보 나 롤 정보를 담은 SQL에 WHERE 조건은 집어 넣을 수 있습니다 이런 악의적인 공격을 피해 갈 수 있는 다른 스프링의 기능이 있을 지 궁금 합니다 감사합니다 수고하세요. --█●●-------------------------------------------- #delete #update #수정 #삭제 #방어 #로직 #방법 #부트 #스프링 #스프링부트 #spring #sping-boot #springboot #토비

  • spring
  • spring-boot
  • spring-jdbc
주아아빠 댓글 1 좋아요 1 조회수 477

서버운영중 오류 예외 발생시 원인 찾는 방법 문의 드립니다

미해결

토비의 스프링 부트 - 이해와 원리

안녕하세요 토비님~ 이번에도 강의 내용과 상관 없는 질문 드립니다 시스템을 운영하면서 예상치 못한 에러상황이나 자바소스 예외 상황이 발생 했을 때 예외가 발생한 자바소스는 어떤 자바파일 이며 그 특정 자바 파일 몇번째 라인에서 왜? 오류나 예외가 발생했는지 로그를 담아 db에 넣고 싶습니다. 그러면 개발자 입장에서 원인 찾아 소스 수정하는게 빠를 테니까요.. (서버에 남는 로그파일에서 찾아서 로그를 다시 다운받아서 찾아 보는 것 보다 db 테이블에서 clob 으로 레고드를 남기고 찾아서, 따라 가는게 이득이라고 생각했습니다 ) 구글링해보니 우선 아파치 ExceptionUtils 부분이 있어 아래 이미지와 같이 적용을 했는데 토비님이 실무에서 사용하고 계시는 다른 쉽고 좋은 베스트 방법이 있진 않을까 문의 드립니다 급한 질문 아닙니 시간 나 실 때 알려주시면 감사하겠습니다. 수고하세요. --█●●-------------------------------------------- #Exception #Error #예외 #처리 #원인 #로그 #부트 #spring #sping-boot #springboot #토비 --█●●--------------------------------------------

  • spring
  • spring-boot
  • spring-jdbc
주아아빠 댓글 1 좋아요 0 조회수 1003

15강 질문 드립니다!

미해결

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

15강 람다식 질문 드립니다! 선생님 안녕하세요! 15강에서 작성해주신 람다식이 있는데 람다식을 사용하지 않은 코드도 댓글로 알려주실 수 있으실까요~! 자바 공부를 시작한 지 얼마 되지 않아서 혼자 해보려 해도 잘 안되네요..! 부탁 드리겠습니다!! 감사합니다!

  • java
  • spring
  • aws
  • mysql
  • spring-boot
  • jpa
김한솔 댓글 1 좋아요 2 조회수 543

회사 비지니스 공통업무처리 관련 유용한 라이브러리 들이 있는지 여쭤봅니다

해결됨

토비의 스프링 부트 - 이해와 원리

안녕하세요 토비님~ 이번에도 강의 내용과 상관 없는 질문 드립니다 회사에서 타임리프 + JPA + 마이바티스 + 스프링/스프링부트 + 오라클 환경에서 개발하고 있습니다 MVC CRUD, API 송수신, 특이업무를 제외하고는 보통 회사에서 일어나는 공통업무는 아래와 같은 부분이 있다고 생각 합니다 *.엑셀다운 *.엑셀업로드 *.이메일전송(첨부파일포함) *.PDF다운 *.FAX전송 *.출력 다른 분들이 먼저 개발해 놓은 소스를 참고해 가며 개발 수정 운영을 하고 있는데요 제가 느끼기에는 뭔가 불필요한 소스 코드가 많고 긴 건 아닐까?.. 누군가 잘 만들어 놓은 라이브러리 메서드에 파라미터만 담아주고 호출 하면 되진 않을까 생각이 들었습니다 혹시, 아래와 같은 공통 업무 사항들에 대해서 스프링 진영에서 Util 성격으로 잘 만들어 미리 만들어 놓은 좋은 라이브러리가 있지는 않 을까 생각이 듭니다 (엑셀업로드,다운로드/이메일송수신/PDF/FAX/출력 .. ) 회사마다 환경이나 요구 상황에 따라서 다르겠지만, 토비님은 이런 공통 비지니스 업무 관련 엑셀업로드,다운로드/이메일송수신/PDF/FAX/출력 관련 공통 비지니스 업무 관련해서 스프링 진영에서 혹시 이미 만들어 놓은 라이브러리 의존 관계를 추가해서 사용하고 계시는 부분이 있나 여쭤봅니다 만약 사용하고 계신다면 어떠 어떠한 것들이 있는지 소개 부탁 드립니다 급한 질문 아닙니 시간 나 실 때 알려주시면 감사하겠습니다. 수고하세요. --█●●-------------------------------------------- #엑셀 #이메일 #PDF #FAX #출력 #스프링 #스프링부트 #부트 #spring #sping-boot #springboot #토비 #공통 #라이브러리 --█●●--------------------------------------------

  • spring
  • spring-boot
  • spring-jdbc
주아아빠 댓글 1 좋아요 0 조회수 549

5:40분초 쯤에... 프로퍼티클래스의 분리 강의에서

미해결

토비의 스프링 부트 - 이해와 원리

@Bean @ConditionalOnMissingBean public ServletWebServerFactory jettyServletWebServerFactory(ServerProperties serverProperties){} 이부분에 ServerProperties 을 따로 주입을 안받아도 되나요..? 빈으로 띄워서 그런건가..? 매개변수에 딱 저렇게 누가 넣어주는건가요..? @Autowired없이..? 헷갈리네요 ㅠㅠㅠ

  • spring
  • spring-boot
  • spring-jdbc
원구 댓글 2 좋아요 0 조회수 596

distinct를 적용하지 않았을 때의 결과 관련

해결됨

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

강의를 중간에 distinct를 적용하지 않으면 포스트맨에서 결과가 중복되게 나오고, 쿼리도 inner join으로 되어야 하는데 이상합니다ㅜ 코드가 모두 동일한데, 콘솔에 찍어봐도 4건이 아닌 2건 밖에 조회가 되지 않고 결과도 2건으로 나옵니다.. 또한, 강의에서는 inner join이 나가는데 제 코드는 join이 나갑니다..뭐가 문제일까요?

  • java
  • spring
  • spring-boot
  • jpa
yjw9424 댓글 4 좋아요 3 조회수 854

"item.orderItems[0].item.name" 질문 관련

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

https://drive.google.com/file/d/1OKpCQpwYWvWjppEIcvzWpSZKy09GAivy/view?usp=sharing 위에는 구글 압축 파일입니다. 다음은 에러 내용입니다. Caused by: org.attoparser.ParseException: Exception evaluating SpringEL expression: "item.orderItems[0]. item.name " (template: "order/orderList" - line 46, col 21) Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1025E: The collection has '0' elements, index '0' is invalid 야생형 코스로 들으려고 하다보니 에러난 부분을 고치기가 어렵고 다른 분들도 같은 질문을 많이 하셨어서, 질문들도 다 확인해보고 저의 코드에서도 해당 부분들을 유심히 보았으나 에러를 잡지 못해서 질문드렸습니다. 위의 에러코드 내용을 미루어보아 orderItems의 값이 null이어서 화면에 나오지 않는다고 생각하여서 그 부분을 확인해보았는데, null로 출력되는 것은 확인하였습니다. html코드의 문제인가 싶어 코드도 계속 확인해보고, 선생님께서 제공해주신 코드파일에 있는 html을 그대로 복사해서 실행해보았는데도 수정이 되지 않아서 질문드렸습니다. 감사합니다. Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback. Tue Mar 28 19:44:33 KST 2023 There was an unexpected error (type=Internal Server Error, status=500). An error happened during template parsing (template: "class path resource [templates/order/orderList.html]") org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [templates/order/orderList.html]") at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse( AbstractMarkupTemplateParser.java:241 ) at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parseStandalone( AbstractMarkupTemplateParser.java:100 ) at org.thymeleaf.engine.TemplateManager.parseAndProcess( TemplateManager.java:666 ) at org.thymeleaf.TemplateEngine.process( TemplateEngine.java:1103 ) at org.thymeleaf.TemplateEngine.process( TemplateEngine.java:1077 ) at org.thymeleaf.spring6.view.ThymeleafView.renderFragment( ThymeleafView.java:372 ) at org.thymeleaf.spring6.view.ThymeleafView.render( ThymeleafView.java:192 ) at org.springframework.web.servlet.DispatcherServlet.render( DispatcherServlet.java:1415 ) at org.springframework.web.servlet.DispatcherServlet.processDispatchResult( DispatcherServlet.java:1159 ) at org.springframework.web.servlet.DispatcherServlet.doDispatch( DispatcherServlet.java:1098 ) at org.springframework.web.servlet.DispatcherServlet.doService( DispatcherServlet.java:974 ) at org.springframework.web.servlet.FrameworkServlet.processRequest( FrameworkServlet.java:1011 ) at org.springframework.web.servlet.FrameworkServlet.doGet( FrameworkServlet.java:903 ) at jakarta.servlet.http.HttpServlet.service( HttpServlet.java:537 ) at org.springframework.web.servlet.FrameworkServlet.service( FrameworkServlet.java:885 ) at jakarta.servlet.http.HttpServlet.service( HttpServlet.java:631 ) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:205 ) at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:149 ) at org.apache.tomcat.websocket.server.WsFilter.doFilter( WsFilter.java:53 ) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:174 ) at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:149 ) at org.springframework.web.filter.RequestContextFilter.doFilterInternal( RequestContextFilter.java:100 ) at org.springframework.web.filter.OncePerRequestFilter.doFilter( OncePerRequestFilter.java:116 ) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:174 ) at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:149 ) at org.springframework.web.filter.FormContentFilter.doFilterInternal( FormContentFilter.java:93 ) at org.springframework.web.filter.OncePerRequestFilter.doFilter( OncePerRequestFilter.java:116 ) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:174 ) at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:149 ) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal( CharacterEncodingFilter.java:201 ) at org.springframework.web.filter.OncePerRequestFilter.doFilter( OncePerRequestFilter.java:116 ) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:174 ) at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:149 ) at org.apache.catalina.core.StandardWrapperValve.invoke( StandardWrapperValve.java:166 ) at org.apache.catalina.core.StandardContextValve.invoke( StandardContextValve.java:90 ) at org.apache.catalina.authenticator.AuthenticatorBase.invoke( AuthenticatorBase.java:493 ) at org.apache.catalina.core.StandardHostValve.invoke( StandardHostValve.java:115 ) at org.apache.catalina.valves.ErrorReportValve.invoke( ErrorReportValve.java:93 ) at org.apache.catalina.core.StandardEngineValve.invoke( StandardEngineValve.java:74 ) at org.apache.catalina.connector.CoyoteAdapter.service( CoyoteAdapter.java:341 ) at org.apache.coyote.http11.Http11Processor.service( Http11Processor.java:390 ) at org.apache.coyote.AbstractProcessorLight.process( AbstractProcessorLight.java:63 ) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process( AbstractProtocol.java:894 ) at org.apache.tomcat.util.net .NioEndpoint$SocketProcessor.doRun( NioEndpoint.java:1741 ) at org.apache.tomcat.util.net.SocketProcessorBase.run ( SocketProcessorBase.java:52 ) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker( ThreadPoolExecutor.java:1191 ) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run( ThreadPoolExecutor.java:659 ) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run( TaskThread.java:61 ) at java.base/java.lang.Thread.run( Thread.java:833 ) Caused by: org.attoparser.ParseException: Exception evaluating SpringEL expression: "item.orderItems[0]. item.name " (template: "order/orderList" - line 46, col 21) at org.attoparser.MarkupParser.parseDocument( MarkupParser.java:393 ) at org.attoparser.MarkupParser.parse( MarkupParser.java:257 ) at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse( AbstractMarkupTemplateParser.java:230 ) ... 48 more Caused by: org.thymeleaf.exceptions.TemplateProcessingException: Exception evaluating SpringEL expression: "item.orderItems[0]. item.name " (template: "order/orderList" - line 46, col 21) at org.thymeleaf.spring6.expression.SPELVariableExpressionEvaluator.evaluate( SPELVariableExpressionEvaluator.java:292 ) at org.thymeleaf.standard.expression.VariableExpression.executeVariableExpression( VariableExpression.java:166 ) at org.thymeleaf.standard.expression.SimpleExpression.executeSimple( SimpleExpression.java:66 ) at org.thymeleaf.standard.expression.Expression.execute( Expression.java:109 ) at org.thymeleaf.standard.expression.Expression.execute( Expression.java:138 ) at org.thymeleaf.standard.processor.AbstractStandardExpressionAttributeTagProcessor.doProcess( AbstractStandardExpressionAttributeTagProcessor.java:144 ) at org.thymeleaf.processor.element.AbstractAttributeTagProcessor.doProcess( AbstractAttributeTagProcessor.java:74 ) at org.thymeleaf.processor.element.AbstractElementTagProcessor.process( AbstractElementTagProcessor.java:95 ) at org.thymeleaf.util.ProcessorConfigurationUtils$ElementTagProcessorWrapper.process( ProcessorConfigurationUtils.java:633 ) at org.thymeleaf.engine.ProcessorTemplateHandler.handleOpenElement( ProcessorTemplateHandler.java:1314 ) at org.thymeleaf.engine.OpenElementTag.beHandled( OpenElementTag.java:205 ) at org.thymeleaf.engine.Model.process( Model.java:282 ) at org.thymeleaf.engine.Model.process( Model.java:290 ) at org.thymeleaf.engine.IteratedGatheringModelProcessable.processIterationModel( IteratedGatheringModelProcessable.java:368 ) at org.thymeleaf.engine.IteratedGatheringModelProcessable.process( IteratedGatheringModelProcessable.java:222 ) at org.thymeleaf.engine.ProcessorTemplateHandler.handleCloseElement( ProcessorTemplateHandler.java:1640 ) at org.thymeleaf.engine.TemplateHandlerAdapterMarkupHandler.handleCloseElementEnd( TemplateHandlerAdapterMarkupHandler.java:388 ) at org.thymeleaf.templateparser.markup.InlinedOutputExpressionMarkupHandler$InlineMarkupAdapterPreProcessorHandler.handleCloseElementEnd( InlinedOutputExpressionMarkupHandler.java:322 ) at org.thymeleaf.standard.inline.OutputExpressionInlinePreProcessorHandler.handleCloseElementEnd( OutputExpressionInlinePreProcessorHandler.java:220 ) at org.thymeleaf.templateparser.markup.InlinedOutputExpressionMarkupHandler.handleCloseElementEnd( InlinedOutputExpressionMarkupHandler.java:164 ) at org.attoparser.HtmlElement.handleCloseElementEnd( HtmlElement.java:169 ) at org.attoparser.HtmlMarkupHandler.handleCloseElementEnd( HtmlMarkupHandler.java:412 ) at org.attoparser.MarkupEventProcessorHandler.handleCloseElementEnd( MarkupEventProcessorHandler.java:473 ) at org.attoparser.ParsingElementMarkupUtil.parseCloseElement( ParsingElementMarkupUtil.java:201 ) at org.attoparser.MarkupParser.parseBuffer( MarkupParser.java:725 ) at org.attoparser.MarkupParser.parseDocument( MarkupParser.java:301 ) ... 50 more Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1025E: The collection has '0' elements, index '0' is invalid at org.springframework.expression.spel.ast.Indexer$CollectionIndexingValueRef.growCollectionIfNecessary( Indexer.java:700 ) at org.springframework.expression.spel.ast.Indexer$CollectionIndexingValueRef.getValue( Indexer.java:664 ) at org.springframework.expression.spel.ast.Indexer.getValueInternal( Indexer.java:102 ) at org.springframework.expression.spel.ast.CompoundExpression.getValueRef( CompoundExpression.java:61 ) at org.springframework.expression.spel.ast.CompoundExpression.getValueInternal( CompoundExpression.java:91 ) at org.springframework.expression.spel.ast.SpelNodeImpl.getValue( SpelNodeImpl.java:112 ) at org.springframework.expression.spel.standard.SpelExpression.getValue( SpelExpression.java:338 ) at org.thymeleaf.spring6.expression.SPELVariableExpressionEvaluator.evaluate( SPELVariableExpressionEvaluator.java:265 ) ... 75 more

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
c880910 댓글 1 좋아요 1 조회수 773

a href 태그 관련질문입니다.

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. home.html 에 <a href="/members/new">회원 가입</a> 여기서 /members/new 가 localhost:8080/members/new 로 연결이 되는 것 같은 데 어떻게 가능한건지 잘 모르겠습니다. /members/new 는 절대경로로 알고 있는데 프로젝트 폴더에는 이러한 폴더가 없습니다.

  • java
  • spring
  • mvc
  • spring-boot
김서진 댓글 3 좋아요 0 조회수 452

생성 메서드, 빌더 패턴, 생성자

해결됨

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

안녕하세요 선생님!! 항상 좋은 강의 해주셔서 감사드립니다 :) 강의에서 new 생성자를 못쓰도록 생성자를PROTECTED로 막으시고 생성 메서드만 사용하도록 하셨는데요. 프로젝트를 진행할 경우나 실무에서 생성 메서드만 통일해서 사용하는 것이 좋을까요 아님 아래 예시와 같이 생성 메서드와 빌더 패턴 둘 다 혼합해서 사용해도 괜찮을까요? Order 클래스의 생성 메서드에서 Setter를 안쓰고 예시와 같이 생성자를 사용해도 괜찮을까요? 감사합니다! Item @Builder private Item(String name, int price, int stockQuantity) { this.name = name; this.price = price; this.stockQuantity = stockQuantity; } Order private Order(OrderStatus status, Member member) { this.status = status; this.member = member; this.orderDate = LocalDateTime.now(); } public static Order createOrder(OrderStatus status, Member member, OrderItem... orderItems) { Order order = new Order(status, member); for (OrderItem orderItem : orderItems) { order.addOrderItem(orderItem); } return order; }

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
심우민 댓글 1 좋아요 0 조회수 651

강의 자료 소스코드가 github에 있는것과 다르던데..

미해결

토비의 스프링 부트 - 이해와 원리

https://github.com/tobyspringboot/helloboot 에 있는 소스랑 다르던데.. META-INF.spring에 있는 내용은 어떻게 구성하는 것인가요? 강의 휘리릭 듣고 따라 하려고 하는데.. 잘 안되네요.. ^^;

  • spring
  • spring-boot
  • spring-jdbc
신성철 댓글 1 좋아요 0 조회수 582

@Configuration에 대해 질문드립니다.

해결됨

토비의 스프링 부트 - 이해와 원리

안녕하세요 토비님 강의를 듣다가 의문점이 생겨서 질문 드립니다. @Configuration와 @Component의 차이점을 잘 모르겠습니다. @Configuration안을 보면 @Component와 @Documented가 있는데 단지 @Documented 차이인가요? 아니면 ProxyMode를 사용하기위한 상위 버전의 개념이라고 생각 하면 될까요?

  • spring
  • spring-boot
  • spring-jdbc
이찬원 댓글 1 좋아요 1 조회수 650

스프링 api 메세지 수신시 map dto 뭐가 좋을까요? 어떤상황에 map , dto 를 선택해서 사용해야 할까요?

해결됨

토비의 스프링 부트 - 이해와 원리

안녕하세요 토비님 ~ 토비님 강의와 유튜브 잘 보고 있습니다. 감사합니다. 강의 내용과 벗어난 질문이긴 하지만 개발하다 궁금한 부분 있어 질문 드립니다 스프링을 이용해서 api 데이터 수신 시 저는 RestTemplate dto선언해서 Mapstruct 이용해서 개발을 했고 다른분은 map 을 이용해서 받아서 개발하는걸 봤습니다 처리해야 하는 상황에 따라 다르겠지만, 토비님이 경험하신 노하우로는 어떤 경우에는 map 으로 받으면 좋고 어떤경우는 dto 로 받아서 처리하는게 좋은 건지 정석, 베스트 정답이 있을까요? 경우에 따라서 사례를 들어서 설명해주시면 좋겠습니다 급한 질문은 아니니 한가한 시간 나실 때 알려 주시면 좋겠습니다 #spring #스프링 #spring-boot #스프링부트 #부트 #RestTemplate #레스트템플릿 #api #map #dto #vo #최선 #정석

  • spring
  • spring-boot
  • spring-jdbc
주아아빠 댓글 1 좋아요 1 조회수 1550

스프링, 스프링부트,배치, JPA, MVC, 디자인 패턴 등등 어떻게 공부 해야 할지 조언 부탁드립니다

해결됨

토비의 스프링 부트 - 이해와 원리

안녕하세요 토비님 강의 잘 들었습니다~ 오늘 새벽에 토비님 유투브를 일부 보다 보니 오라클 레퍼런스 사이트가 잘되어 있으니 보시면 웬만한 책보다 잘되있고 유용하다고 말씀하시더라구요 토비님이 선배 개발자 로서 학생분들, 후배 개발자 동료 분들이 스프링, 스프링부트,배치, JPA, MVC, 디자인 패턴 등등 어떻게 공부 해야 할지 추천 조언 부탁 드립니다 좋은 유튜브나, 강의사이트, 블로그, 서적 등이 공부하고 참고 할 수 있는 부분들이요 부끄럽지 않은 개발자가 되고 싶고 지금 보다 더 성장하고 싶습니다 ( 요즘 올리시는 유튜브에 타임어택 잘 보고 있습니다 ) -.토비님을 존경하고 사랑하는 후배 개발자가.. #spring-boot #spring #스프링 #스프링부트 #JPA #MVC #추천 #공부 #방법 #조언

  • spring
  • spring-boot
  • spring-jdbc
주아아빠 댓글 1 좋아요 6 조회수 1078

안녕하세요 토비선생님 load(MyAutoConfiguration.class)

미해결

토비의 스프링 부트 - 이해와 원리

여기에 들어가는 클레스는 DispacherServiletConfig TomcatWebWebServerConfig 에 선언된 애노테이션? 메타에노테이션? 클레스 값을 넣는 건가요 ?? MyAutoConfiguration에서 DispacherServiletConfig TomcatWebWebServerConfig 2가지에 대한 메타데이터 설정을 세팅함(Configration) 그리고 DispacherServiletConfig,TomcatWebWebServerConfig 에 @MyAutoConfiguration 에노테이션 선언 EnalbeMyAutoConfigration에서 MyAutoConfigImportSelector를 이용해 파일 경로에 있는 빈 정보들을 가저옴 .load(설정이 셋팅된 @클레스 입력,classLoader) MySpringBootApplication 에서 @EnableMyAutoConfigration 선언을 통해서 사용 제가 현재 이해한 바는 이런데 맞을까요?

  • spring
  • spring-boot
  • spring-jdbc
이동환 댓글 1 좋아요 1 조회수 522

강의 다운로드가 가능한가요?

미해결

토비의 스프링 부트 - 이해와 원리

현재 파견나와서 인터넷 설치가 안되어있어 테더링으로 하려니 부담이 되서요 회사에서 다운 후 집에가서 공부하고 싶은데 가능한지 궁금합니다. 안되면 어쩔 수 없구요

  • spring
  • spring-boot
  • spring-jdbc
zldqjrj 댓글 1 좋아요 0 조회수 2496

스프링 컨테이너 설명중 헷갈리는 부분이 있어 질문 드립니다.

해결됨

토비의 스프링 부트 - 이해와 원리

안녕하십니까 강의 즐겁게 보고 있습니다. Containerless 강의 6분 30초 부분에서 다음과 같이 설명 해주셨습니다. "여러개의 Bean을 가지고 있는 스프링 컨테이너가 서블릿 컨테이너 뒤쪽에서 서블릿을 통해서 웹으로 들어온 요청을 받아가지고 스프링 컨테이너한테 다시 넘겨준다." 해당 부분 설명이 조금 헷갈리는데 그냥 단순하게 서블릿 컨테이너를 통해 들어온 요청을, 서블릿 컨테이너 뒤에서 동작하고 있는 스프링 컨테이너에 넘겨준다. 정도로 생각하면 될까요? "스프링 컨테이너한테 다시 넘겨준다" 는 부분이 좀 헷갈리는데 제가 이해한것이 맞는지 궁금하여 질문 남깁니다. 감사합니다.

  • spring
  • spring-boot
  • spring-jdbc
counterchord89 댓글 1 좋아요 1 조회수 857

인기 태그

인프런 TOP Writers

주간 인기글