inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

공부법 질문드립니다

미해결

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

안녕하세요 공부방법 질문드립니다! 저는 비전공자이고 자바만 공부했는데요 자바 배웠으면 프레임워크인 스프링을 공부해야 된다고 해서 주변 사람들에게 추천을 받아 이 강의를 듣게 되었습니다. 김영한 강사님의 커리큘럼 그대로 따라가려고 했는데요 입문 강의임에도 불구하고 생각했던것 보다 어렵고 마음과 다르게 진도 나가기가 힘드네요... 강의를 들으면서 완전 아예 이해가 전혀 안된다! 이건 아닌데요 그래도 많이 어렵습니다. 어려워서 스프링공부법 관련해서 인터넷에 계속 검색하다 보니 스프링 공부 전 jsp를 먼저 공부하는게 좋다는 말들이 있는데요 저 혼자 jsp를 따로 공부한 후에 지금 이 강의 들으면서 김영한강사님의 커리큘럼을 따라가는게 맞는건가요? jsp를 먼저 공부하고 와야 할까요? 공부법 조언해주시면 감사하겠습니다 !

  • java
  • spring-boot
  • MVC
  • spring
Eden 댓글 2 좋아요 0 조회수 1017

Dispatcher Servlet은 어디 있나요 ?

미해결

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

강의를 듣던 중 질문드립니다. SpringMvc패턴에서 v1에서 각각의 클래스에 @Controller 애노테이션으로 등록만 해주었는데 FrontController 역할을 하는 Dispatcher Servlet의 클래스? 등은 따로 존재하지 않는건가요? 이번 소스가 정확히 어떤식으로 돌아가는지 잘 이해가 가지 않습니다 ㅠㅠ Http의 parameter를 입력 받고 스프링 빈에 등록되어 있는 핸들러 @RequestMapping 으로 찾은 다음 따로 무언가 작성해주지 않더라도 스프링 내부에서 자동으로 어댑터를 찾아서 핸들러를 적용시키고 뷰 리졸버까지 자동으로 되는건가요? ㅠㅠ 구조가 잘 이해가 가지 않습니다 김영한 선생님께서 만든건 Controller 클래스와 .jsp의 뷰밖에 없는데 스프링이 어떻게 알아서 다 하는지... 헷갈립니다 그리고 제가 컨트롤러의 리턴값을 무엇을 반환할지도 모르는데 만약 스프링안에 등록된 어댑터로 찾을 수 없으면 에러가 발생하나요 ?

  • spring
  • MVC
댓글 1 좋아요 1 조회수 314

Member엔티티와 Order엔티티의 일대다 연관관계 불필요성

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

https://www.inflearn.com/questions/66107 글에 답변주신 내용중에 질문있습니다. " 오히려 주문, 배송 등등 객체 각각이 살아있어서 필요한 곳을 참조하는 식으로 설계하는게 더 좋은 설계 방법" 말씀하신 내용중에 ' 필요한 곳을 참조하는 식 ' 이 부분 설명이 이해가가지 않습니다. 혹시, Member-Order 간의 연관관계에서 Member엔티티 클래스안에 @OneToMany List<Order>일대다 연관관계를 c끊어내므로서 Member로 Order엔티티객체에 접근할 수 없게만들고 직접 em.find 나 em.createQuery 로 Order엔티티객체를 얻어내라는 말씀이신가요?

  • JPA
  • java
창신동 장첸 댓글 1 좋아요 0 조회수 244

테이블 생성이 안됩니다 ㅠㅠ

해결됨

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

maven으로 시작했습니다. 제가 진행하는 프로젝트가 maven이라 그렇게 배워보려고요.. 그런데 테이블 생성이 잘 안됩니다 ㅠㅠ member까지는 어떻게 생성을 했는데 그 이후 테이블 생성이 console에도 나오지 않고, h2에도 뜨지않아요. 또 member에 insert도 되지않습니다. 테이블 안에 내용이 들어가질 않는데 어떻게 해야할까요 ㅠㅠ

  • 웹앱
  • spring
  • JPA
  • spring-boot
  • java
민주 댓글 6 좋아요 0 조회수 536

엔티티 기본 생성자를 protected로 했을 때 테스트 질문

