묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
Cause: org/apache/http/conn/ssl/DefaultHostnameVerifier
Cause: org/apache/http/conn/ssl/DefaultHostnameVerifier org/apache/http/conn/ssl/DefaultHostnameVerifier* 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. MVC2 체크박스 강의를 따라하던 중 잘 실행되던 프로젝트에서 갑자기 위와 같은 오류가 뜹니다. =========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
view resolver에 대해서
안녕하세요 view Resolver관련해서 질문드립니다. 간단한 컨트롤러를 만들고 template에 간단한 main.html파일을 만들어 클라이언트에게 html파일을 return하려고 했습니다. 이 때 컨트롤러에서 return "main"을 해주면 정상적으로 클라이언트에게 반환이 됐는데어느 순간 이 return문이 no static resource main이라며 400번대 에러가 뜨게 됐는데요.혹시나 하는 마음에 "main.html"을 return하니 정상적으로 작동됐습니다. 저는 어떤 것도 만진 것이 없는데 갑자기 왜 이렇게 된건가요? 또 다시 "main" 으로 return하려면 제가 고쳐야 할 곳은 어디인가요?
-
미해결스프링 핵심 원리 - 기본편
싱글톤 패턴 코드
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. private static final SingletonService instance = new SingletonService(); 강의에서 설명하실때 위와 같이 작성을 하셨는데 final이 꼭 붙어야하는 것인지 잘 모르겠습니다.외부에서부터의 접근을 막기 위한 private접근 제어자와 공유 개념을 적용해야하는 static만 사용하더라도 싱글톤 패턴이 구현되지않을까싶습니다. 하나의 클래스에 하나의 인스턴스만을 가지게 해서 보통 데이터베이스 연결 부분에서 이렇게들 사용하는 것으로 알고 있는데 final을 꼭 붙여야 할까요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
JPA, 멀티파일 업로드
강의를 들으면서 하나의 프로젝트에 순차적으로 적용중인데요. 멀티파일 같은 경우에 JPA에서 어떻게 연관관계로 풀어내면 좋을지 잘 모르겠어서요. @OneToOne으로 풀어야 하는지 ㅠㅠ JPA에 적용시 어떻게 풀어야 하는지 자세하게 설명좀 부탁드립니다.
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
@Transactional AOP 구현 질문
안녕하세요 영한님,@Transactional을 썻을때 스프링에서 구현해주는 AOP Proxy의 rollback시 동작순서에 궁금한점이 있어 질문드립니다. @Transactional 애노테이션이 붙은 method에서 예외가 발생해서 proxy구현체에서 롤백할시에 transaction 롤백 요청후 catch한 exception을 다시 던져주나요? 물론 AOP 구현체는 아래보다 복잡하겠지만, 아래와 비슷하게 동작하는지 궁금합니다.public Object implementTransactionalAOP(ProceedingJoinPoint pjp){ TransactionStatus tx = txManager.getTransaction(new DefaultTransactionAttribute()); try { Object ret = pjp.proceed(); txManager.commit(tx); return ret; }catch (RuntimeException e){ txManager.rollback(tx); throw new RuntimeException("",e); } }제가 괜히 코드를 집어넣어서 헷갈리게 해드리는것 같지만, 질문의 요점은 예외가 터졌을때 rollback만 요청해주는지 아니면 예외를 잡아서 같은예외를 다시 던져주는지가 궁금합니다.
-
미해결스프링 핵심 원리 - 기본편
OrderService의 createOrder()의 매개변수 타입 질문
OrderService.java의 createOrder()에서 memberId의 타입은 wrapper이면서 itemPrice의 타입은 기본형으로 하신 이유가 궁금합니다.제가 생각한 이유는 다음과 같습니다. (이글과 비교해서 작성하였습니다)클라이언트가 '회원가입하기' 버튼을 눌렀을 때 Member 객체가 생성되는데, 이때 memberId는 클라이언트가 정하는 것이 아닌 서버 내부적으로 정해지는 값이다. 따라서 Member 객체가 생성되는 시점에서 memberId는 정해지지 않았기 때문에 null이 들어가는 것이 적절하다. 즉, Member의 memberId에는 null이 들어있을 가능성이 있기에 createOrder()의 매개변수 타입도 long이 아닌 Long으로 하였다.반면, 상품 등록을 할 때 상품 가격은 반드시 입력되어야 하는(required) 필드이다. 따라서 '상품 등록하기' 버튼을 눌렀을 때 Item 객체가 생성되는데, 이때 상품 가격(itemPrice) 필드에는 값이 반드시 들어갈 것이기에 itemPrice 필드에 null이 저장된 Item 객체는 존재하지 않을 것이다. 따라서 Integer가 아닌 int 타입인 것이다.
-
미해결쥬쥬와 함께 하루만에 시작하는 백엔드 - 스프링, 도커, AWS
dto 관련 질문입니다.
컨트롤러(Api) 패키지 안에 만드신 dto(request, response)는 private final로 선언하셔서 데이터가 변경되지 않도록 선언하셨고,서비스단 패키지 안에 만드신 ReviewDto는 private으로만 선언하여 데이터가 언제든 변경이 되게끔 선언하셨는데이 차이가서비스단 로직의 데이터는 비즈니스 로직을 통해 언제든 변할 수 있기 때문이고컨트롤러단 로직은 받아온 데이터와, 응답하는 데이터이기 때문에 변할 일이 없기에 선언 방식이 다른 것이 맞을까요? 너무 기초적인 부분일 수 있지만제가 이해한 바가 맞는지 궁금하여 질문드립니다.
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
질문이 있습니다...
[질문 내용]궁금한점이 몇가지 있습니다 ...
-
해결됨
spring에서 Entity작성 후 [Table ' ' doesn't exist] 오류
영화 예매 관련 Entity를 작성 후 DB확인차 실행했는데 다른 Entity는 테이블이 잘 만들어진 것을 확인할 수 있었지만 이상하게 Seat Entity만 테이블이 만들어지지 않았습니다. WARN 3508 --- [Movie Ticketing] [ restartedMain] o.m.jdbc.message.server.ErrorPacket : Error: 1146-42S02: Table 'ticketing.seat' doesn't exist WARN 3508 --- [Movie Ticketing] [ restartedMain] o.h.t.s.i.ExceptionHandlerLoggedImpl : GenerationTarget encountered exception accepting command : Error executing DDL " alter table seat add constraint FKgik5885qsff01sxe7v3kqjrhx foreign key (theater_id) references theater (theater_id)" via JDBC [(conn=216) Table 'ticketing.seat' doesn't exist] org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL " alter table seat add constraint FKgik5885qsff01sxe7v3kqjrhx foreign key (theater_id) references theater (theater_id)" via JDBC [(conn=216) Table 'ticketing.seat' doesn't exist]at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:94) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.tool.schema.internal.Helper.applySqlString(Helper.java:233) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.tool.schema.internal.Helper.applySqlStrings(Helper.java:217) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createForeignKeys(SchemaCreatorImpl.java:303) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createFromMetadata(SchemaCreatorImpl.java:250) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.tool.schema.internal.SchemaCreatorImpl.performCreation(SchemaCreatorImpl.java:172) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:142) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:118) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:256) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.lambda$process$5(SchemaManagementToolCoordinator.java:145) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final]application.yml은ddl-auto.create입니다. 대소문자 구분이 문제인가 싶어 @Table(name = "seat")도 추가하고 lower_case_table_names = 1인 것도 확인했는데 똑같이 에러가 발생하더라구요하루종일 찾아봐도 이유를 잘 모르겠습니다 왜그런걸까요 ㅠㅠㅠSeat Entity 코드는 아래와 같습니다.@Entity @Table(name = "seat") class Seat { val row : String? = null val column : Int? = null //좌석 선택 @Enumerated(EnumType.STRING) val selectStatus : SelectStatus? = null // POSSIBLE, IMPOSSIBLE @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "theater_id") val theater : Theater? = null @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "seat_id") val id : Long = 0L }
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
@Transactional은 수동커밋으로 변경되나요 ?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]제목이 곧 내용입니다
-
미해결스프링 핵심 원리 - 기본편
getBeanDefinition() 메서드가 존재하지 않네요?
getBeanDefintionNames()하고 getBeanDefintionCount()두개 만 존재하는데 다른 메서드를 써야 하나요?
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
모임참가 취소 할때 로직 질문
안녕하세요이부분에서 event.removeEnrollment(enrollment);이 메서드를 타고 들어가면이 메서드가 실행되는데 이때 106라인->enrollment.setEvent(null);이 코드는 꼭 필요 한건가요 ??첫번째 사진 보시면 어차피enrollmentRepository.delete(enrollment);이걸 실행 하는데 왜 있는건지 이해가 잘 안갑니다 ! =================두번째 질문===========이 부분에서 취소를 하면 대기하던사람이 자동 확정 하는 로직인데대기 하던 사람들 중 제일 먼저 신청을 해놓은 사람들을정렬해서 true 처리 해야하는데 이건 안되있는거 아닌가요 !!?
-
해결됨스프링 핵심 원리 - 기본편
싱글톤 빈과 request scope 빈
컨트롤러 빈은 싱글톤이고, 여기에 Provider로 매 클라이언트의 요청시마다 새로운 request scope빈을 생성해 주입해준다는 것 까지는 이해했습니다. 그런데 강의 7:40처럼 메서드 logDemo를 호출하는 메인 쓰레드를 sleep()하고 그 사이 여러번 요청을 했을때, 쓰레드가 깨어나면서 각 요청마다 새로운 request scope빈이 생성되고 다시 여러번 종료되는 것이 이해가 되지 않습니다. 컨트롤러 빈은 싱글톤이라, 다음번 새로운 request빈이 들어올 때까지는 전의 request빈의 주소값을 갖고 있을텐데 어떤 과정으로 싱글톤빈의 log-Demo실행 중 내부 주입되는 request빈이 교체될 수 있을까요? 컨텍스트 스위칭처럼 logDemo의 실행간 내부 주입되는 빈이 교체되는 건가요?
-
미해결실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
QClass 생성시 EnumPath 문제
안녕하세요 강의 실습 따라 진행하다가 조금 다른 점이 생겨서 문의 드립니다.package com.group.libraryapp.domain.book; import static com.querydsl.core.types.PathMetadataFactory.*; import com.querydsl.core.types.dsl.*; import com.querydsl.core.types.PathMetadata; import javax.annotation.processing.Generated; import com.querydsl.core.types.Path; /** * QBook is a Querydsl query type for Book */ @Generated("com.querydsl.codegen.DefaultEntitySerializer") public class QBook extends EntityPathBase<Book> { private static final long serialVersionUID = -608098416L; public static final QBook book = new QBook("book"); public final NumberPath<Long> id = createNumber("id", Long.class); public final StringPath name = createString("name"); public final EnumPath<BookType> type = createEnum("type", BookType.class); public QBook(String variable) { super(Book.class, forVariable(variable)); } public QBook(Path<Book> path) { super(path.getType(), path.getMetadata()); } public QBook(PathMetadata metadata) { super(Book.class, metadata); } } 위와 같이 EnumPath의 경우에 type 패키지 아래에 정의해 둔 이넘 클래스를 제대로 가져오지 못하는 문제가 발생하고 있습니다.QUserLoanHistory에서도 UserLoanStatus에 대해 똑같은 상황이 발생해서 생성된 QClass를 수동으로 고쳐서 사용중입니다. 이게 제 IDE에서만 이상 현상이 발생하는 것인지 모르겠습니다.public final EnumPath<com.group.libraryapp.type.UserLoanStatus> status = createEnum("status", com.group.libraryapp.type.UserLoanStatus.class); 이 부분도 수정 전에는 아래와 같은 상태였습니다.public final EnumPath<com.group.libraryapp.domain.user.UserLoanStatus> status = createEnum("status", com.group.libraryapp.domain.user.UserLoanStatus.class); 제가 설정을 무언가 잘못한 부분이 있는 걸까요?감사합니다.
-
미해결스프링 핵심 원리 - 기본편
스프링전환 실행시 로그내용이 나오지 않네요?
스프링 전환 실행 후 실행창에 나오는(4분50초) 로그 내용이제 실행화면에는 안나오고 결과 값만 나오네요???코딩은 똑 같이 했고, 결과도 잘 나옵니다.== appConfig에 어노테이션도 다 달았습니다.
-
미해결스프링 핵심 원리 - 기본편
실제로도 수동빈을 작성할 일이 많이 있나요 ??
프레임워크라는 것을 생각해보면 스프링이 의도한대로 로직을 짜는게 잘 설계하는거라고 생각이 되는데, 그럼 수동빈을 설정할 일이 많나요? 그리고 그것도 좋은 설계인가요 ??
-
해결됨스프링 핵심 원리 - 기본편
오류
주문과 할인 도메인 개발 강의에서 아래와 같이 작성하였는데요. package hello.core.order; import hello.core.discount.DiscountPolicy; import hello.core.discount.FixDiscountPlicy; import hello.core.member.Member; import hello.core.member.MemberRepository; import hello.core.member.MemoryMemberRepository; public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository = new MemoryMemberRepository(); private final DiscountPolicy discountPolicy = new FixDiscountPolicy(); @Override public Order createOrder(Long memberId, String itemName, int itemPrice) { Member member = memberRepository.findById(memberId); int discountPolicy = discountPolicy.discount(member, itemPrice); return new Order(memberId, itemName, itemPrice, discountPolicy); } public DiscountPolicy getDiscountPolicy() { return discountPolicy; } } int discountPolicy = discountPolicy.discount(member, itemPrice);이 부분에서 변수 discountPolicy가 초기화되지 않았을 수 있습니다. 라는 오류가 뜹니다. 실제 이 부분 때문에 실행이 안되는데요.인터페이스를 초기화할 수 없어서 그런거 아닌가요..?저만 안되나요..?
-
해결됨스프링 DB 1편 - 데이터 접근 핵심 원리
이체중 예외발생 로그
[질문 내용]테스트를 돌렸을때 이런 깨지는현상은 어떻게 변경할수있을까요? 세팅에서 UTF-8로 변경해보았지만 변경이 안되네요 ㅠㅠ.
-
미해결스프링 핵심 원리 - 기본편
메서드 추출 시, @NotNull 이 자동으로 붙습니다
윈도우에서 ctrl + alt + M 을 입력했을 때, 강의처럼 Extract Method 창이 뜨지 않고이렇게 바로 추출할 수 있게 나오는데 이 방법으로 생성을 하면 @NotNull 이 붙은 채로 같이 생성이 됩니다.붙이고 사용해도 되는걸까요?(+ 그리고 사진과 같은 방식 말고 강의에서처럼 타입같은거 바로 바꿔서 추출할 수 있게 하는 창을 띄울 순 없을까요? 이렇게 하니 static도 자동적으로 붙어버리네요)
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
코드 작성 관련 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]코드 작성하실 때 항상 첫줄 비우고 작성하시는 이유가 궁금합니다보기 더 편해서 그런 건가요?