inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

서블릿 흐름 질문입니다.

해결됨

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

전반적으로 제가 이해한 내용이 맞는지 궁금해서 질문드립니다. 서블릿이라는 것이 검은색 박스안에 있는 것을 다 해주니까 우리는 초록색 박스의 비즈니스 로직에 집중해서 개발을 하고 개발된 것을 war로 빌드해서 was(톰캣)에 배포를 하고 톰캣을 구동을 합니다. 그 후 클라이언트가 서버로 요청을 보내면 was 안의 서블릿 컨테이너가 request, responce 객체를 만들어서 서블릿에 넘겨주고 이 객체들을 가지고 서블릿이 비즈니스 로직을 타서 클라이언트가 요청한 리소스를 반환해준다. 제가 이해한 흐름이 맞을까요?

  • mvc
  • spring
  • MVC
기쁜 앵무새 댓글 1 좋아요 0 조회수 533

http://localhost:8080/basic/hello-form.html 로 hello-form.html 정적 콘텐츠 접근 시 404 에러

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 서블릿 부분에서 webapp-basic 폴더를 만들고 basic 내에 hello-form.html을 복붙하고 해당 링크로 접근하려고 하면 404 에러가 뜹니다.. 패키지도 Application이 최상위 경로인데 왜 이러는지 모르겠습니다.. webapp 내 indexl.html을 비롯한 정적 html에 접근하는 것 외에는 다른 접근은 다 잘 됩니다. 보시다시피 강의와 다르게 webapp에 파란 점도 없는데 이게 문제인 건가요?

  • MVC
  • mvc
  • spring
나무 댓글 2 좋아요 0 조회수 1304

@Configutation 질문

해결됨

스프링 핵심 원리 - 기본편

ApplicationContext로 class를 등록하고 등록된 빈들을 조회해보니 싱글톤이 보장되는 것을 확인했습니다. 근데 @Configuration을 사용하지 않고 @Bean만 사용하면 주입받는 객체들이 싱글톤을 유지하지 않게되는데 @Configuration이 주입관계있는 빈들까지 싱글톤을 보장해주는 것 맞나요..?

  • oop
  • 객체지향
  • spring
댓글 1 좋아요 0 조회수 506

10분 18초에 getTotalPrice() 함수에서 질문이 있습니다.

해결됨

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] getTotalPrice() 메서드가 OrderItem 클래스 안에 있으니까 orderPrice 변수와 count변수를 직접 건들수 있는데 왜 orderPrice*count가 아닌 getOrderPrice()* getCount()를 쓰는지 궁금합니다..

  • java
  • spring-boot
  • 웹앱
  • spring
  • 웹앱
  • jpa
  • JPA
최재영 댓글 1 좋아요 1 조회수 421

controller 3단분리에 대해 질문이 있습니다.

해결됨

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

강의를 보면 controller에서 작업을 마무리하고, 이후에 코드를 정리하면서 controller, service, repository로 3단 분리를 하시는데, 실제로 처음부터 3단 분리를 하면서 코드를 짜려니까 머리 속에 로직이 잘 정리가 안되더라고요. 처음부터 역할에 맞게 분리를 하며 코딩을 하시는지, 아니면 처음에는 머리 속의 로직을 그대로 쭉 코딩하신 후에 나중에 정리를 하시는 편이신지 궁금합니다.

  • aws
  • spring
  • java
  • spring-boot
  • jpa
  • JPA
  • mysql
Dompoo 댓글 1 좋아요 3 조회수 950

@Controller, @RequestMapping 질문드립니다.

미해결

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

안녕하세요. @Controller, @RequestMapping의 로직에 대해 제가 이해한바가 맞는지 질문드립니다. 다른 분들이 올리신 질문도 다 참고해보고 구글링도 해봤는데 궁금증이 풀리지않아 비슷한 내용의 질문을 드려서 죄송합니다.. @Controller, @RequestMapping을 사용해서 애플리케이션을 실행하는 과정에서, 서버가 실행되면, @Controller에 의해 핸들러(컨트롤러)로 등록된다. 요청이 들어오면, 핸들러 매핑이 핸들러를 찾고 핸들러 어댑터가 핸들러를 실행해야 하는데, 먼저 스프링 내부에 등록되어 있는 RequestMappingHandlerMapping이 핸들러를 조회한다. @RequestMapping을 사용했기때문에 애노테이션 기반 컨트롤러를 조회할수 있는 Requestmappinghandlermapping이 핸들러를 조회하는데, 이때 @Controller로 등록된 핸들러중에 @RequestMapping에 담긴 논리url을 통해 클라이언트가 전송한 url과 매핑을해서 해당되는 핸들러를 조회한다. 그리고 이 조회한 핸들러를 처리할수 있는 어댑터인RequestMappingHandlerAdapter가 핸들러를 호출(process()를 호출)한다. 이렇게 이해하면 될까요?

  • mvc
  • spring
  • MVC
