inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

등록한 필터와 인터셉터가 싱글톤으로 관리되는 이유

해결됨

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. pdf를 보면 이렇게 써있습니다. 필터 인터페이스를 구현하고 등록하면 서블릿 컨테이너가 필터를 싱글톤 객체로 생성하고, 관리한다. LogInterceptor 도 싱글톤 처럼 사용되기 때문에 맴버변수를 사용하면 위험하다. Q1. 필터의 경우 싱글톤 객체로 생성되고 관리되는 이유가 WebConfig 클래스에 @Configuration 애노테이션을 적용했기 때문이 맞는지 궁금합니다. 즉, WebConfig 클래스에서 @Bean이 붙은 메소드가 반환하는 객체(해당 필터)가 빈으로 등록되는데, @Configuration 애노테이션으로 인해 싱글톤 객체로 관리되기 때문인가요? Q2. 인터셉터의 경우는 어떤 이유로 인해 싱글톤처럼 사용되는 것인가요?

  • MVC
  • spring
치즈볼 댓글 1 좋아요 0 조회수 550

스프링MVC의 객체지향 개념이 궁금합니다

미해결

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

안녕하세요 frontcontroller를 배우고 한번 만들어 봤는데 제가 만든 adapter에는 원래는 똑같이 만들어볼라 했는데 어쩌다 보니 adapter에 viewresolver를 달아서 myView객체를 반환하는 adapter를 만들었습니다. 여기서 의문이 생겼는데 adapter에 viewresolver를 다는 것이나 frontcontroller에 viewresolver를 다는 것이나 myView를 통한 기능은 동일했는데 제가 만든 컨트롤러 버전에서는 adapter가 좀 더 많은 기능을 담당하게 되었습니다. 객체 지향 설계를 할 때 객체마다 각자의 역할을 부여해서 조립식으로 만든다 했는데 어느 정도까지 역할을 분해하는 것이 좋은 것인가요? 혼자 생각해 보려고 했는데 피드백을 좀 받고 싶어서 질문드렸습니다. 감사합니다!

  • MVC
  • spring
백승준 댓글 1 좋아요 1 조회수 370

test 하위에 있는 application.properties를 읽어오지 않는 것 같습니다.

미해결

스프링 DB 2편 - 데이터 접근 활용 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요! Window, Eclipse 사용하고 있습니다. testcase용 db 만들어서 testcase.mv .db 파일 생성된 것도 확인하고 jdbc:h2:tcp:// localhost/~/testcase 로 접속도 잘 됩니다. test하위에 있는 application.properties도 강의에 말씀하신대로 바꾸어놓았습니다. 그런데 자꾸 findItems() 테스트가 이전 강의에서 나왔던 에러가 발생합니다. testcase h2 db들어가서 select 해보면 아무것도 안나오구요,, 콘솔 창은 아래와 같습니다. 2022-10-07 10:04:43.159 INFO 16288 --- [ main] h.itemservice.domain.ItemRepositoryTest : The following 1 profile is active: "local" 2022-10-07 10:04:45.130 INFO 16288 --- [ main] o.s.b.a.w.s.WelcomePageHandlerMapping : Adding welcome page: class path resource [static/index.html] 2022-10-07 10:04:45.787 INFO 16288 --- [ main] h.itemservice.domain.ItemRepositoryTest : Started ItemRepositoryTest in 2.961 seconds (JVM running for 4.344) 2022-10-07 10:04:45.791 INFO 16288 --- [ main] hello.itemservice.TestDataInit : test data init 2022-10-07 10:04:45.793 DEBUG 16288 --- [ main] o.s.jdbc.core.simple.SimpleJdbcInsert : JdbcInsert not compiled before execution - invoking compile 2022-10-07 10:04:45.803 DEBUG 16288 --- [ main] o.s.jdbc.datasource.DataSourceUtils : Fetching JDBC Connection from DataSource 2022-10-07 10:04:45.803 INFO 16288 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting... 2022-10-07 10:04:45.945 INFO 16288 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed. local로 가길래 테스트 클래스에서 다음과 같은 애노테이션도 추가해서 해보았는데도 위 콘솔창과 동일하게 나타납니다. @TestPropertySource(locations = "/application.properties") @SpringBootTest //@SpringBootTest(properties = "classpath:application.properties") class ItemRepositoryTest {... } 혹시 몰라서 test/resources/application.properties도 삭제했다가 다시 만들어보고 이클립스도 껏다 다시 해보는데도 실패합니다.. ++ 집에 있는 맥북이랑 회사에서 사용하는 노트북이랑 깃으로 연동해서 사용하는데, 집에 와서 맥북으로 테스트해보니 잘 됩니다. 소스는 분명히 동일할탠데 맥북에서 잘 되는 것을 보니 h2 생성에 문제가 있는 것 같습니다(아마도). 화요일에 다시 회사 노트북(윈도우)로 시도해보고자 하는데 그 전에 혹시 제가 실수한 부분이나 참고할만한 부분을 답변으로 달아주신다면 참고하겠습니다,,!

  • spring
