inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

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

해결됨

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

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

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

안녕하세요 토비선생님 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 조회수 2499

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

해결됨

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

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

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

@MyAutoConfiguration 애노테이션 역할

미해결

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

안녕하세요. 토비님. 강의를 들으면서 DispatcherServletConfig 와 TomcatWebServerConfig 정보는 ...import 파일에서 정보를 가져와서 빈으로 등록하는 것으로 이해하였습니다. 그러면 의아했던 점이 ..Config 클래스에 선언한 @MyAutoConfiguration 애노테이션의 역할을 import 파일이 대신 해주고 있는 것으로 이해하였는데, 이 애노테이션도 같이 선언되어있어서 이 애노테이션은 어떤 역할을 하는지 궁금합니다. 실제로 @MyAutoConfiguration 이 애노테이션을 삭제하고 스프링을 실행해도 정상적으로 동작을 하고 테스트도 통과하였습니다. (강의 내에서 토비님께서 관례상으로 붙인다고 말씀하셨던 것으로 기억을 하는데, 이가 @MyAutoConfiguration 애노테이션을 관례상 붙여준다는 의미였는지는 정확히 잘 모르겠어서 질문드렸습니다.) 좋은 강의 만들어주셔서 잘 듣고 있습니다! 감사합니다!!

  • spring
  • spring-boot
  • spring-jdbc
박성범 댓글 1 좋아요 2 조회수 512

안녕 하세요~~

해결됨

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

강의 내용과 관련 없는 내용이기는 한데... 너무 궁금한게 있어서요~~ 토비님은 스프링으로 실무를 하실 때 테스트를 어떻게 하시나요? 컨트롤러, 서비스, 도메인 그외 등등 있을 때 각자 다 테스트를 하시는지... 고전파로 하시는지 런던파로 하시는지... 좀 궁금합니다~~ 감사합니다

  • spring
  • spring-boot
  • spring-jdbc
  • test
하하호호 댓글 1 좋아요 1 조회수 570

안녕 하세요

해결됨

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

우리가 스프링 부트를 사용할 떄 dispatcher랑 factory를 등록하는 것 없이 사용 가능한데 spring boot starter web 라이브러리를 추가 하면 자동으로 등록되는 거죠??

  • spring
  • spring-boot
  • spring-jdbc
하하호호 댓글 1 좋아요 0 조회수 392

THIS!

해결됨

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

안녕하세요, 자바 기본 적인 질문 한가지만 드릴게요...! public class HellobootApplication { public static void main(String[] args) { GenericWebApplicationContext applicationContext = new GenericWebApplicationContext() { @Override protected void onRefresh() { super.onRefresh(); ServletWebServerFactory serverFactory = new TomcatServletWebServerFactory(); WebServer webServer = serverFactory.getWebServer(servletContext -> { servletContext.addServlet("dispatcherServlet", new DispatcherServlet(this)) .addMapping("/*"); }); webServer.start(); } }; applicationContext.registerBean(HelloController.class); applicationContext.registerBean(SimpleHelloService.class); applicationContext.refresh(); } } 여기서 this는 HellobootApplication class가 아닌, applicationContext 를 지칭 하는게 맞을까요..? 매번 this가 조금씩 헷갈리네요 ,,,, 이상한 질문 죄송합니다....!

  • spring
  • spring-boot
  • spring-jdbc
송재학 댓글 1 좋아요 1 조회수 516

스프링 책 질문 드립니다

해결됨

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

선생님 강의 잘 보고 있습니다. 스프링부트 강의이다 보니 스프링 공부를 더 해보고 싶은데 지금 나와있는 스프링3.1을 사는게 좋을까요 기다렸다가 스프링6강의를 보거나 책을 사는게 좋을까요?

  • spring
  • spring-boot
  • spring-jdbc
yong 댓글 1 좋아요 1 조회수 861

학습 테스트 작성 시 정적 클래스 관련질문

미해결

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