오리쉐리 댓글 1 좋아요 2 조회수 711

시퀀스 질문

해결됨

실무 환경 그대로 주문게시판 만들기 웹개발 기초 마스터

시퀀스에서 Cycle을 사용하면 중복키 관리는 안하게 되는건가요?

  • oracle
  • spring
  • 넥사크로
  • 넥사크로
marlone Johnathan 댓글 2 좋아요 0 조회수 405

생성자 주입으로 변경했을 때 Provider 생성할때 오류

미해결

스프링 핵심 원리 - 기본편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 단위 테스트로 할 때 필드 주입이 좋지 않다고 하셔서 생성자 주입으로 변경 후 돌려봤을 때 Provider를 적용하기 전에 ObjectProvider<PrototypeBean> 으로 했을 때는 테스트가 성공했지만 Provider로 할때는 다음과 같은 에러가 나서 왜 발생했는지 질문드립니다 org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'singletonWithPrototype.ClientBean': Unsatisfied dependency expressed through constructor parameter 1: No qualifying bean of type 'javax.inject.Provider<hello.core.scope.SingletonWithPrototype$PrototypeBean>' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {} 아래는 전체 코드 입니다. package hello.core.scope; import jakarta.annotation.PostConstruct; import jakarta.annotation.PreDestroy; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.ObjectProvider; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Scope; import javax.inject.Provider; import static org.assertj.core.api.Assertions.assertThat; public class SingletonWithPrototype { @Test void prototypeFind() { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(PrototypeBean.class); PrototypeBean prototypeBean1 = ac.getBean(PrototypeBean.class); prototypeBean1.addCount(); assertThat(prototypeBean1.getCount()).isEqualTo(1); PrototypeBean prototypeBean2 = ac.getBean(PrototypeBean.class); prototypeBean2.addCount(); assertThat(prototypeBean2.getCount()).isEqualTo(1); } @Test void singletonClientUsePrototype() { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(ClientBean.class, PrototypeBean.class); ClientBean clientBean1 = ac.getBean(ClientBean.class); int count1 = clientBean1.logic(); assertThat(count1).isEqualTo(1); ClientBean clientBean2 = ac.getBean(ClientBean.class); int count2 = clientBean2.logic(); assertThat(count2).isEqualTo(1); } @Scope("singleton") static class ClientBean { private final PrototypeBean prototypeBean; //생성시점에 주입되어서 계속 같은 거 사용. private final Provider<PrototypeBean> prototypeBeanProvider; @Autowired //생성자 하나니까 @Autowired 생략해도 되긴 함 public ClientBean(PrototypeBean prototypeBean, Provider<PrototypeBean> prototypeBeanProvider) { this.prototypeBean = prototypeBean; this.prototypeBeanProvider = prototypeBeanProvider; } public int logic() { PrototypeBean prototypeBean = prototypeBeanProvider.get(); prototypeBean.addCount(); return prototypeBean.getCount(); } } @Scope("prototype") static class PrototypeBean { private int count = 0; public void addCount() { count++; } public int getCount() { return count; } @PostConstruct public void init() { System.out.println("PrototypeBean.init " + this); } @PreDestroy public void destroy() { System.out.println("PrototypeBean.destroy"); } } }

  • spring
  • 객체지향
  • oop
coli 댓글 2 좋아요 1 조회수 1432

mysql 비밀번호 재설정

해결됨

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

https://goodteacher.tistory.com/291 위 블로그를 참고해서 비밀번호를 초기화했는데 mysql -u root -p Enter password: ************ ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 위와 같이 나옵니다. 위 에러 메시지는 비밀번호를 잘못입력했을 때 나오는 걸로 아는데 저 한영 잘못친 것도 없고 numlock도 풀려있어서 제대로 잘 입력했는데 왜 그럴까요ㅠ mysql --version 해보면 mysql ver8.0.27 로 잘 나옵니다

  • spring-boot
  • mysql
  • spring
  • JPA
  • java
  • jpa
  • aws
유은혜 댓글 2 좋아요 1 조회수 16528

싱글톤 질문 드립니다.

해결됨

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

강의 교재의 "스프링은 스프링 컨테이너에 스프링 빈을 등록할 때, 기본으로 싱글톤으로 등록한다(유일하게 하나만 등록해서 공유한다) 따라서 같은 스프링 빈이면 모두 같은 인스턴스다." 이 문장에서 같은 스프링 빈이면 모두 같은 인스턴스라는 말이 하나의 인스턴스로 자원을 공유한다는 의미 같은데 어떤 경우에 싱글톤을 사용해 자원을 공유하는지 궁금합니다.

  • MVC
  • mvc
  • spring-boot
  • spring
  • java
심야 댓글 1 좋아요 1 조회수 527

레포지토리 인터페이스 질문 드립니다.

해결됨

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

강의에서 데이터 베이스를 아직 정하지 못해 인터페이스로 추상화 한다고 설명해 주셨는데 인터페이스 말고 추상 클래스를 사용하면 안되나요? 그리고 만약 데이터 베이스를 정했어도 추상화 할 때 인터페이스를 써야 하는지 궁금합니다.

  • spring
  • mvc
  • MVC
  • spring-boot
  • java
심야 댓글 1 좋아요 0 조회수 589

TEST오류

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요 회원가입에서 오류가 떠요 aused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'springDataJpaMemberRepository' defined in com.example.hello_spring.repository.SpringDataJpaMemberRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Could not create query for public abstract void com.example.hello_spring.repository.MemberRepository.clearStore(); Reason: Failed to create query for method public abstract void com.example.hello_spring.repository.MemberRepository.clearStore(); No property 'clearStore' found for type 'Member' 이런식으로 뭐가 정의되있다는데 뭐죠 ㅠㅠ

  • spring
  • java
  • mvc
  • spring-boot
  • MVC
댓글 1 좋아요 0 조회수 598

public, private 트랜잭션

미해결

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

안녕하세요! 고급편을 듣고 DB2 편을 듣고잇습니다. 여전히 뭔가 이해가 안가서요. 고급원리에도 질문을 하긴했지만 명확하지않았어요. 답변에 DB 2편을 보라고 하셨는데.. ㅠㅠ 이해잘안되네요. 죄송합니다. 궁금한게 뭐냐면, @Tansactional public void externalMethod() { this.internalMethod(); // logic } private void internalMethod() { // logic } 여기서 internalMethod는 당연히 트랜잭션이 안탄다고 생각을 했어요. 이유는 우선 DI로 주입이 CGBLIB 프록시가 주입이 되는 것이고 이제 여기서 어노테이션을 보고 프록시 적용을 한다음. 프록시 externalMethod 를 불러서 트랜잭션이 탔고 internalMethod는 targetMethod 기에 프록시를 안탄다고 생각했거든요? 근데 잘타네요.. 이해가 잘안갑니다.. ㅠㅠㅠ -- [수정] 아 이게.. 프록시 -> 타겟으로 가니까 어떻게보면 당연히 트랜잭션이 먹히는게 맞네요.. 반대가 안먹히는거고.. 맞죠? ㅠ

  • spring
정천우 댓글 1 좋아요 0 조회수 700

hasText 부분 질문있습니다.

해결됨

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

========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 여기에 질문 내용을 남겨주세요. 아래 코드에서 orderStatus 부분은 널로 체크하고 memberName 부분은 hasText로 체크한 이유가 있을까요?? orderSearch.getMemberName() != null 이런식으로 체크하면 안되는지 궁금합니다. if (orderSearch.getOrderStatus() != null) { query = query.setParameter("status", orderSearch.getOrderStatus()); } if (StringUtils.hasText(orderSearch.getMemberName())) { query = query.setParameter("name", orderSearch.ge tMemberName()); }

  • java
  • spring-boot
  • 웹앱
  • 웹앱
  • jpa
  • JPA
  • spring
hw h 댓글 1 좋아요 1 조회수 470

엔티티 클래스 개발2 오류

미해결

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

실행시켰는데 오류가 이렇게 나타납니다 거의 모든 클래스들에서 jakarta가 빨간색으로 표시됩니다 build.gradle과 application.yml도 첨부합니다.

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

ControllerV3의 ModelView 클래스

해결됨

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

modelView 클래스의 model의 경우 MemberFormControllerV3, MemberSaveControllerV3, MemberListControllerV3 객체가 모두 사용해야 하므로 @Getter @Setter public class ModelView { private final String viewName; private static final Map<String, Object> model = new HashMap<>(); public ModelView(String viewName) { this.viewName = viewName; } public static Map<String, Object> getModel() { return model; } } 이와 같이 private static final로 선언한 후 모델 객체를 사용할 때 하기 코드와 같이 ModelView.getModel() 형식으로 불러와도 될까요? public class MemberListControllerV3 implements ControllerV3 { private final MemberRepository memberRepository = MemberRepository.getInstance(); @Override public ModelView process(Map<String, String> requestParamMap) { List<Member> members = memberRepository.findAll(); ModelView modelView = new ModelView("members"); ModelView.getModel().put("members", members); return modelView; } } ModelView의 viewName의 경우 호출하는 객체마다 다르게 들어올 수 있으니 static 없이 final로만 선언하면 될까요? 감사합니다:)

  • spring
  • mvc
  • MVC
fauuuuupie 댓글 1 좋아요 0 조회수 576

실무에서 페이징 처리

해결됨

실전! 스프링 데이터 JPA

안녕하세요! 영한님! 강의는 너무나 잘들었습니다!👍👍 강의를 듣고 나서 본격적으로 JPA를 이용한 개발을 진행하려 하는데, 실무에서 적용 시 궁금한 점이 있어서 질문을 남기게 되었습니다. 강의 내용에서 Page 를 활용해서 DB 데이터의 페이징 처리를 할 수 있다는 점에 대해 알려주셔서 굉장히 유용한 방식이라 생각이 듭니다. 이를 실무에서 실제로 적용하기 앞서 고민이 되는 부분은, 페이징이나 정렬과 관련하여 쿼리문을 이용해 처리 를 하는 것과 전제 데이터를 가져와 비즈니스 로직에서 처리 하는 방식 중 어떤 것이 효율 적인지 고민이 되고 검색도 해봤는데 의견이 다 나뉘더라구요. 그래서 영한님께서는 보통 어떤 것을 기준으로 두 가지 방식 중에 선택을 하여 적용을 하시는지 의견을 듣고 싶어서 질문 드리게 되었습니다. 감사합니다!!

  • spring-boot
  • JPA
  • jpa
  • spring
  • java
초콜렛빵 댓글 1 좋아요 0 조회수 769

오타 제보

해결됨

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

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] "3.트랜잭션 이해.pdf" 수업자료 32, 44페이지의 memberB가 memberEx로 정정돼야할 것 같습니다! <32페이지> <44페이지> 수업 너무 잘 듣고 있습니다. 감사합니다.

  • spring
gyuray 댓글 1 좋아요 0 조회수 352

404에러

미해결

스프링 프레임워크는 내 손에 [스프2탄]

안녕하세요. 다름이 아니라 나프1탄,2탄 때 잘만 구동되던 게 갑자기 404 에러가 떠서요 ㅠㅠ 중간에 인텔리제이에 톰캣 연동하느라 따로 톰캣을 다운받았었는데 그게 문제가 되는 걸까요? 구글링 하면서 웬만한 건 다 따라해봤는데 해결이 안돼서 여쭤봅니다..

  • MVC
  • spring
  • mvc
  • jquery
  • jpa
  • Spring Security
  • spring-security
  • JPA
댓글 1 좋아요 0 조회수 451

수정자 주입

미해결

스프링 핵심 원리 - 기본편

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? ( 예 /아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? ( 예 /아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? ( 예 /아니오) [질문 내용] '생성자 주입을 선택하라!' 강의 5분쯤에 나온 NullPointerException이 왜 발생한 건지 궁금합니다. @Component public class OrderServiceImpl implements OrderService { private MemberRepository memberRepository; private DiscountPolicy discountPolicy; @Autowired public void setMemberRepository(MemberRepository memberRepository) { this.memberRepository = memberRepository; } @Autowired public void setDiscountPolicy(DiscountPolicy discountPolicy) { this.discountPolicy = discountPolicy; } } class OrderServiceImplTest { @Test void createOrder() { OrderServiceImpl orderService = new OrderServiceImpl(); orderService.createOrder(1L, "itemA", 10000); } } @Autowired를 해주었기 때문에 자동으로 의존관계 주입이 되는 거 아닌가요? 추가) AnnotationConfigApplicationContext로 스프링 빈을 등록하지 않아서 그런 건가요?

  • oop
  • 수정자주입
  • spring
이소연 댓글 1 좋아요 1 조회수 484

인기 태그

인프런 TOP Writers

주간 인기글