ggggg 댓글 2 좋아요 0 조회수 615

<html xmlns:th="http://www.thymeleaf.org">

미해결

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

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] <html xmlns:th=" http://www.thymeleaf.org "> 을 인식하지 못한다고 나옵니다! 어떤식으로 해결해야 할까요?

  • java
  • MVC
  • spring
  • spring-boot
배내배대 댓글 2 좋아요 0 조회수 2151

.getClass() -> 프록시 객체

미해결

스프링 DB 1편 - 데이터 접근 핵심 원리

16:06 질문입니다. void AopCheck() { log.info("memberService class={}", memberService.getClass()); 이 부분은 프록시가 나오는걸 이해했는데 빈으로등록한 이부분 @Bean MemberServiceV3_3 memberServiceV3_3(){ return new MemberServiceV3_3(memberRepositoryV3()); } 이것은 왜 프록시가 아닌 본 객체가 출력되나요 ?

  • spring
H K 댓글 2 좋아요 1 조회수 474

빈 생명주기 의존관계주입과 초기화 시점 질문

미해결

스프링 핵심 원리 - 기본편

안녕하세요:) 강의 잘 듣고있습니다. 수강 중 궁금한 점이 생겨 질문드립니다! NetworkClient 클래스와 BeanLifeCycleTest 클래스에서 의존관계 주입과 초기화에 관한 질문입니다. 제가 생각하는 게 맞나 의문이 들어 제 생각을 적어봤습니다. <BeanLifeCycleTest 클래스, lifeCycleTest() 테스트> ConfigurableApplicationContext ac = new AnnotationConfigApplicationContext(LifeCycleConfig.class) 1. 테스트 코드에서 ac라는 스프링 컨테이너를 생성한다. 스프링컨테이너를 생성할 때 구성정보로 LifeCycleConfig.class를 지정해줬다. @Configuration static class LifeCycleConfig { @Bean public NetworkClient networkClient() { NetworkClient networkClient = new NetworkClient(); networkClient.setUrl(" http://hello-spring.dev "); return networkClient; } } 2. LifeCycleConfig.class에 있는 @Bean이 붙은 메서드들을 스프링 컨테이너에 빈으로 저장한다. networkClient라는 이름을 가진 빈이 생성된다. 2-1. networkClient라는 빈에서 NetworkClient 타입의 객체networkClient 가 생성된다. 2-2. 객체가 생성됨과 동시에 NetworkClient() 생성자를 호출해 맨 처음 "생성자 호출, url = null이" 출력된다. 2-3 NetworkClient 타입인 networkClient에 setUrl("http://hello-spring.dev") 을 통해 url에 값을 저장한다. 3. https://www.inflearn.com/questions/653260 위 글을 살펴보면 답변에서 의존관계 주입이 setUrl() 다음에 이뤄진다고 하셨는데,,, setUrl() 호출 다음이면 위의 제 생각 중 2-3번 다음인가요,,,? 의존관계 주입 방법에 생성자를 통한 주입이 있으므로 생성자 호출 시 의존관계 주입이 이뤄지는 건가요,,,? 아님 스프링 컨테이너에 빈이 생성되면서 의존관계 주입이 일어난다. 크게 생각하면 되는건가요,,? 어디서 일어나는 건지 질문드립니다. 4. "스프링 빈은 객체를 생성하고, 의존관계 주입이 다 끝난 다음에야 필요한 데이터를 사용할 수 있는 준비가 완료된다. 따라서 초기화 작업은 의존관계 주입이 모두 완료되고 난 다음에 호출해야 한다." 의존관계 주입이 완료되면 초기화 작업이 이루어진다고 수업 자료에 나와있는데요, 초기화란 객체를 선언하고 값을 최초로 할당하는 것이라고 알고있습니다. 그럼 위의 코드에서는 객체 생성, 즉 생성자 호출 후 setUrl()로 값을 주입하는 게 초기화 작업이 맞을까요..? 만약 맞다면 결론적으로 NetworkClient networkClient = new NetworkClient(); -> 의존관계 주입 networkClient.setUrl(" http://hello-spring.dev "); -> 초기화 작업 이게 맞는건가요,,? 이렇게 되면 3번에 언급되었던 게시글 답변 중, 스프링 컨테이너 실행 -> 스프링 빈으로 등록 -> setUrl() 호출 -> 의존관계 주입 -> 초기화 이 순서에 의문이 생기게 되는데 어떤 순서가 정확한지 질문드립니다!!

  • spring
  • oop