안녕하세요. 강의 잘 보고 있는 수강생 입니다. @Configuration과 proxyBeanMethods 강의를 듣고 실습하던 도중 질문이 있습니다. Bean1, Bean2, Common, MyConfig 클래스들을 Static클래스로 만들어야 정상적인 테스트가 가능한것을 확인했는데요. 해당 클래스들을 정적 클래스가 아닌 내부 클래스로 작성하니 적절한 빈타입을 찾을 수 없다라는 에러메시지가 표출되었습니다. 이상해서 해당 클래스들을 별도의 java파일로 작성하니 문제없이 정상동작하는것을 확인하였는데요. 왜 내부클래스 작성 시 정적 클래스로 만들어야 동작하는지 이유를 잘 모르겠습니다. 감사합니다.

  • spring
  • spring-boot
  • spring-jdbc
이준희 댓글 2 좋아요 0 조회수 806

메소드 빈주입

해결됨

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

안녕하세요 토비님 강의 잘듣고있습니다! 다름이 아니라 강의 내용중 메서드 파라미터에 빈을 주입 받아 사용하는 것에 궁금증이 생겨 질문드립니다. 일반 적으로 빈을 주입받아 사용할 때 @Autowired나 생성자 등으로 초기화를 해주었는데, 위의 코드의 매개변수는 그런 과정이 없이 바로 빈을 주입받는 것인가요 ?

  • spring-jdbc
  • spring
  • spring-boot
endeavor 댓글 1 좋아요 0 조회수 918

질문드립니다.

해결됨

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

안녕하세여 초보적인 질문드려서 죄송합니다.. Configuration ProxyBeanMethods 값을 false 를 주면 호출 할때마다 새로운 객체를 생성하게 되는데.. 다시 말해 싱글톤임을 보장 받을수 없게 되는걸로 이해하였습니다. 아마 false주는 경우는 없을듯합니다만 혹시 사례가 있을까요? '굳이' 라는 말을 강의에서 계속 하셔서 사례라고 하면 생각해봤을때 싱글톤의 단점인것을 보안하기 위해 사용되는건지? 아니면 성능적인것 때문에 그런지 궁금합니다. 마지막 내용에 spring 에 실제 사용된 내용으로 봤을떈, 단순한 Configuration 일땐 false를 주면 될듯한데. 디테일한 사례가 궁금합니다. 감사합니다.

  • spring
  • spring-boot
  • spring-jdbc
오개발 댓글 1 좋아요 0 조회수 536

자동 구성 정보 분리가 안됩니다.

미해결

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