해결됨

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

선생님 안녕하세요, 처음이라 모든 것이 낯설지만 양질의 강의 덕에 순조롭게 학습을 진행하고 있습니다. 감사합니다 ^^ 다름이 아니라, 앞 강의 (엔티티 설계 주의점) 및 강의자료(p29)에서 Entity나 Embedded type 생성자를 protected로 하는 것이 더욱 안전하다고 말씀해주셨습니다. 그래서 Entity의 생성자도 protected로 설정하고 진행해보았습니다. 그런데 테스트를 하려고 보니 테스트용 Entity 객체를 생성할 수 없는 문제가 생겨서 일단 default 생성자를 public으로 하고 계속하였습니다. 혹시 protected 생성자를 사용하면 테스트하는 방법이 있는지요, 아니면 이러한 문제로 인해 Entity는 public 생성자를 사용해야 하는지요?

  • java
  • spring-boot
  • JPA
  • 웹앱
  • spring
풀잎 댓글 2 좋아요 0 조회수 1068

produces=MediaType

미해결

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

선생님 안녕하세요. MediaType 설정 관련해서 질문이 있습니다. produces 속성을 MediaType.APPLICATION_JSON_VALUE로 설정하면 에러 바디도 JSON 데이터로 만들어서 반환하는 걸 이번 강의에서 배웠고 여기에서 accept 헤더가 중요한 역할을 하는 걸 알았습니다. 그런데 여기서 궁금한 것이 제가 테스트를 해보니, accept=*/*로 설정하면 왜 application/json 방식이 더 우선순위를 갖는 걸까요? ErrorPageContriol에서 produces 값을 더 구체적으로 설정해줘서 처음에는 application/json 방식이 (accept=*/* 로 설정할 경우) 더 우선권을 갖는 거라고 생각했는데, 처음에 만든 produces 값 설정을 안 한 컨트롤러 메서드를 produces=MediaType.TEXT_HTML_VALUE로 변경하고 html과 json 방식 메서드 두 개가 있는 상황에서 테스트해도 여전히 json 형식이 더 우선권을 갖는데 왜 그런지 궁금합니다.

  • MVC
  • spring
강성욱 댓글 1 좋아요 1 조회수 665

Validation (JSR-303 validation with Hibernate validator) 모듈 추가

미해결

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

제목 그대로 스프링 부트 스타터 설정에서 저 모듈을 추가하라는 말씀이 어떻게 해야하는 건지 잘 모르겠네요..코드를 추가하는건가요? 혹시 스프링부트 스타터에서 추가하는건가요?

  • springboot
  • JPA
  • spring
  • 웹앱
  • spring-boot
  • java
skj3232 댓글 2 좋아요 1 조회수 1684

지연로딩관련 질문드립니다.

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

안녕하세요!! 지연로딩 질문이 생겨서 질문드립니다. 연관관계의 주인이 아니며 OneToOne (mappedBy = "@@@", fetch = FetchType.LAZY) 이렇게 설정되어있는 객체가 있습니다. LAZY로 설정되어있어서 해당 부분만 em.find 로 찾아보아도, 연관관계주인의 테이블까지 join 하는 쿼리가 같이 나가네요. 혹시 mappedBy 되어있는경우 LAZY옵션사용이 불가능한가요?

  • FetchLazy
  • java
  • JPA
댓글 1 좋아요 0 조회수 316

어제 까지 잘 되다가 스프링 부트 오류가 납니다 ㅜㅜ

미해결

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

