묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
findByItemNameLikeAndPriceLessThanEqual 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]스프링 데이터 JPA 적용1 강의에서findByItemNameLikeAndPriceLessThanEqual 라는 쿼리메서드는'select i from Item where i.price<= ?' 라는 JPQL이 실행된다 라고했는데 'select i from Item i where i.itemName like :itemName and i.price <= :price'가 맞는거 아닌가해서요LikeAnd가 붙었는데 기존과 동일하다고 설명되어있길래 질문드려요
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
ItemMapper.xml 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]ItemMapper.xml에 <insert> 코드가 강사님 코드하고 한 자도 안 틀리고 똑같은데 테스트에서 sql syntax 에러가 나서 강사님 코드를 붙여넣었는데 테스트가 정상으로 작동했습니다. 이상해서 코드를 한 줄씩 Ctrl + C, V 해가면서 테스트가 제대로 작동하는지 확인했는데 그래도 계속 syntax 에러가 났습니다. 코드 전체를 복사하고 붙였더니 테스트가 정상 작동했구요. 이런 경우가 가끔식 있는지 이건 어떤 경우인지 궁금해서 질문 남깁니다.
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
BeanPropertyRowMapper 관련해서 질문 있습니다.
안녕하세요. 모든 필드가 final인 클래스에 BeanPropertyRowMapper는 사용 못하는건가요?? 빈 생성자는 생성하지 못해서 각 필드의 기본값으로 초기화 해주는 생성자를 만들었는데모든 필드가 final이라서 값이 변경이 되지 않아서 그런지 기본값으로 나오더라고요 코드는 아래와 같이 작성했습니다 그냥 RowMapper를 직접 만들어서 사용하는게 최선일까요??
-
미해결Practical Testing: 실용적인 테스트 가이드
stock을 entity로 분류 하는 이유
안녕하세요 선생님!초심자인 저에게 코드가 어렵지만 그림 그려 가면서이해 하고 있습니다.내용을 이해 하던 중 도메인에 궁금한게 생겼습니다.선생님께서는 stock을 따로 entity로 분류 하셨습니다.그런데 저는 "상품에 재고가 있어도 되지 않나?"라는 생각이 들었는데따로 stock을 분류 하신 이유가 궁금합니다.product에 수량을 추가 한다면수량이 필요 없는 필드도 수량 필드를 가지게 되는데데이터가 많을 경우 db에 부담이 되기 때문 일까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
데이터베이스연동문제
해당 오류들이 나오면서 h2베이스에 연동이 되지 않습니다 ㅠㅠ 해결하는 방법이 있을까요?2024-11-01T15:11:48.474+09:00 ERROR 84212 --- [ restartedMain] j.LocalContainerEntityManagerFactoryBean : Failed to initialize JPA EntityManagerFactory: Property 'jpabook.jpshop.domain.Delivery.status' is annotated '@Enumerated' but its type 'jpabook.jpshop.domain.DeliveryStatus' is not an enum2024-11-01T15:11:48.475+09:00 WARN 84212 --- [ restartedMain] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Property 'jpabook.jpshop.domain.Delivery.status' is annotated '@Enumerated' but its type 'jpabook.jpshop.domain.DeliveryStatus' is not an enum2024-11-01T15:11:48.480+09:00 INFO 84212 --- [ restartedMain] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...2024-11-01T15:11:48.495+09:00 INFO 84212 --- [ restartedMain] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.2024-11-01T15:11:48.506+09:00 INFO 84212 --- [ restartedMain] o.apache.catalina.core.StandardService : Stopping service [Tomcat]2024-11-01T15:11:48.548+09:00 INFO 84212 --- [ restartedMain] .s.b.a.l.ConditionEvaluationReportLogger : Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.2024-11-01T15:11:48.627+09:00 ERROR 84212 --- [ restartedMain] o.s.boot.SpringApplication : Application run failedorg.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Property 'jpabook.jpshop.domain.Delivery.status' is annotated '@Enumerated' but its type 'jpabook.jpshop.domain.DeliveryStatus' is not an enum at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1775) ~[spring-beans-6.1.1.jar:6.1.1] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:601) ~[spring-beans-6.1.1.jar:6.1.1] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:523) ~[spring-beans-6.1.1.jar:6.1.1] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325) ~[spring-beans-6.1.1.jar:6.1.1] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.1.1.jar:6.1.1] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323) ~[spring-beans-6.1.1.jar:6.1.1] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[spring-beans-6.1.1.jar:6.1.1] at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1173) ~[spring-context-6.1.1.jar:6.1.1] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:936) ~[spring-context-6.1.1.jar:6.1.1] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:616) ~[spring-context-6.1.1.jar:6.1.1] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.2.0.jar:3.2.0] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:753) ~[spring-boot-3.2.0.jar:3.2.0] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:455) ~[spring-boot-3.2.0.jar:3.2.0] at org.springframework.boot.SpringApplication.run(SpringApplication.java:323) ~[spring-boot-3.2.0.jar:3.2.0] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1342) ~[spring-boot-3.2.0.jar:3.2.0] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1331) ~[spring-boot-3.2.0.jar:3.2.0] at jpabook.jpshop.JpashopApplication.main(JpashopApplication.java:10) ~[main/:na] at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[na:na] at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50) ~[spring-boot-devtools-3.2.0.jar:3.2.0]Caused by: org.hibernate.AnnotationException: Property 'jpabook.jpshop.domain.Delivery.status' is annotated '@Enumerated' but its type 'jpabook.jpshop.domain.DeliveryStatus' is not an enum at org.hibernate.boot.model.internal.BasicValueBinder.prepareBasicAttribute(BasicValueBinder.java:805) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.boot.model.internal.BasicValueBinder.setType(BasicValueBinder.java:374) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.boot.model.internal.PropertyBinder.makePropertyAndValue(PropertyBinder.java:261) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.boot.model.internal.PropertyBinder.makePropertyValueAndBind(PropertyBinder.java:297) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.boot.model.internal.PropertyBinder.createBasicBinder(PropertyBinder.java:1169) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.boot.model.internal.PropertyBinder.bindBasic(PropertyBinder.java:1071) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.boot.model.internal.PropertyBinder.bindProperty(PropertyBinder.java:890) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.boot.model.internal.PropertyBinder.buildProperty(PropertyBinder.java:788) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.boot.model.internal.PropertyBinder.processElementAnnotations(PropertyBinder.java:709) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.boot.model.internal.EntityBinder.processIdPropertiesIfNotAlready(EntityBinder.java:977) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.boot.model.internal.EntityBinder.handleIdentifier(EntityBinder.java:305) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.boot.model.internal.EntityBinder.bindEntityClass(EntityBinder.java:231) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.boot.model.internal.AnnotationBinder.bindClass(AnnotationBinder.java:422) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.boot.model.source.internal.annotations.AnnotationMetadataSourceProcessorImpl.processEntityHierarchies(AnnotationMetadataSourceProcessorImpl.java:255) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.boot.model.process.spi.MetadataBuildingProcess$1.processEntityHierarchies(MetadataBuildingProcess.java:278) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:321) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1432) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1503) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final] at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:75) ~[spring-orm-6.1.1.jar:6.1.1] at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:376) ~[spring-orm-6.1.1.jar:6.1.1] at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409) ~[spring-orm-6.1.1.jar:6.1.1] at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396) ~[spring-orm-6.1.1.jar:6.1.1] at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:352) ~[spring-orm-6.1.1.jar:6.1.1] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1822) ~[spring-beans-6.1.1.jar:6.1.1] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1771) ~[spring-beans-6.1.1.jar:6.1.1] ... 19 common frames omittedDisconnected from the target VM, address: '127.0.0.1:55744', transport: 'socket'Process finished with exit code 0
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
index.html
안녕하세요? 강의 잘 보고 있습니다.html 코드가 없어 커뮤니티에 와보니 없는게 맞는거군요.강사님과 같은 화면을 만드려면 직접 html 태그 넣어서 만듦강사님이 보내주는 코드를 넣음두가지 방법인거죠?
-
미해결Practical Testing: 실용적인 테스트 가이드
private 메서드를 public으로 바꾸면 어떤가요?
안녕하세요, 우빈님 강의 정말 잘 듣고 있습니다! 한가지 의문점이 드는 것은 private 메서드는 테스트를 하지 않고 그냐 유지하되, 필요 시에 따로 클래스를 분리하여 객체를 만드신다고 했는데요, 그냥 간편히 private 메서드를 public 메서드로 변환해서 내부 호출하는 방법은 별로 고려되지 않은 것 같은데 따로 이유가 있을까요? 혹시 createNextProductNumber()가 ProductService 클래스의 성격과는 맞지 않아서 분리하는 경우인지, createNextProductNumber()가 결국 다른 곳에서 사용 될 수 있이므로 별도의 파일로 관리하는지 궁금합니다
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
jpa에서 DAO나 Entity중에 뭘 사용해야하나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]DAO나 DTO, VO, Entity등이 다 다른데 jpa에서는 어떤걸 사용하나요?아니면 모두 사용하는건가요? 그중에서도 사용하지 않는게 있을까요?
-
미해결[초급] 찍어먹자! 코틀린과 Spring Security + JWT로 회원가입 만들기
unique 작성법
@Table 애노테이션을 써서 unique 를 설정하셨는데,@Column(unique = true) 로 설정하는 방법을 사용하지 않으신 이유가 있나요??
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
OrderService에서 MemberRepository를 참조하는 이유
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]강의 듣다가 문득 궁금하여 질문드립니다.보통 Repository를 바로 접근하지 않기 위해서 Service를 만드는 건데, OrderService에서 MemberRepository에 바로 접근한 것은 OrderService 또한 같은 Service 단계이기 때문인가요?
-
미해결코드로 배우는 React with 스프링부트 API서버
카카오연동이후 product 사진 깨지는현상
왜그런지 궁금해서 post맨으로 product read할때header에 accessToken넣고 요청보내봤는데 정상호출이됩니다근데.리액트에서 만든 인터셉터에서 에러 메시지를 받으면 원래요청에 새로운 엑세스 토큰 넣어서해주는 기능이있는걸 봤어요 어> 근데 이러면 사진이 안깨져야 말이맞지않나요?어디서 잘못된건지 잘 모르겠어서 질문드립니다
-
미해결실전! Querydsl
재사용 관련 문의
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]선생님 안녕하세요,강의 잘 보고 있습니다. 강의를 보다가 하나 궁금한게 있어서 질문드립니다.강의를 보면 별도의 BooleanExpression를 반환하는 별도의 비교결과를 반환하는 함수를 통해 재사용이 가능하다고 말씀하셨는데, 코드를 보면 member를 가지고 비교하는 방식으로 사용을하고 있습니다. 그러면 member테이블 두번 조인하는 경우에 대해서는 해당 함수를 재사용할 수 없을꺼같은데, 혹시 방법이 있을까요?그리고 해당 함수의 경우 해당 Repository에서만 사용 가능할꺼같은데.. 혹시 맞을까요?
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
디버깅모드 에러
ErrorDecoder를 이용한 예외 처리강의 15:00 에order_service: url: http://ORDER-SERVICE/order-service/%s/orders exception: order_is_emptyda: User's order is emptyimda2이렇게 설정하고 http://127.0.0.1:8000/user-service/users/[userid]돌리니까디버깅모드에서 getProperty가 Invalid expression : ) 로 표시됩니다 resume 하면 제대로 postman에 적용되긴합니다. 거의 똑같이 썻는데 왜 저는 저렇게 디버그 모드에서 invalid expression이라고 떠서 확인을 못하게 뜰까요 스프링부트3.3 jdk 17입니다 intellij
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
안녕하세요 조언을 얻고 싶습니다.
[질문 내용]spring mvc 1편까지 수강했을 땐 이해가 가능했는데, 야생형으로 한번 도전해보고 있습니다. 그런데 외계어로 들리는데 일단 한번 쭉 따라 쳐보는게 맞는걸까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
강의를 보고 연습 코드를 짜봤는데용... 잘 짠지 모르겠습니다.
우선 책과 카테고리 관계는 다대다 매핑이니 중간테이블로 책카테고리라는 엔티티를 뒀습니다.Ex) 연관관계 예시[책] : "해리포터" <-> [카테고리] : sf, 소설[책] : "아이언맨", "해리포터" <-> [카테고리] : sfpublic class Book { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "book_id") private Long id; private String title; }public class BookCategory { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "book_category_id") private Long id; @ManyToOne @JoinColumn(name = "book_id") private Book book; @ManyToOne @JoinColumn(name = "category_id") private Category category;public class Category { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "category_id") private Long id; private String categoryName; @OneToMany(mappedBy = "category", cascade = CascadeType.ALL, orphanRemoval = true) private List<BookCategory> bookCategories = new ArrayList<>(); }@Transactional public void createBook(BookDto dto) { Book book = new Book(); book.setTitle(dto.getTitle()); bookRepository.save(book); List<Category> categories = dto.getCategories(); for (Category category : categories) { BookCategory bookCategory = new BookCategory(); bookCategory.setBook(book); bookCategory.setCategory(category); category.getBookCategories().add(bookCategory); categoryRepository.save(category); } }테스트 해 본 결과, 원하는 대로 나오는 거 같은데CategoryRepository에는id name1 소설2 Sf3 소설이런 식으로 저장되더라구요... 이러면 CategoryRepository에 의미없는 데이터만 저장되는 거 같은데 잘 짠 거 맞나요?
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
service에 dto 전달
안녕하세요!! service 메소드 호출 파라미터 관련 질문드립니다 saveMemberV2()에서 request.getName()으로 받은 이름을 member객체에 set 해주고, 이 member를 memberService.join()에 파라미터로 넘겨주는 방식인 것 같은데, memberService.join에 request를 통으로 넘겨서, 이후 join 메소드에서 member.setName(request.getName()) 후 처리하는 방식 은 사용하면 안되는 것인가요? 후자를 이용한다면 memberSerive.join의 파라미터도 Member 타입에서 CreateMemberRequest로 바꾸고요...!!
-
미해결코드로 배우는 React with 스프링부트 API서버
질문이있습니다
섹션8에 axios인터셉터와 access토큰 보고있습니다 여기서 지금 todo나 product를 클릭하면 오류나는데jwtfilter에서String accessToken = authHeaderStr.substring(7);이부분에서 request.getHeader ==null 이라 오류가뜨는데음.,..이게 mainpage나 about페이지에서는 왜오류가 안나는 지 궁금합니다...왜냐면 OncePerRequestFilter 를 상속받아서 if(path.startsWith("/api/member/")){ return true; }조건문을 member만 필터 제외시킨거같은데...
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
프록시 내부 호출 해결 방안에 대해 질문이 있습니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]예제에서 internal() 메서드를 별도의 클래스로 분리하지 않고, external() 메서드에 @Transactional 어노테이션을 사용하여 미리 트랜잭션을 시작하여 internal()에도 적용되도록 하는 방법은 적절한 해결 방안이 아닐까요?왜 클래스를 별도로 분리하는 것이 더 합리적인 해결 방안인지가 궁금합니다!
-
해결됨스프링 DB 2편 - 데이터 접근 활용 기술
스프링 부트 3.X 버전으로 바꾸려면
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]강의 내용대로itemservice-db-start를 이름 수정해서 쓰려고 했는데이 코드는 스프링 부트 2.X 버전이더라고요. 이렇게 강의에서 제공하는 코드가 2.X 버전인 경우, 저는 이전 MVC 2편 강의 들을 땐 제가 스프링 이니셜라이저 사이트에 가서 직접 프로젝트를 3.X 버전으로 하나 만들고, 강의에서 제공하는 코드에서 main 폴더랑 test 폴더만 제가 만든 프로젝트 쪽으로 복사 + 붙여넣기 하는 식으로 해결했었습니다. 이번에도 그런 식으로 했고 실행해서 상품 등록이랑 수정해 보니 오류는 딱히 안 나는데 조금 걱정되는 부분이 있어서 질문드립니다. 강의에서 제공하는 코드를 보면modules 폴더나 sql 폴더가 있습니다. 제가 새로 만든 프로젝트엔 없고요. 그래서 위 폴더들도 그대로 복사 붙여넣기 할까 생각도 했는데.. 위 두 개 폴더 말고도 더 있을지도 모르고, 이런 식으로 없는 폴더를 일일이 복사 붙여넣기 해서 무언가 잘못되어서 나중에 가서 오류가 터질까 봐 조금 걱정이 되네요. 조금 안전한 방법으로 스프링 부트 3.X 코드를 쓰고 싶은데, 제가 그동안 했던 방법으론 조금 불안합니다..ㅎㅎ 관련 질문과 답변이 MVC 2편 커뮤니티엔 많은데, DB 2편 커뮤니티엔 없는 것 같아서 질문드립니다.스프링 부트 3.X로 하려면 어떻게 하는 게 좋을까요?그냥 2.X 버전으로 진행해도 아무 문제 안 생긴다면 2.X로 해도 상관은 없습니다. +)그냥 강의에서 제공하는 스프링 부트 2.X 버전 코드에 추가로 https://www.inflearn.com/community/questions/988208/%EC%9E%90%EB%B0%94-17%EC%9D%80-%EC%96%B4%EB%96%BB%EA%B2%8C-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%EB%A5%BC-%EC%A7%84%ED%96%89%ED%95%B4%EC%95%BC-%ED%95%98%EB%82%98%EC%9A%94 이 게시글대로 해 보고, 여기에 추가로plugins { id 'org.springframework.boot' version '3.3.2' id 'io.spring.dependency-management' version '1.1.6' id 'java' }이 부분만 3.3.2랑 1.1.6으로 수정해 봤는데요.(스프링 부트 3 이상으로 바꾸기 위해)이렇게 하니깐 다음 메시지가 뜹니다. 강의 코드를 수정해야 할지, 아니면 제가 새로 프로젝트를 만들어서 수정해야 할지, 그러면 복붙을 어디어디 할지 모르겠네요.. A problem occurred configuring root project 'itemservice-db'.> Could not resolve all artifacts for configuration ':classpath'.> Could not resolve org.springframework.boot:spring-boot-gradle-plugin:3.3.2.Required by:project : > org.springframework.boot:org.springframework.boot.gradle.plugin:3.3.2> No matching variant of org.springframework.boot:spring-boot-gradle-plugin:3.3.2 was found. The consumer was configured to find a runtime of a library compatible with Java 17, packaged as a jar, and its dependencies declared externally, as well as attribute 'org.gradle.plugin.api-version' with value '7.2' but:- Variant 'apiElements' capability org.springframework.boot:spring-boot-gradle-plugin:3.3.2 declares a library compatible with Java 17, packaged as a jar, and its dependencies declared externally:- Incompatible because this component declares an API of a component and the consumer needed a runtime of a component- Other compatible attribute:- Doesn't say anything about org.gradle.plugin.api-version (required '7.2')- Variant 'javadocElements' capability org.springframework.boot:spring-boot-gradle-plugin:3.3.2 declares a runtime of a component, and its dependencies declared externally:- Incompatible because this component declares documentation and the consumer needed a library- Other compatible attributes:- Doesn't say anything about its target Java version (required compatibility with Java 17)- Doesn't say anything about its elements (required them packaged as a jar)- Doesn't say anything about org.gradle.plugin.api-version (required '7.2')- Variant 'modernGradleRuntimeElements' capability org.springframework.boot:spring-boot-gradle-plugin:3.3.2 declares a runtime of a library compatible with Java 17, packaged as a jar, and its dependencies declared externally:- Incompatible because this component declares a component, as well as attribute 'org.gradle.plugin.api-version' with value '8.7' and the consumer needed a component, as well as attribute 'org.gradle.plugin.api-version' with value '7.2'- Variant 'runtimeElements' capability org.springframework.boot:spring-boot-gradle-plugin:3.3.2 declares a runtime of a library compatible with Java 17, packaged as a jar, and its dependencies declared externally:- Incompatible because this component declares a component, as well as attribute 'org.gradle.plugin.api-version' with value '7.5' and the consumer needed a component, as well as attribute 'org.gradle.plugin.api-version' with value '7.2'- Variant 'sourcesElements' capability org.springframework.boot:spring-boot-gradle-plugin:3.3.2 declares a runtime of a component, and its dependencies declared externally:- Incompatible because this component declares documentation and the consumer needed a library- Other compatible attributes:- Doesn't say anything about its target Java version (required compatibility with Java 17)- Doesn't say anything about its elements (required them packaged as a jar)- Doesn't say anything about org.gradle.plugin.api-version (required '7.2')* 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.
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
빈 등록 및 의존관계 주입
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]빈 등록 및 의존 관계 주입이 헷갈려서 그러는데 JdbcTemplateItemRepositoryItemService이 두 개는 TemplateConfig에서 직접 빈 등록하고, 등록하면서 의존 관계가 주입되고 DataSource는 properties 파일에서 설정을 통해 스프링이 자동으로 빈으로 등록해주고 web 패키지에 있는 Controller들은 컴포넌트 스캔 + Autowired로 빈을 등록하고 의존 관계가 주입되고 있는 거 맞나요? 이게 맞다면JdbcTemplateItemRepository랑 ItemService에 @Repository, @Service 애노테이션을 사용하지 않고Config로 직접 빈을 등록하고 의존 관계를 주입한 이유가 있을까요?