박소원 댓글 1 좋아요 1 조회수 442

Dto의 위치

미해결

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

엔티티를 조회해서 dto로 변환할 시에 강사님은 controller에 내부 클래스 방식을 이용하셨습니다. 그 이유가 어차피 dto가 화면에 의존적이기 때문에 controller에 내부클래스 방식으로 하신건지 아니면 원래는 따로 dto페키지를 만들어서 사용하는 게 맞으나 수업을 위해서 그러신건지 궁금합니다. 결론적으로는 dto의 위치를 어떻게 가져가는 것이 맞는 지 궁금합니다. controller의 내부 클래스 dto페키지생성 repository 그 외 4가지 중 어디에 두어야 할 지 궁금합니다.

  • JPA
  • spring-boot
  • java
  • spring
dduckmane 댓글 1 좋아요 0 조회수 794

순수한 DI 컨테이너 AppConfig에 @Configuration

미해결

스프링 핵심 원리 - 기본편

안녕하세요. 강의 후반부 스프링 없는 순수한 DI 컨테이너로 메서도 호출을 한다면, 계속해서 객체를 새로 생성하는 예시를 보여주는 부분이 있습니다. 여기서 궁금한 것은 AppConfig에 @Configuration 과 해당 클래스 메서드들에 @Bean 설정이 되어있는데, 이것들은 순수한 DI 컨테이너에서 의미없는 어노테이션들이 맞을까요? 원래는 빼야하는데 그냥 안빼시고 설명하신 것 인지 궁금합니다.

  • spring
  • oop
IL 댓글 1 좋아요 1 조회수 334

@Data의 역할

미해결

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

왜 Dto에 @Data가 빠지면 이런 오류가 나는 지 궁금합니다. 강의에서는 getter가 없어서 오류가 났다고 배웠습니다. property가 없다고 오류가 난다고 배웠는데 왜 getter가 있어야 하는 지 궁금합니다.

  • java
  • spring-boot
  • JPA
  • spring
dduckmane 댓글 1 좋아요 1 조회수 521

테스트 코드 작성의 예

미해결

스프링 DB 2편 - 데이터 접근 활용 기술