"C:\Program Files\jdk-11.0.10\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2021.1.2\lib\idea_rt.jar=56009:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2021.1.2\bin" -Dfile.encoding=UTF-8 -classpath C:\Study\springmvc1\servlet\out\production\classes;C:\Study\springmvc1\servlet\out\production\resources;C:\Users\강명관\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-web\2.4.10\226e6e8f98ca0bd01ec9e22ce3b2f949d8602071\spring-boot-starter-web-2.4.10.jar;C:\Users\강명관\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-json\2.4.10\9c9a66259d8aab14eb00651e5e7bbb041a9be751\spring-boot-starter-json-2.4.10.jar;C:\Users\강명관\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter\2.4.10\ef1b2a0613f167bb3415794821340eda2dbade61\spring-boot-starter-2.4.10.jar;C:\Users\강명관\.gradle\caches\modules-2\files-2.1\org.springframework\spring-webmvc\5.3.9\c3cd1f0bba2658995e887d2f0011ab9bd3da1773\spring-webmvc-5.3.9.jar;C:\Users\강명관\.gradle\caches\modules-2\files-2.1\org.springframework\spring-web\5.3.9\88c920ec1bda67fea04daa8e16165777440df473\spring-web-5.3.9.jar;C:\Users\강명관\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.datatype\jackson-datatype-jdk8\2.11.4\e1540dea3c6c681ea4e335a960f730861ee3bedb\jackson-datatype-jdk8-2.11.4.jar;C:\Users\강명관\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.datatype\jackson-datatype-jsr310\2.11.4\ce6fc76bba06623720e5a9308386b6ae74753f4d\jackson-datatype-jsr310-2.11.4.jar;C:\Users\강명관\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.module\jackson-module-parameter-names\2.11.4\432e050d79f2282a66c320375d628f1b0842cb12\jackson-module-parameter-names-2.11.4.jar;C:\Users\강명관\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-databind\2.11.4\5d9f3d441f99d721b957e3497f0a6465c764fad4\jackson-databind-2.11.4.jar;C:\Users\강명관\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-autoconfigure\2.4.10\1a379a85c299627e0b0ad2b591d09737dcf79fc\spring-boot-autoconfigure-2.4.10.jar;C:\Users\강명관\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot\2.4.10\e32e46615c661583c4865b893ec127e2f1b5b455\spring-boot-2.4.10.jar;C:\Users\강명관\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-logging\2.4.10\c852f9dfaf6f792a4e39c186782ca9a0cdcf6e04\spring-boot-starter-logging-2.4.10.jar;C:\Users\강명관\.gradle\caches\modules-2\files-2.1\org.springframework\spring-core\5.3.9\cfef19d1dfa41d56f8de66238dc015334997d573\spring-core-5.3.9.jar;C:\Users\강명관\.gradle\caches\modules-2\files-2.1\org.yaml\snakeyaml\1.27\359d62567480b07a679dc643f82fc926b100eed5\snakeyaml-1.27.jar;C:\Users\강명관\.gradle\caches\modules-2\files-2.1\org.springframework\spring-context\5.3.9\887f4579ade4f47cf0102856f4f4c88eda8ec9d7\spring-context-5.3.9.jar;C:\Users\강명관\.gradle\caches\modules-2\files-2.1\org.springframework\spring-aop\5.3.9\9bcad31a74e60d205500dd67d2220bd0195c63f8\spring-aop-5.3.9.jar;C:\Users\강명관\.gradle\caches\modules-2\files-2.1\org.springframework\spring-beans\5.3.9\48600db2cb1abc0f7ef2b073f0c1abd78a83bcfc\spring-beans-5.3.9.jar;C:\Users\강명관\.gradle\caches\modules-2\files-2.1\org.springframework\spring-expression\5.3.9\f5ca763cfb9d62d196efd5d25e8daca7d555ed75\spring-expression-5.3.9.jar;C:\Users\강명관\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-core\2.11.4\593f7b18bab07a76767f181e2a2336135ce82cc4\jackson-core-2.11.4.jar;C:\Users\강명관\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-annotations\2.11.4\2c3f5c079330f3a01726686a078979420f547ae4\jackson-annotations-2.11.4.jar;C:\Users\강명관\.gradle\caches\modules-2\files-2.1\ch.qos.logback\logback-classic\1.2.5\30e0c3932f24fb10e7851dd308a3ad14e570d60\logback-classic-1.2.5.jar;C:\Users\강명관\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-to-slf4j\2.13.3\966f6fd1af4959d6b12bfa880121d4a2b164f857\log4j-to-slf4j-2.13.3.jar;C:\Users\강명관\.gradle\caches\modules-2\files-2.1\org.slf4j\jul-to-slf4j\1.7.32\8a055c04ab44e8e8326901cadf89080721348bdb\jul-to-slf4j-1.7.32.jar;C:\Users\강명관\.gradle\caches\modules-2\files-2.1\org.springframework\spring-jcl\5.3.9\622eb12c98768b6d3acc71ce06bac8b332607a10\spring-jcl-5.3.9.jar;C:\Users\강명관\.gradle\caches\modules-2\files-2.1\ch.qos.logback\logback-core\1.2.5\3e149d9c476be313030faf12d76a82c8a0e97f04\logback-core-1.2.5.jar;C:\Users\강명관\.gradle\caches\modules-2\files-2.1\org.slf4j\slf4j-api\1.7.32\cdcff33940d9f2de763bc41ea05a0be5941176c3\slf4j-api-1.7.32.jar;C:\Users\강명관\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-api\2.13.3\ec1508160b93d274b1add34419b897bae84c6ca9\log4j-api-2.13.3.jar hello.servlet.ServletApplication . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.4.10) 2021-08-27 21:03:32.567 INFO 3348 --- [ main] hello.servlet.ServletApplication : Starting ServletApplication using Java 11.0.10 on DESKTOP-5JQBK68 with PID 3348 (C:\Study\springmvc1\servlet\out\production\classes started by 강명관 in C:\Study\springmvc1\servlet) 2021-08-27 21:03:32.573 INFO 3348 --- [ main] hello.servlet.ServletApplication : No active profile set, falling back to default profiles: default 2021-08-27 21:03:34.372 WARN 3348 --- [ main] s.c.a.AnnotationConfigApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'servletComponentRegisteringPostProcessor': Unexpected exception during bean creation; nested exception is java.lang.NoClassDefFoundError: javax/servlet/annotation/WebServlet 2021-08-27 21:03:34.387 INFO 3348 --- [ main] ConditionEvaluationReportLoggingListener : Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2021-08-27 21:03:34.438 ERROR 3348 --- [ main] o.s.boot.SpringApplication : Application run failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'servletComponentRegisteringPostProcessor': Unexpected exception during bean creation; nested exception is java.lang.NoClassDefFoundError: javax/servlet/annotation/WebServlet at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:537) ~[spring-beans-5.3.9.jar:5.3.9] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.9.jar:5.3.9] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.9.jar:5.3.9] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.9.jar:5.3.9] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:213) ~[spring-beans-5.3.9.jar:5.3.9] at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:196) ~[spring-context-5.3.9.jar:5.3.9] at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:746) ~[spring-context-5.3.9.jar:5.3.9] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:564) ~[spring-context-5.3.9.jar:5.3.9] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:771) ~[spring-boot-2.4.10.jar:2.4.10] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:763) ~[spring-boot-2.4.10.jar:2.4.10] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:438) ~[spring-boot-2.4.10.jar:2.4.10] at org.springframework.boot.SpringApplication.run(SpringApplication.java:339) ~[spring-boot-2.4.10.jar:2.4.10] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1329) ~[spring-boot-2.4.10.jar:2.4.10] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1318) ~[spring-boot-2.4.10.jar:2.4.10] at hello.servlet.ServletApplication.main(ServletApplication.java:13) ~[classes/:na] Caused by: java.lang.NoClassDefFoundError: javax/servlet/annotation/WebServlet at org.springframework.boot.web.servlet.WebServletHandler.<init>(WebServletHandler.java:39) ~[spring-boot-2.4.10.jar:2.4.10] at org.springframework.boot.web.servlet.ServletComponentRegisteringPostProcessor.<clinit>(ServletComponentRegisteringPostProcessor.java:49) ~[spring-boot-2.4.10.jar:2.4.10] at org.springframework.boot.web.servlet.ServletComponentScanRegistrar$ServletComponentRegisteringPostProcessorBeanDefinition.lambda$getInstanceSupplier$0(ServletComponentScanRegistrar.java:94) ~[spring-boot-2.4.10.jar:2.4.10] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainFromSupplier(AbstractAutowireCapableBeanFactory.java:1231) ~[spring-beans-5.3.9.jar:5.3.9] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1173) ~[spring-beans-5.3.9.jar:5.3.9] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:564) ~[spring-beans-5.3.9.jar:5.3.9] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:524) ~[spring-beans-5.3.9.jar:5.3.9] ... 14 common frames omitted Caused by: java.lang.ClassNotFoundException: javax.servlet.annotation.WebServlet at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) ~[na:na] at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) ~[na:na] at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) ~[na:na] ... 21 common frames omitted 분명 어제까지 강의 듣고 라이브 코딩하면서 진행하던 중 오늘 다시 공부를 하는데 오류가나는데 구글링하면서 해결하려고 해봐도 해결되지가 않습니다.... ㅜㅜ Process finished with exit code 1

  • spring
  • MVC