안녕하세요 자동 구성 정보 분리쪽 강의를 따라 구현하던 도중 문제가 발생하여 질문을 남깁니다. return new String[]{ "tobyspring.config.autoconfig.TomcatWebServerConfig", "tobyspring.config.autoconfig.DispatcherServletConfig" }; 직접 경로를 작성해주는 경우에는 문제 없이 동작합니다. Iterable<String> candidates = ImportCandidates.load(MyAutoConfiguration.class, classLoader); return StreamSupport.stream(candidates.spliterator(), false).toArray(String[]::new); 클래스 로더를 이용해서 외부에서 파일 경로를 불러오는 방법을 사용하면 아래와 같은 문제가 발생합니다. 오후 11:26:47: Executing ':HellobootApplication.main()'... > Task :compileJava > Task :processResources UP-TO-DATE > Task :classes > Task :HellobootApplication.main() FAILED . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.7.8) 2023-02-27 23:26:49.370 INFO 3532 --- [ main] t.helloboot.HellobootApplication : Starting HellobootApplication using Java 17.0.6 on yj_notebook with PID 3532 (C:\git\TID\helloboot\build\classes\java\main started by deter in C:\git\TID\helloboot) 2023-02-27 23:26:49.374 INFO 3532 --- [ main] t.helloboot.HellobootApplication : No active profile set, falling back to 1 default profile: "default" 2023-02-27 23:26:49.641 WARN 3532 --- [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is org.springframework.boot.web.context.MissingWebServerFactoryBeanException: No qualifying bean of type 'org.springframework.boot.web.servlet.server.ServletWebServerFactory' available: Unable to start AnnotationConfigServletWebServerApplicationContext due to missing ServletWebServerFactory bean 2023-02-27 23:26:49.667 ERROR 3532 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPLICATION FAILED TO START *************************** Description: Web application could not be started as there was no org.springframework.boot.web.servlet.server.ServletWebServerFactory bean defined in the context. Action: Check your application's dependencies for a supported servlet web server. Check the configured web application type. Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0. You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins. See https://docs.gradle.org/7.6/userguide/command_line_interface.html#sec:command_line_warnings 3 actionable tasks: 2 executed, 1 up-to-date FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':HellobootApplication.main()'. > Process 'command 'C:/Users/deter/.jdks/azul-17.0.6/bin/java.exe'' finished with non-zero exit value 1 * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. * Get more help at https://help.gradle.org BUILD FAILED in 2s 오후 11:26:49: Execution finished ':HellobootApplication.main()'. 제가 생각하기로는 클래스 로더를 통해서 구성 정보를 불러와야 하는데 못 불러오고 있는 것 같습니다. package tobyspring.config.autoconfig; import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory; import org.springframework.boot.web.servlet.server.ServletWebServerFactory; import org.springframework.context.annotation.Bean; import tobyspring.config.MyAutoConfiguration; @MyAutoConfiguration public class TomcatWebServerConfig { @Bean public ServletWebServerFactory servletWebServerFactory() { return new TomcatServletWebServerFactory(); } } 이 문제를 해결하기 위해서 java 버전 11, 17 gradle 버전 7.6, 8.0 Build and run 을 Geadle, IntelliJ 파일 경로 수정 등 로 변경하는 방법들을 시도해봤지만 해결하지 못했습니다. 현재 제 개발 환경은 아래와 같습니다. IntelliJ버전은 2022.2.3 Community버전 spring boot 2.7.8 gradle 7.6 어디서 문제가 발생하는지 감을 잡을 수 없어서 문의드립니다.

  • spring-boot
  • spring
  • spring-jdbc
  • spring-jdbc
sdyj178 댓글 1 좋아요 0 조회수 3412

spring: command not fount 왜 뜨는걸까요 ?

미해결

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

spring boot 가 설치되었다고 나오는데 spring 명령어를 치면 command not found 라고 뜨네요.. 혹시 해결방법이 없을까요 ?

  • spring
  • spring-jdbc
  • spring-boot
  • spring-jdbc
kjjmmm123 댓글 1 좋아요 0 조회수 827

테스트에서의 @Transactional 사용에 대해 질문이 있습니다.

해결됨

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

안녕하세요 토비 선생님! 강의 너무 재밌게 잘 듣고 있습니다. 이제 몇개 남지 않아서 많이 아쉽네요. 다름이 아니라 테스트 코드 작성시 `@Transactional` 어노테이션의 사용에 대해 질문이 있습니다. 저는 롤백테스트 작성을 위해 @Transactional 을 애용해왔는데요,, 얼마전 업무를 보다가 이상하게 테스트 코드는 잘만 통과를 하는데 같은 코드가 서버에 띄웠을때는 의도대로 동작을 안하더라고요. 한참을 씨름하다 알고보니 엔티티를 변경하고 JPA 변경감지로 변경하도록 의도한 코드인데 트랜잭션 경계 밖에서 변경을 하고 있었더라고요. 이후로는 찾아보니 테스트 코드에서 @Transactional을 사용하지 말라는 이야기가 많아 안쓰려고 노력을 해보는데 테스트 후 전부 롤백시키는게 만만치가 않더라고요. @AfterEach로 리포지터리를 다 불러와서 하나씩 돌려놓는것도 일이고.. 개인적으로는 @Transactional 대신에 단순히 전체 테스트에 대해 DB 롤백을 해주는 어노테이션이 별개로 있었으면 더 좋지 않았을까 하는 아쉬움도 있더라고요. 스프링에서 굳이 서로 다른 용도의 기능을 하나의 어노테이션으로 공유하는 이유가 있을까요? 트랜잭션 경계라는 점에서는 공통점이 있다지만 각각의 기능으로 분리되었어도 되지 않았을까요? AfterEach 넣어서 리포지터리 하나하나 불러와 일일히 초기화 해 주는 대신 @Transactional 만큼 코드가 깔끔해지면서 테스트코드에 @Transactional을 쓰면 생기게 되는 문제를 해결하는 방법이 있을까요? 혹은 사실 알고보면 테스트에 @Transactional을 쓰는게 좋은건데 제가 잘못 오해하고 있었을까요? 요즘 테스트 코드를 작성할때마다 고민이 많았는데 제가 한동안 검색한 결과로는 쉽게 결론을 내기가 힘들었습니다. 더 나은 코드작성에 꼭 도움이 필요해서 실례를 무릅쓰고 질문글을 올려봅니다. 감사합니다.

  • spring-boot
  • spring-jdbc
  • spring
shanePark 댓글 3 좋아요 32 조회수 7659

ApplicationContextRunner

해결됨

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

ApplicationContextRunner를 사용하는 부분에서 assertThat(context).hasSingleBean이랑 asserThat(context).doesNotHaveBean 사용이 안되네요 hasSingleBean이랑 doesNotHaveBean이 없어요 버전 문제일까요 지금까지 다 잘 따라왔는데 뭔가 문제인지 모르겠네요

  • spring
  • spring-boot
  • spring-jdbc
  • spring-jdbc
돈우 댓글 2 좋아요 0 조회수 710

BeanClassLoaderAware 인터페이스가 궁금하여 질문드립니다.

해결됨

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

BeanClassLoaderAware 를 통해 ClassLoader 를 주입을 받는다고 가정할 때 public class MyAutoConfigImportSelector implements DeferredImportSelector, BeanClassLoaderAware { private ClassLoader classLoader; @Override public String[] selectImports(AnnotationMetadata importingClassMetadata) { List<String> autoConfigs = new ArrayList<>(); ImportCandidates.load(MyAutoConfiguration.class, classLoader) .forEach(autoConfigs::add); return autoConfigs.toArray(new String[0]); } @Override public void setBeanClassLoader(ClassLoader classLoader) { this.classLoader = classLoader; } } MyAutoConfigImportSelector 는 스프링에서 사용하는 공유되는 클래스로더에 의해서 로딩되는 것으로 확인하였습니다. (this.getClass().getClassLoader() 로 해도 같은동작) 그렇다면 BeanClassLoaderAware 인터페이스를 스프링에서 제공하는 이유는 무엇일까 궁금하여 질문드립니다. 또한 BeanClassLoaderAware javadoc 에서 framework classes 가 구현하도록 의도되었다고하는데 framework classes 의 의미는 무엇일까요?

  • spring
  • spring-boot
  • spring-boot
  • spring-jdbc
  • spring-jdbc
이석준 댓글 1 좋아요 0 조회수 807

프로젝트 설정

해결됨

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

2:50 부터 헤매고있는데요.. intellij Community 버전을 다운받았고 새로운 프로젝트 설정할때 왼쪽 목록에 Spring Initializr이 보이지않아서 확인해보니 Community 버전인 경우 없다고하더라구요. Community버전이라, 2:50~ 설정하는부분을 진행할 수 없다면 따로 설정해야하는부분이 있을까요?

  • spring
  • spring-boot
  • spring-jdbc
  • spring-jdbc
vo3ov1204 댓글 1 좋아요 0 조회수 501

@PostConstruct로 테이블을 생성하지 못합니다.

미해결

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

오류 내용을 보니 hello 테이블을 찾을 수 없다고 뜹니다. 그래서, @PostContruct가 안 동작하나? 생각해서 프린트로 찍어보게 메인메서드를 돌리면 잘 찍힙니다. 그리고 기존 방식처럼 jdbctemplate을 주입해서 @BeforeEach로 생성하는 방식으로는 잘 동작하네요. 너무 궁금해서 git 주소를 남겨봅니다 ㅠ https://github.com/rnwnsgud/helloboot

  • spring-jdbc
  • spring-jdbc
  • spring
  • spring-boot
구코딩 댓글 2 좋아요 6 조회수 936

인기 태그

인프런 TOP Writers

주간 인기글