안녕하세요 강사님! 혹시 테스트 코드는 제가 구현하는 모든 기능들을 바탕으로 만들어야 하는 걸까요? 아니면 뭔가를 검증하는 로그인, 회원가입 등에만 만들면 되는 걸까요? 강의를 듣다보니 테스트도 관심이 생기는데 정확히 어떤 액션일 때만 만들어야 좋을지 모르겠어서 이렇게 문의 남깁니다. 감사합니다!

  • spring
김도연 댓글 1 좋아요 1 조회수 338

OrderItem 생성메서드

미해결

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

Order 생성 메서드의 매개변수 값으로 Member, Delivery,OrderItem list가 들어갔습니다. OrderItem 생성메서드에는 매개변수로 Item, orderPrice,count가 들어갔는데 OrderItem 클래스에 Order도 변수로 가지므로 생성메서드 매개변수로 Order도 들어가야 하는것이 아닌가요?? 감사합니다.

  • java
  • spring
  • 웹앱
  • JPA
  • spring-boot
댓글 2 좋아요 2 조회수 713

프록시와 스프링 빈에 대한 질문입니다.

해결됨

스프링 DB 2편 - 데이터 접근 활용 기술

강의 회차 : 트랜잭션 적용 확인 안녕하세요 강의를 보다가 궁금한게 생겨서 질문 드립니다. 일단 이번 강의에서 클래스 안에 @Transactional이 하나라도 있으면 트랜잭션 AOP가 프록시를 만들어서 basicService$$CGLIB를 스프링 컨테이너에 등록된다고 하였는데, 스프링 핵심 원리 강의에서도 스프링 빈에 객체를 등록하면 "빈 이름$$CGLIB"가 등록되었는데, 스프링 핵심 원리에서 보았던 스프링 컨테이너에 등록된 빈 하고 이번 강의에서 나온 프록시가 스프링 빈에 등록되는 것하고 같은 개념인지 궁금합니다.

  • spring
jwooo 댓글 1 좋아요 0 조회수 433

로그인 시 GetMapping에 @ModelAttribute를 넣어주는이유

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

안녕하세요 로그인 기능 작성할 때 GetMapping에서도 ModelAttribute를 넣어주는 이유가 혹시 thymeleaf작성시 th:object=${loginForm}을 넣어주기 위해서 작성하는건가요..?? 이 부분이 궁금하여 질문드립니다. 감사합니다.

  • modelattribute
  • 로그인
  • MVC
  • spring
DevFit 댓글 2 좋아요 0 조회수 783

회원서비스테스트 12분 58초 질문

해결됨

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

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 제가 자바코드에 대한 이해가 깊지 않은 상태에서 수강 중입니다. 제 논리에 이해되지 않는 부분이 있어서 질문드립니다. 강의 중 코드 16줄에서 memberService 를 새로 만들었습니다. 그럼 memberService 안에 그 만의 memberRepository 가 생긴다고 생각했습니다. 그런데, clear를 위해 17줄에서 새로운 memberRepository를 만들고 있습니다. 이 memberRepository는 memberService 안의 memberRepository 와 다른 것이지 않나요?? 이 memberRepository를 clear하는 게 memberService 의 memberRepository 를 clear하는 행위가 아니라고 생각합니다. 제 부족함을 채워주시면 감사하겠습니다. 혹시 memberService 가 static이라 모두 같은 객체를 공유하는 건가요??

  • MVC
  • java
  • spring
  • spring-boot
13selfesteem91 댓글 1 좋아요 3 조회수 218

실제로 실무에서도 컨트롤러에서 레포지토리를 호출하기도 하나요?

미해결

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

보통 저렇게 계층형으로 나누면 컨트롤러는 서비스만 호출하고 서비스에서 레포지토리를 호출하는 식으로 하는 줄 알았는데 실무에서도 컨트롤러에서 바로 간단한 레포지토리를 호출하는 경우가 자주 있나요?

  • JPA
  • spring
  • spring-boot
  • java
  • 웹앱