댓글 1 좋아요 0 조회수 540

MVC 패턴과 용어에대해 질문이있습니다

미해결

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

안녕하세요, 선생님 로드맵을 쭉 따라가며 스프링 열공중인 취준생입니다. 강의를 듣기전 얕게나마 MVC에대해 공부를 했었는데 강의를 들으면서 알고있던 개념과 다른점이 생겨서 질문드립니다. MVC패턴이 유지보수를 편하게하고 협업개발을 원할히 하기위해 웹을 세부분으로 나눈거라는점은 알겠는데 정작 웹개발 프로젝트를 하게되면 DAO(Repository)와 DTO(Domain) 그리고 Service라는 구체적인 객체들을 보게되더군요. 선생님 강의에서는 서비스와 dao를 별도로 구분하고 모델을 dto역할로 제한해서 설명하셨는데 어떤 책에서는 dao dto 서비스 셋을 모두 뭉텅그려 모델이라고 말하는 곳도 있더라구요 용어를 정확히 어떻게 정리를 해야할지 도움주셨으면 합니다 ㅠㅠ

  • spring
  • MVC
최원진 댓글 2 좋아요 4 조회수 465

PK와 FK 를 동시에 갖게하는방법 질문드립니다.

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

상속관련 강의를 들으면서 문득, 상속에 대한 JPA로직을 굳이 모르더라도, 연관관계매핑을 통해서 상속에서 생성한 테이블구조 그대로 만들 수 있다고 생각하고 시도해보았습니다. 아래 코드처럼 작성하였지만, 실행은 되어도 제가 원하는 sql이 나가지않네요ㅠ 혹시 관련 문법이나 해결방법이 있을까요? //현재클래스는 BOOK @Id @Column(name = "item2_id") @GeneratedValue private Long id; @OneToOne @JoinColumn(name="item2_id", referencedColumnName="item2_id") private Item_2 item_2;

  • java
  • JPA
댓글 1 좋아요 0 조회수 354

BookForm 생성자

미해결

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

BookForm 을 setter 대신 생성자로 했는데, int price 와 int stockQuantity 에서 missmatch Error 가 떴어요. CreateForm 도 그렇고 UpdateFrom 도 그렇고 빈 폼을 넘겨줄때 java 기본값이 0 인데 참조변수 기본값 null 이 들어가서 에러가 뜨는것 같은데 맞나요.? 그래서 아래와 같이 @nullable을 넣으니까 해결되긴 했는데, 이렇게 사용해도 다른 사이드에 악영향을 끼칠 가능성은 없을까요..? 답변 항상 감사합니다. public BookForm (Long id , String name , @Nullable int price , @Nullable int stockQuantity , String author , String isbn) { this . id = id ; this . name = name ; this . price = price ; this . stockQuantity = stockQuantity ; this . author = author ; this . isbn = isbn ; }

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

properties 말고 yml에는 이렇게 하는게 맞을까요?

미해결

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

안녕하세요 선생님! 강의를 듣고 제 프로젝트에 메세지를 적용시켜보고 있습니다. 제 강의는 설정파일이 .yml이라서 yml형식으로 설정을 따라해보았습니다. application.yml spring : ...(생략) messages : basename : messages ...(생략) messages.yml label : search : siteName : "사이트 이름111" lectureName : "강의 이름" teacherName : "강의자 이름" starRating : "별 점" ...(생략) 이렇게 yml파일을 구성한뒤 html에서 똑같이 th:text=#{label.search.siteName} 를 해보았는데 적용이안됩니다. 그래서 구글링을 좀 해보니 yml messages을 properties처럼 사용하는 라이브러리를 찾아서 적용해보았습니다. build.gradle implementation 'net.rakugakibox.util:yaml-resource-bundle:1.1' MessageConfiguration package dongho.classflix.config ; import org.springframework.beans.factory.annotation. Value ; import org.springframework.context.MessageSource ; import org.springframework.context.annotation. Bean ; import org.springframework.context.annotation. Configuration ; import org.springframework.context.support.ResourceBundleMessageSource ; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer ; @Configuration public class MessageConfiguration implements WebMvcConfigurer { @Bean public MessageSource messageSource ( @Value ( "${spring.messages.basename}" ) String basename , @Value ( "${spring.messages.encoding}" ) String encoding ){ YamlMessageSource ms = new YamlMessageSource() ; ms.setBasename(basename) ; ms.setDefaultEncoding(encoding) ; ms.setAlwaysUseMessageFormat( true ) ; ms.setUseCodeAsDefaultMessage( true ) ; ms.setFallbackToSystemLocale( true ) ; return ms ; } private static class YamlMessageSource extends ResourceBundleMessageSource{ } } 그래도 적용이 안되었습니다. messages는 보통 properties로 사용을 한다고 하기에, 일단 지금은 application.yml와 messages.properties를 사용하여 해결한 상태입니다. 질문정리 1. messages.yml을 사용하려면 어떻게 해야하나요? 2. 그냥 application.yml에 messages.properties를 사용해도 무방할까요?

  • MVC
  • spring