비가싫어요 댓글 1 좋아요 0 조회수 474

생성자와 setter

미해결

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

강사님 말씀대로 수정할 부분만 get/set기능이 잇는 dto를 만들어서 이용해봤습니다. 강사님이 계속 controller같은 곳에서는 setter의 이용을 제한하시라고 설명을 하셔서 저는 생성자를 만들어서 처리를 하였습니다. 근데 이부분에서 차라리 정정펙토리메서드를 이용해야하나 궁금증이 들었습니다. 제가 정적펙토리메서드를 질문란에서 공부한 결과로는 상속관계가 아니면 정적펙토리메서드를 사용하는 것이 장점이 많은 것으로 공부를 하였는데요 제가 한 코드처럼 이곳에 정적펙토리메서드를 적용하는 것이 괜찮은 방법인지 궁금합니다. 만약에 이 방법이 괜찮다면 앞으로 항상 수정코드시에 updateDto를 만들때는 정적펙토리메서드를 이용하여 수정해도 되나요??

  • JPA
  • spring-boot
  • 웹앱
  • spring
  • java
dduckmane 댓글 1 좋아요 1 조회수 304

상속관계의 관리

미해결

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

강의에서는 수업을 위해 다운캐스팅을 사용하셨다고 하셨습니다. 그러면 상속관계에서는 book,Album,Movie관련 서비스를 만들고 BookForm, AlbumForm, MovieForm을 만들고 @Mapping도 book, album, movie에 대해서 다 만들고 대신에 repository만 itemrepository로 하나로 해서 관리하는 방식을 사용해야한다고 생각합니다. 제가 생각한 것이 괜찮은 방법이 맞는 지 궁금하고 아니라면 어떻게 해야하는 지 궁금합니다.

  • 웹앱
  • JPA
  • spring-boot
  • java
  • spring
dduckmane 댓글 1 좋아요 0 조회수 296

14분대 정도에서의 설명과 관련하여 질문이 있습니다!

미해결

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

영한님께서 컬렉션을 처음에 만들어두고 바꾸지 말라고 하신 뜻이 컬렉션의 종류를 바꾸지 말라고 하신건가요..? 아니면 컬렉션의 값을 처음에 생성할 때 한 번 만들어두고 그 다음에 건드리지 말라고 하신건가요?

  • spring
  • spring-boot
  • java
  • JPA
  • 웹앱
비가싫어요 댓글 1 좋아요 1 조회수 324

터미널 다시 시작

미해결

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

터미널을 껐다가 다시 켜서 4분 49초처럼 ll하고 치면 localhost :8082가 종료되면서 끊기는데 터미널을 끄고 다시 실행해서 명령어를 치는 게 아닌가요?

  • spring-boot
  • MVC
  • java
  • spring
celinaym0810 댓글 1 좋아요 1 조회수 400

트랜잭션 템플릿 사용 로직

미해결

스프링 DB 1편 - 데이터 접근 핵심 원리

txTemplate.executeWithoutResult((status) -> { try { //비즈니스 로직 bizLogic(fromId, toId, money); } catch (SQLException e) { throw new IllegalStateException(e); } }); 위의 로직에서 파라미터로 status를 받는데 이 status는 어디에서 받아오는건가요? 이전 MemberServiceV3_1 에서는 //트랜잭션 시작 TransactionStatus status = transactionManager.getTransaction(new DefaultTransactionDefinition()); 이렇게 status를 받아와서 커밋과 롤백에 status를 사용했는데 MemberServiceV3_2 에서는 여러번 반복해 돌려보아도 저 status 에 대한 설명이 없어서 답변 부탁드립니다.

  • spring
IGOR 댓글 2 좋아요 4 조회수 852

인기 태그

인프런 TOP Writers

주간 인기글