김동호 댓글 2 좋아요 2 조회수 1410

JpaRepository는 사용 안하시나요?

미해결

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

학교 선배한테 배울때는 JPARepository 인터페이스를 상속해서 사용 했었는데 이거랑 다른건가요?

  • spring-boot
  • JPA
  • spring
  • 웹앱
  • java
ㅁㄴㅇㄼㅈㄷㄱ 댓글 3 좋아요 0 조회수 369

단위 테스트를 하려면 어떻게 해야하나요?

미해결

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

안녕하세요. 강의 중 단위테스트가 중요하다고 하셔서 진행하고싶은데 방향성이 궁금해서 질문드립니다. 1) Repository를 jpa 사용하지 않고 Map을 이용하던가 해서 순수 java로 만든 후 service에 의존시켜서 진행하는 것인가요?? 2) 그리고 실무에서 test code를 짤 때 controller, service, repository에 대해서 모두 다 짜는지... 아니면 화면단 보다는 비즈니스 로직이 있는 부분 위주로 짜는지도 궁금합니다.

  • spring
  • spring-boot
  • JPA
  • java
  • 웹앱
임채원 댓글 1 좋아요 6 조회수 465

프로젝트 셋팅 그래들로 했을땐 어떻게 해야하는지 궁금합니다.

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

이전에는 그래들로만 진행하셔서 이번에도 그래들로 하시는 줄 알았는데 처음 공부할땐 빌드 툴을 하나만 그대로 쓰고싶습니다. 혹시 실례가 안된다면 그래들에서는 어떻게 셋팅하는 지 알려주실 수 있나요?

  • JPA
  • java
wisehero 댓글 1 좋아요 0 조회수 315

TestPropertySource질문입니다.

해결됨

스프링 부트 개념과 활용

안녕하세요 강사님 언제나 좋은 강의 감사드립니다. 강의 내용을 따라서 열심히 따라 하고는 있는데, TestPropertySources로 우선순위를 먼저 받게끔 작업을 했는데 테스트 코드가 통과를 해서 혹시 뭐가 잘못 됐는지 여쭤보고 싶어서 질문을 남깁니다. 위의 코드를 보면 기존 application.yml의 server.port가 7443이고, test.yml의 설정이 6663인데, 해당 코드를 돌려보니 application.yml의 설정값을 우선순위로 읽어들여서 테스트 코드가 성공하였습니다. 혹시 현재 기준으로 우선순위가 변경이 된건지, 아니면 제가 무슨 실수를 한 것인지 한번만 봐 주시면 감사드리겠습니다

  • spring-boot
  • spring
  • java
밤의멜로디 댓글 1 좋아요 0 조회수 1343

세션 로그인 인증 관련 질문

미해결

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

Rest api에서 세션 인증 방식을 사용한다고 할때, 이와 관련해서 몇몇 질문사항이 있습니다. 1. 세션의 저장 - 별도의 세션 레포지토리를 구성하고, 클라이언트의 요청이 올때 세션 레포지토리로부터 유저의 정보 조회해야 하는지 - 톰켓이 세션 저장소를 보유? 해서 request.getSession & session.getAttribute 사용 2. 로그인 당시 응답 - 클라이언트한테 response에 세션 아이디를 같이 넣어서 보내줘야 하는지 - 그럴 필요없이 톰켓이 세션 내부 저장소를 가져, 항상 세션 아이디를 보내주는지 postman으로 테스트 해볼때는 sessionId를 쿠키(postman이 가지고있는?)에 저장해서 보관하고 이 값을 갱신해주기 전까지는 같은 값을 보유하고 있는데 세션을 별도로 저장하고 응답으로 주어야 하는지, 그럴 필요가 없는지 헷갈려서 질문드립니다. 3. 예를 들어 유저가 상품을 구매하는 request를 rest api를 통해 날리면, 백엔드와 프론트엔드가 통신할때 userId 혹은 username으로 회원의 정보를 보내는게 아니라, sessionId(인증에 필요한 정보, 토큰이던지)와 상품 정보를 보내주고, 백엔드에서는 세션 id를 통해 세션 저장소에 저장되어있는 유저의 정보를 얻고, 이를 기반으로 상품 구매 처리를 해야 할 것 같은데, 이 경우 강의에서 말씀하신대로 여러 유저의 요청이 많은 경우, 서버에 부하가 오는 것 같아 별로인 것 같기도합니다. 그래서 어떻게 처리하는게 맞는지 더 헷갈리는 것 같습니다. 이렇게 처리하는 방식으로 하는게 맞는 지 ( 세션이나 jwt 토큰을 사용할 경우) 궁금 합니다. - 이게 맞다면, 모든 컨트롤러에서 매번 세션 레포지토리를 조회해야하는데 번거로운걸 보니 맞는 방법이 아닌것 같고요.. - Config에 bean으로 세션 체크하는 로직을 등록해서 사용하는 방법을 채택할수도 있는것 같고, 리턴값으로 적어도 회원의 아이디는 줘야 하니 4. 또한 jwt 토큰 방식으도 있어 스프링 시큐리티를 사용하지 않고 구현을 해보고 싶은데 이 경우에는 jwt 토큰 레포지토리를 구성해서 해보는게 맞는지 궁금합니다. 정확한 답이 아니라, 어떤걸 찾아보면되는지 힌트 방식이여도 좋으니 알려주시면 감사드리겠습니다.

  • MVC
  • spring
유승현 댓글 1 좋아요 1 조회수 1420

h2 질문드려요

미해결

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

jpashop으로 하면 파일도 만들어지고 연결성공하는데요 여기까지오면 연결이 되지않고 아래와 같은 오류가 뜹니다 뭐가 문제일까요 영상에서 했던 것과 다르게 실시햇던 것은 다운은 받았으나, 터미널로 진행하는 부분을 정확하게 인지하지 못해서 주소창에 localhost:9092(제포트)/h2-console 로 접근해서 jdbc:h2:~/jpashop 연결했습니다. 추가 ++) 위와 같이 실행해서 h2 페이지를 연 후에도 같은 오류가 나더라고요. 전에 다른 강의에서 썼던 db입니다. 해당 데이터 베이스로는 잘 접속이 되는데 이걸로 application에 url설정 넣고 사용해도 되는건가요?

  • spring
  • 웹앱
  • JPA
  • java
  • spring-boot
부릉부릉 댓글 2 좋아요 1 조회수 383

1차캐시 질문드립니다.

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

1차캐시관련 질문이 생깁니다. 서버 A와 B가 있습니다. 1. A가 C테이블에 123을 추가합니다. 2. B가 C테이블에 123을 수정합니다. 3. A가 C테이블에 123을 조회합니다, 이런경우 1차캐시로 인하여 수정되기 전 데이터가 조회되는것인가요?

  • java
  • JPA
댓글 1 좋아요 0 조회수 180

인기 태그

인프런 TOP Writers

주간 인기글