inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

강의 교재 오타

미해결

스프링 부트 - 핵심 원리와 활용

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 네 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 자동구성.pdf 파일에 Environment가 아닌 Enviroment로 표기되어 있습니다.

  • spring
  • spring-boot
  • prometheus
  • grafana
채상혁 댓글 1 좋아요 0 조회수 468

Mac Prometheus 실행 오류

해결됨

스프링 부트 - 핵심 원리와 활용

macbook apple silicon (M1 이상) 아키텍처를 사용하시는 분은.. Prometheus 를 설치하실때 amd64가 아닌 arm64 로 설치하시면 보안 허용 필요없이 진행할 수 있습니다.. 강의에서는 rosetta 가 설치된 환경이라 amd64 파일을 실행할 수 있었던 것으로 생각됩니다.. rosetta 가 설치되지 않은 macbook 에서 amd64 파일로 진행 시, 아래와 같은 에러 메시지를 만날 수 있었습니다. zsh: bad CPU type in executable: ./prometheus 특별한 이유가 없다면 강의자료 수정 필요해 보입니다.. grafana의 경우 darwin arm64 지원이 없어서 rosetta 2 를 설치하여 실행할 수 있었습니다.

  • prometheus
starryeye 댓글 1 좋아요 1 조회수 815

fetchjoin시 QueryDsl과 @EntityGraph 사용 기준

해결됨

실전! 스프링 데이터 JPA

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요 영한님. QueryDsl과 @EntityGraph 사용 기준에 대해 궁금한 부분이 생겨서 질문 남깁니다. fetchJoin을 할 때, 여러가지 방법이 있겠지만 QueryDsl과 @EntityGraph이 가장 편리한 방법이라고 생각합니다. 저의 경우엔 @EntityGraph가 가독성이 더 좋다고 느껴서 간단한 조회용 페치조인의 경우에 사용하고, 검색조건이 있는 복잡한 조회의 경우엔 Querydsl을 사용하는데요. 실제로 이 둘을 사용할 때 어떤 것에 우선순위를 두시는지 궁금합니다. 강의 잘 듣고 있습니다. 감사합니다!

  • java
  • spring
  • spring-boot
  • jpa
789456jang 댓글 1 좋아요 1 조회수 984

@Builder에 대해서 질문이 있습니다.

미해결

스프링 부트에서 DTO를 만들 때 @setter을 빼고 @Builder로 하는게 좋다고 들었습니다. 근데 책이랑 구글을 찾아보다 보니 두 가지의 방법으로 하는 것을 봤는데 무슨 차이인지 무엇이 더 좋은 방법인지를 모르겠어서 질문드립니다. 생성자 위에 @Builder를 사용하는 방법 @Getter //Getter 생성 public class LombokPerson { private String name; private String grade; private int age; @Builder // 생성자 만든 후 위에 @Build 어노테이션 적용 public LombokPerson(String name, String grade, int age) { this.name = name; this.grade = grade; this.age = age; } 클래스 위에 @Builder를 사용하면서 @Setter도 사용하는 방법 @ToString @Setter @Getter @Builder @NoArgsConstructor @AllArgsConstructor public class UserDTO { private String token; private String userName; private String password; private String id; } 2번째의 방법이 책에서 나온 방법인데 @Setter이 바뀔 수도 있어서 @Builder로 생성자로 받는거로 알고 있는데 여기서는 @Setter과 @Builder을 같이 쓰더라구여. 이거에 대해서 알려주세요 ㅠㅠ

  • java
  • springboot
  • @builder
유요한 댓글 1 좋아요 0 조회수 872

Could not find javax.xml.bind:jsxb-api:.

미해결

java11, springboot2.7.1로 프로젝트 진행했던 프로젝트를 열어 실행하니 에러가 발생합니다. 해결하지 못하여 질문드립니다! 발생에러 11:46:16 AM: Executing ':RandomApplication.main()'... > Task :compileJava FAILED Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0. You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins. See https://docs.gradle.org/7.4.1/userguide/command_line_interface.html#sec:command_line_warnings 1 actionable task: 1 executed FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':compileJava'. > Could not resolve all files for configuration ':compileClasspath'. > Could not find javax.xml.bind:jsxb-api:. Required by: project : * 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. * Get more help at https://help.gradle.org BUILD FAILED in 652ms 11:46:16 AM: Execution finished ':RandomApplication.main()'. Execution failed for task ':compileJava'. > Could not resolve all files for configuration ':compileClasspath'. > Could not find javax.xml.bind:jsxb-api:. Required by: project : Possible solution: - Declare repository providing the artifact, see the documentation at https://docs.gradle.org/current/userguide/declaring_repositories.html 시도 java JDK 버전 확인, 빌드 자동 실행 설정 등.. 구글링해서 찾아봤으나 해결하지 못했습니다ㅠㅠ 검색해보면 jaxb -api:. 를 기준으로 나오는데, 제 에러는 jsxb -api 입니다 이 둘의 차이는 무엇인가요?

  • java
  • springboot
  • jpa
  • gradle
  • jsxb
  • jaxb
seoyun jang 댓글 1 좋아요 0 조회수 1098

19강 질문

미해결

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

안녕하세요 선생님 늘 친절하게 답변해주셔서 감사합니다. 19강에서 궁금한 게 있는데 service와 repository를 스프링 빈으로 만들기 전에 왜 jdbctemplate에 의존할 수밖에 없는 건가요?

  • java
  • spring
  • aws
  • mysql
  • spring-boot
  • jpa
댓글 2 좋아요 1 조회수 688

쿼리가 강의보다 더 나오고 있습니다.

미해결

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

"/api/v2/simple-orders " 이 url로 호출했을 때, (1) order테이블에서 가져오는 쿼리 1번 => (2개의 데이터) (2) member 쿼리 1번 * 2 (3) delivery 쿼리 1번 * 2 해서 총 5번이 나오는 걸로 알고 있습니다. 근데 현재 로그에서 총 쿼리가 7번이 나가고 있습니다. 코드를 따라쳐보면서 했는데도 왜 다르게 나가는지 원인을 짐작하기가 힘듭니다. 현재 제 쿼리는 (1) order 테이블에서 가져오는 쿼리 1번 (2) member 쿼리 1번 (3) delivery 쿼리 1번 (4) delivery id 조건절로 order 찾는 쿼리 1번 (2)~(4)번 한 번 더 반복 이렇게 해서 총 7번 쿼리가 나가게 됩니다. 쿼리만 보고 어떤 부분때문에 더 나가게 됐는지 짐작할 수 있을까요? 엔티티 간의 연관관계 매핑은 강의를 보면서 했기 때문에 제가 중간에 놓쳤나 생각이 들기도 하네요ㅜ 원인을 짐작하기가 어렵습니다. select o1_0.order_id, o1_0.delivery_id, o1_0.member_id, o1_0.order_date, o1_0.status from orders o1_0 join member m1_0 on m1_0.member_id=o1_0.member_id fetch first ? rows only 2023-03-23T19:03:54.387+09:00 DEBUG 56506 --- [nio-8080-exec-1] org.hibernate.SQL : select m1_0.member_id, m1_0.city, m1_0.street, m1_0.zipcode, m1_0.name from member m1_0 where m1_0.member_id=? 2023-03-23T19:03:54.390+09:00 DEBUG 56506 --- [nio-8080-exec-1] org.hibernate.SQL : select d1_0.delivery_id, d1_0.city, d1_0.street, d1_0.zipcode, d1_0.status from delivery d1_0 where d1_0.delivery_id=? 2023-03-23T19:03:54.393+09:00 DEBUG 56506 --- [nio-8080-exec-1] org.hibernate.SQL : select o1_0.order_id, o1_0.delivery_id, o1_0.member_id, o1_0.order_date, o1_0.status from orders o1_0 where o1_0.delivery_id=? 2023-03-23T19:03:54.395+09:00 DEBUG 56506 --- [nio-8080-exec-1] org.hibernate.SQL : select m1_0.member_id, m1_0.city, m1_0.street, m1_0.zipcode, m1_0.name from member m1_0 where m1_0.member_id=? 2023-03-23T19:03:54.396+09:00 DEBUG 56506 --- [nio-8080-exec-1] org.hibernate.SQL : select d1_0.delivery_id, d1_0.city, d1_0.street, d1_0.zipcode, d1_0.status from delivery d1_0 where d1_0.delivery_id=? 2023-03-23T19:03:54.397+09:00 DEBUG 56506 --- [nio-8080-exec-1] org.hibernate.SQL : select o1_0.order_id, o1_0.delivery_id, o1_0.member_id, o1_0.order_date, o1_0.status from orders o1_0 where o1_0.delivery_id=?

  • java
  • spring
  • spring-boot
  • jpa
감자 댓글 5 좋아요 9 조회수 1382

다대다 데이터 조회 질문입니다.

해결됨

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

강사님 강의를 보고 최근에 프로젝트를 하다 궁금한게 생겨 질문 남기게 되었습니다. Product <-> Category Entity 다대다 매핑을 위해 product(OneToMany) <-> product_category(ManyToOne) <-> category(OneToMany) 위와 같은 테이블로 매핑한 상태이고 join 상속 전략으로 district_category 테이블도 생성 하였습니다. district_category를 쿼리 파라미터로 받고 해당 district_category를 갖고 있는 상품들을 검색하고 페이징을 하는 로직을 짠다고 했을때 두가지 방법이 생각났는데 둘 중 어느게 더 적합한지 모르겠습니다 검색어를 바탕으로 product_category에서 Product를 EntityGraph로 같이 찾은 후에 찾은 ProductCategory.getproduct() 와 같은 방식 SearchService Category category = districtCategoryRepository.findByDistrictEnum(districtEnum) .orElseThrow(() -> new ProductException(ProductExceptionType.CATEGORY_NOT_FOUND)); return new ProductCategoryToProductPage(productCategoryRepository.findAllByCategory(pageable, category)); ProductCategoryRepository @EntityGraph(attributePaths = "product") Page<ProductCategory> findAllByCategory(Pageable pageable, Category category); ProductCategoryToProduct public ProductCategoryToProductPage(Page<ProductCategory> page) { this.content.addAll(page.getContent().stream() .map(ProductCategory::getProduct) .map(ProductListGetResponseDTO::new) .collect(toList())); this.totalPages = page.getTotalPages(); this.totalElements = page.getTotalElements(); this.pageNumber = page.getNumber() + 1; this.size = page.getSize(); } 발생 쿼리문 select districtca0_.category_id as category2_1_, districtca0_1_.parent_id as parent_i3_1_, districtca0_.district_enum as district1_2_ from district_category districtca0_ inner join category districtca0_1_ on districtca0_.category_id=districtca0_1_.category_id where districtca0_.district_enum=? select productcat0_.product_category_id as product_1_8_0_, product1_.product_id as product_1_7_1_, productcat0_.category_id as category2_8_0_, productcat0_.product_id as product_3_8_0_, product1_.created_date as created_2_7_1_, product1_.content_detail as content_3_7_1_, product1_.product_content as product_4_7_1_, product1_.product_name as product_5_7_1_, product1_.product_price as product_6_7_1_, product1_.product_status as product_7_7_1_, product1_.product_thumbnail as product_8_7_1_ from product_category productcat0_ left outer join product product1_ on productcat0_.product_id=product1_.product_id where productcat0_.category_id=? limit ? select count(productcat0_.product_category_id) as col_0_0_ from product_category productcat0_ where productcat0_.category_id=? 검색어를 바탕으로 product에서 직접 찾기 (데이터 뻥튀기의 문제는 쿼리dsl 이용 productId로 groupBy로 해결) 글 쓰고 생각해보니 A카테고리는 B라는 상품 안에서는 하나밖에 있을 수가 없으니 굳이 groupBy를 안써도 될거 같네요 SearchService Category category = districtCategoryRepository.findByDistrictEnum(districtEnum) .orElseThrow(() -> new ProductException(ProductExceptionType.CATEGORY_NOT_FOUND)); return productRepository.findAllByCategory(pageable, category); ProductRepository @Override public Page<Product> findAllByCategory(Pageable pageable, Category category) { List<Product> content = queryFactory.selectFrom(product) .join(product.productCategories, productCategory) .where(productCategory.category.categoryId.eq(category.getCategoryId())) .groupBy(product.productId) .offset(pageable.getOffset()) .limit(pageable.getPageSize()) .fetch(); Long total = queryFactory .select(Wildcard.count) .from(product) .join(product.productCategories, productCategory) .where(productCategory.category.categoryId.eq(category.getCategoryId())) .fetchOne(); return new PageImpl<>(content, pageable, total); } 발생 쿼리문 select districtca0_.category_id as category2_1_, districtca0_1_.parent_id as parent_i3_1_, districtca0_.district_enum as district1_2_ from district_category districtca0_ inner join category districtca0_1_ on districtca0_.category_id=districtca0_1_.category_id where districtca0_.district_enum=? select product0_.product_id as product_1_7_, product0_.created_date as created_2_7_, product0_.content_detail as content_3_7_, product0_.product_content as product_4_7_, product0_.product_name as product_5_7_, product0_.product_price as product_6_7_, product0_.product_status as product_7_7_, product0_.product_thumbnail as product_8_7_ from product product0_ inner join product_category productcat1_ on product0_.product_id=productcat1_.product_id where productcat1_.category_id=? group by product0_.product_id limit ? select count(*) as col_0_0_ from product product0_ inner join product_category productcat1_ on product0_.product_id=productcat1_.product_id where productcat1_.category_id=?

  • java
  • jpa
말차 댓글 1 좋아요 0 조회수 362

실무에서는 스크립트를 다듬는다고 하셨는데 지금 예제에서는 어떤 점을 다듬어야 할까요?

해결됨

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요 영한님, 강의 잘 듣고 있습니다! 강의에서 JPA가 생성해준 테이블을 그대로 쓰면 안되고, JPA가 쓴 DDL을 다듬어서 쓴다고 하셨는데 생각해보니 저는 토이프로젝트에서 항상 JPA가 만들어주는 그대로 썼던 것 같습니다. 그렇다면 지금 예제에서는 어떤 점을 보완하는게 필요할까요? 감사합니다.

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
MyCatIsRockstar 댓글 1 좋아요 2 조회수 501

SpringConfig import문제

미해결

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

강의영상에서는 MemberService가 제대로 import 되고 MemberService의 메서드도 불이 잘들어가있는데 왜 import가 안되는지 모르겠습니다. 앱실행하면 구동은 잘됩니다

  • java
  • spring
  • mvc
  • spring-boot
Jd Lee 댓글 1 좋아요 0 조회수 437

추상클래스 (abstract class)와 인터페이스(interface)의 최적의 쓰임?

해결됨

나도코딩의 자바 기본편 - 풀코스 (20시간)

안녕하세요 나도코딩 선생님...ㅎ 몇 주전에 나도코딩 자바편 강의를 완강하고 다시 2회차로 강의를 듣는 중입니다...ㅎ 추상 클래스 (abstract class)와 인터페이스(interface) 관련 강의를 들으면서 각각의 특징들 및 차이점들에 대해서 다시 조금씩 알아가고 있는데... (예를 들면, 추상클래스는 abstract 키워드를 가지고, abstract메소드를 가지고 있어서 객체를 생성할 수 없는 반면, 인터페이스(interface)는 보통 -able 키워드, 변수 X, 생성자 X, 오로지 메소드만 있다 등) 이 둘, 그러니까 추상 클래스 (abstract class)와 인터페이스(interface)는 '어느 때 (또는 어느 시점)'에 활용하는게 가장 적절한지 디테일하게 알 수 없을까요? 항상 좋은 강의와 답변 감사합니다...ㅎ

  • java
  • 객체지향
  • 추상클래스
  • abstract
  • 인터페이스
  • interface
댓글 1 좋아요 0 조회수 3482

verify, validate, check, is

미해결

Java/Spring 주니어 개발자를 위한 오답노트

안녕하세요! verify : 과정 validate : 최종 결과 check : 확인 is : 존재 여부 이렇게 생각하는데 다른 분들 의견 및 강사분 의견을 듣고싶습니다!

  • java
  • spring
  • 객체지향
이얏 댓글 1 좋아요 4 조회수 1967

서블릿 컨테이너 초기화 2 강의 듣는 중..

미해결

스프링 부트 - 핵심 원리와 활용

다음과 같은 에러가 발생합니다. "C:\Program Files\Java\jdk-17\bin\java.exe" -javaagent:C:\Users\Administrator\AppData\Local\JetBrains\Toolbox\apps\IDEA-C\ch-0\223.8836.41\lib\idea_rt.jar=58224:C:\Users\Administrator\AppData\Local\JetBrains\Toolbox\apps\IDEA-C\ch-0\223.8836.41\bin -Dfile.encoding=x-windows-949 -classpath C:\tool\tomcat-runner\tomcat-runner\bin\bootstrap.jar;C:\tool\tomcat-runner\tomcat-runner\bin\commons-daemon.jar;C:\tool\tomcat-runner\tomcat-runner\bin\tomcat-juli.jar;C:\tool\tomcat-runner\tomcat-runner\lib\annotations-api.jar;C:\tool\tomcat-runner\tomcat-runner\lib\catalina-ant.jar;C:\tool\tomcat-runner\tomcat-runner\lib\catalina-ha.jar;C:\tool\tomcat-runner\tomcat-runner\lib\catalina-ssi.jar;C:\tool\tomcat-runner\tomcat-runner\lib\catalina-storeconfig.jar;C:\tool\tomcat-runner\tomcat-runner\lib\catalina-tribes.jar;C:\tool\tomcat-runner\tomcat-runner\lib\catalina.jar;C:\tool\tomcat-runner\tomcat-runner\lib\ecj-4.26.jar;C:\tool\tomcat-runner\tomcat-runner\lib\el-api.jar;C:\tool\tomcat-runner\tomcat-runner\lib\jakartaee-migration-1.0.6-shaded.jar;C:\tool\tomcat-runner\tomcat-runner\lib\jasper-el.jar;C:\tool\tomcat-runner\tomcat-runner\lib\jasper.jar;C:\tool\tomcat-runner\tomcat-runner\lib\jaspic-api.jar;C:\tool\tomcat-runner\tomcat-runner\lib\jsp-api.jar;C:\tool\tomcat-runner\tomcat-runner\lib\servlet-api.jar;C:\tool\tomcat-runner\tomcat-runner\lib\tomcat-api.jar;C:\tool\tomcat-runner\tomcat-runner\lib\tomcat-coyote.jar;C:\tool\tomcat-runner\tomcat-runner\lib\tomcat-dbcp.jar;C:\tool\tomcat-runner\tomcat-runner\lib\tomcat-i18n-cs.jar;C:\tool\tomcat-runner\tomcat-runner\lib\tomcat-i18n-de.jar;C:\tool\tomcat-runner\tomcat-runner\lib\tomcat-i18n-es.jar;C:\tool\tomcat-runner\tomcat-runner\lib\tomcat-i18n-fr.jar;C:\tool\tomcat-runner\tomcat-runner\lib\tomcat-i18n-ja.jar;C:\tool\tomcat-runner\tomcat-runner\lib\tomcat-i18n-ko.jar;C:\tool\tomcat-runner\tomcat-runner\lib\tomcat-i18n-pt-BR.jar;C:\tool\tomcat-runner\tomcat-runner\lib\tomcat-i18n-ru.jar;C:\tool\tomcat-runner\tomcat-runner\lib\tomcat-i18n-zh-CN.jar;C:\tool\tomcat-runner\tomcat-runner\lib\tomcat-jdbc.jar;C:\tool\tomcat-runner\tomcat-runner\lib\tomcat-jni.jar;C:\tool\tomcat-runner\tomcat-runner\lib\tomcat-util-scan.jar;C:\tool\tomcat-runner\tomcat-runner\lib\tomcat-util.jar;C:\tool\tomcat-runner\tomcat-runner\lib\tomcat-websocket.jar;C:\tool\tomcat-runner\tomcat-runner\lib\websocket-api.jar;C:\tool\tomcat-runner\tomcat-runner\lib\websocket-client-api.jar org.apache.catalina.startup.Bootstrap start 3월 19, 2023 5:15:29 오후 org.apache.catalina.core.StandardContext setPath WARNING: 컨텍스트 경로는 반드시 빈 문자열이거나, 또는 '/'로 시작하고 '/'로 끝나지 않는 문자열이어야 합니다. 해당 경로 [/]은(는) 이 조건을 충족시키지 않아 [](으)로 변경되었습니다. 3월 19, 2023 5:15:29 오후 org.apache.catalina.startup.VersionLoggerListener log INFO: 서버 버전 이름: Apache Tomcat/10.1.7 3월 19, 2023 5:15:29 오후 org.apache.catalina.startup.VersionLoggerListener log INFO: Server 빌드 시각: Feb 27 2023 20:25:27 UTC 3월 19, 2023 5:15:29 오후 org.apache.catalina.startup.VersionLoggerListener log INFO: Server 버전 번호: 10.1.7.0 3월 19, 2023 5:15:29 오후 org.apache.catalina.startup.VersionLoggerListener log INFO: 운영체제 이름: Windows 11 3월 19, 2023 5:15:29 오후 org.apache.catalina.startup.VersionLoggerListener log INFO: 운영체제 버전: 10.0 3월 19, 2023 5:15:29 오후 org.apache.catalina.startup.VersionLoggerListener log INFO: 아키텍처: amd64 3월 19, 2023 5:15:29 오후 org.apache.catalina.startup.VersionLoggerListener log INFO: 자바 홈: C:\Program Files\Java\jdk-17 3월 19, 2023 5:15:29 오후 org.apache.catalina.startup.VersionLoggerListener log INFO: JVM 버전: 17.0.6+9-LTS-190 3월 19, 2023 5:15:29 오후 org.apache.catalina.startup.VersionLoggerListener log INFO: JVM 벤더: Oracle Corporation 3월 19, 2023 5:15:29 오후 org.apache.catalina.startup.VersionLoggerListener log INFO: CATALINA_BASE: C:\tool\tomcat-runner\tomcat-runner 3월 19, 2023 5:15:29 오후 org.apache.catalina.startup.VersionLoggerListener log INFO: CATALINA_HOME: C:\tool\tomcat-runner\tomcat-runner 3월 19, 2023 5:15:29 오후 org.apache.catalina.startup.VersionLoggerListener log INFO: 명령 행 아규먼트: -javaagent:C:\Users\Administrator\AppData\Local\JetBrains\Toolbox\apps\IDEA-C\ch-0\223.8836.41\lib\idea_rt.jar=58224:C:\Users\Administrator\AppData\Local\JetBrains\Toolbox\apps\IDEA-C\ch-0\223.8836.41\bin 3월 19, 2023 5:15:29 오후 org.apache.catalina.startup.VersionLoggerListener log INFO: 명령 행 아규먼트: -Dfile.encoding=x-windows-949 3월 19, 2023 5:15:29 오후 org.apache.catalina.core.AprLifecycleListener lifecycleEvent INFO: 프로덕션 환경들에서 최적의 성능을 제공하는, APR 기반 Apache Tomcat Native 라이브러리가, 다음 java.library.path에서 발견되지 않습니다: [C:\Program Files\Java\jdk-17\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\Program Files\Common Files\Oracle\Java\javapath;C:\oraclexe\app\oracle\product\11.2.0\server\bin;C:\Program Files (x86)\NAT Service;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\nodejs\;C:\Tools\jdk-16.0.1\bin;C:\Program Files\Git\cmd;C:\Program Files\MySQL\MySQL Shell 8.0\bin\;C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps;C:\Users\Administrator\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\Administrator\AppData\Local\JetBrains\Toolbox\scripts;.] 3월 19, 2023 5:15:30 오후 org.apache.coyote.AbstractProtocol init INFO: 프로토콜 핸들러 ["http-nio-8080"]을(를) 초기화합니다. 3월 19, 2023 5:15:30 오후 org.apache.catalina.startup.Catalina load INFO: [366] 밀리초 내에 서버가 초기화되었습니다. 3월 19, 2023 5:15:30 오후 org.apache.catalina.core.StandardService startInternal INFO: 서비스 [Catalina]을(를) 시작합니다. 3월 19, 2023 5:15:30 오후 org.apache.catalina.core.StandardEngine startInternal INFO: 서버 엔진을 시작합니다: [Apache Tomcat/10.1.7] 3월 19, 2023 5:15:30 오후 org.apache.jasper.servlet.TldScanner scanJars INFO: 적어도 하나의 JAR가 TLD들을 찾기 위해 스캔되었으나 아무 것도 찾지 못했습니다. 스캔했으나 TLD가 없는 JAR들의 전체 목록을 보시려면, 로그 레벨을 디버그 레벨로 설정하십시오. 스캔 과정에서 불필요한 JAR들을 건너뛰면, 시스템 시작 시간과 JSP 컴파일 시간을 단축시킬 수 있습니다. MyContainerInitV1.onStartup MyContainerInitV1 c = null MyContainerInitV1 ctx = org.apache.catalina.core.ApplicationContextFacade@4c5474f5 MyContainerInitV2.onStartup MyContainerInitV2 c = [class hello.container.AppInitV1Servlet, class hello.container.AppInitServlet] MyContainerInitV2 ctx = org.apache.catalina.core.ApplicationContextFacade@4c5474f5 AppInitServlet.onStartup AppInitServlet.onStartup 3월 19, 2023 5:15:30 오후 org.apache.catalina.core.ContainerBase startInternal SEVERE: 자식 컨테이너를 시작 중 실패했습니다. java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: 구성요소 [StandardEngine[Catalina].StandardHost[ localhost ].StandardContext[]]을(를) 시작하지 못했습니다. at java.base/java.util.concurrent.FutureTask.report( FutureTask.java:122 ) at java.base/java.util.concurrent.FutureTask.get( FutureTask.java:191 ) at org.apache.catalina.core.ContainerBase.startInternal( ContainerBase.java:878 ) at org.apache.catalina.core.StandardHost.startInternal( StandardHost.java:846 ) at org.apache.catalina.util.LifecycleBase.start( LifecycleBase.java:183 ) at org.apache.catalina.core.ContainerBase$StartChild.call( ContainerBase.java:1332 ) at org.apache.catalina.core.ContainerBase$StartChild.call( ContainerBase.java:1322 ) at java.base/java.util.concurrent.FutureTask.run( FutureTask.java:264 ) at org.apache.tomcat.util.threads.InlineExecutorService.execute( InlineExecutorService.java:75 ) at java.base/java.util.concurrent.AbstractExecutorService.submit( AbstractExecutorService.java:145 ) at org.apache.catalina.core.ContainerBase.startInternal( ContainerBase.java:871 ) at org.apache.catalina.core.StandardEngine.startInternal( StandardEngine.java:241 ) at org.apache.catalina.util.LifecycleBase.start( LifecycleBase.java:183 ) at org.apache.catalina.core.StandardService.startInternal( StandardService.java:428 ) at org.apache.catalina.util.LifecycleBase.start( LifecycleBase.java:183 ) at org.apache.catalina.core.StandardServer.startInternal( StandardServer.java:913 ) at org.apache.catalina.util.LifecycleBase.start( LifecycleBase.java:183 ) at org.apache.catalina.startup.Catalina.start( Catalina.java:795 ) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke( NativeMethodAccessorImpl.java:77 ) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke( DelegatingMethodAccessorImpl.java:43 ) at java.base/java.lang.reflect.Method.invoke( Method.java:568 ) at org.apache.catalina.startup.Bootstrap.start( Bootstrap.java:347 ) at org.apache.catalina.startup.Bootstrap.main( Bootstrap.java:478 ) Caused by: org.apache.catalina.LifecycleException: 구성요소 [StandardEngine[Catalina].StandardHost[ localhost ].StandardContext[]]을(를) 시작하지 못했습니다. at org.apache.catalina.util.LifecycleBase.handleSubClassException( LifecycleBase.java:440 ) at org.apache.catalina.util.LifecycleBase.start( LifecycleBase.java:198 ) at org.apache.catalina.core.ContainerBase$StartChild.call( ContainerBase.java:1332 ) at org.apache.catalina.core.ContainerBase$StartChild.call( ContainerBase.java:1322 ) at java.base/java.util.concurrent.FutureTask.run( FutureTask.java:264 ) at org.apache.tomcat.util.threads.InlineExecutorService.execute( InlineExecutorService.java:75 ) at java.base/java.util.concurrent.AbstractExecutorService.submit( AbstractExecutorService.java:145 ) at org.apache.catalina.core.ContainerBase.startInternal( ContainerBase.java:871 ) ... 21 more Caused by: java.lang.RuntimeException: java.lang.NullPointerException: Cannot invoke "jakarta.servlet.ServletRegistration$Dynamic.addMapping(String[])" because "helloServlet" is null at hello.container.MyContainerInitV2.onStartup( MyContainerInitV2.java:26 ) at org.apache.catalina.core.StandardContext.startInternal( StandardContext.java:4875 ) at org.apache.catalina.util.LifecycleBase.start( LifecycleBase.java:183 ) ... 27 more Caused by: java.lang.NullPointerException: Cannot invoke "jakarta.servlet.ServletRegistration$Dynamic.addMapping(String[])" because "helloServlet" is null at hello.container.AppInitServlet.onStartup( AppInitServlet.java:15 ) at hello.container.MyContainerInitV2.onStartup( MyContainerInitV2.java:24 ) ... 29 more 3월 19, 2023 5:15:30 오후 org.apache.catalina.core.ContainerBase startInternal SEVERE: 자식 컨테이너를 시작 중 실패했습니다. java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: 자식 컨테이너를 시작 중 실패했습니다. at java.base/java.util.concurrent.FutureTask.report( FutureTask.java:122 ) at java.base/java.util.concurrent.FutureTask.get( FutureTask.java:191 ) at org.apache.catalina.core.ContainerBase.startInternal( ContainerBase.java:878 ) at org.apache.catalina.core.StandardEngine.startInternal( StandardEngine.java:241 ) at org.apache.catalina.util.LifecycleBase.start( LifecycleBase.java:183 ) at org.apache.catalina.core.StandardService.startInternal( StandardService.java:428 ) at org.apache.catalina.util.LifecycleBase.start( LifecycleBase.java:183 ) at org.apache.catalina.core.StandardServer.startInternal( StandardServer.java:913 ) at org.apache.catalina.util.LifecycleBase.start( LifecycleBase.java:183 ) at org.apache.catalina.startup.Catalina.start( Catalina.java:795 ) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke( NativeMethodAccessorImpl.java:77 ) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke( DelegatingMethodAccessorImpl.java:43 ) at java.base/java.lang.reflect.Method.invoke( Method.java:568 ) at org.apache.catalina.startup.Bootstrap.start( Bootstrap.java:347 ) at org.apache.catalina.startup.Bootstrap.main( Bootstrap.java:478 ) Caused by: org.apache.catalina.LifecycleException: 자식 컨테이너를 시작 중 실패했습니다. at org.apache.catalina.core.ContainerBase.startInternal( ContainerBase.java:890 ) at org.apache.catalina.core.StandardHost.startInternal( StandardHost.java:846 ) at org.apache.catalina.util.LifecycleBase.start( LifecycleBase.java:183 ) at org.apache.catalina.core.ContainerBase$StartChild.call( ContainerBase.java:1332 ) at org.apache.catalina.core.ContainerBase$StartChild.call( ContainerBase.java:1322 ) at java.base/java.util.concurrent.FutureTask.run( FutureTask.java:264 ) at org.apache.tomcat.util.threads.InlineExecutorService.execute( InlineExecutorService.java:75 ) at java.base/java.util.concurrent.AbstractExecutorService.submit( AbstractExecutorService.java:145 ) at org.apache.catalina.core.ContainerBase.startInternal( ContainerBase.java:871 ) ... 13 more Caused by: java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: 구성요소 [StandardEngine[Catalina].StandardHost[ localhost ].StandardContext[]]을(를) 시작하지 못했습니다. at java.base/java.util.concurrent.FutureTask.report( FutureTask.java:122 ) at java.base/java.util.concurrent.FutureTask.get( FutureTask.java:191 ) at org.apache.catalina.core.ContainerBase.startInternal( ContainerBase.java:878 ) ... 21 more Caused by: org.apache.catalina.LifecycleException: 구성요소 [StandardEngine[Catalina].StandardHost[ localhost ].StandardContext[]]을(를) 시작하지 못했습니다. at org.apache.catalina.util.LifecycleBase.handleSubClassException( LifecycleBase.java:440 ) at org.apache.catalina.util.LifecycleBase.start( LifecycleBase.java:198 ) at org.apache.catalina.core.ContainerBase$StartChild.call( ContainerBase.java:1332 ) at org.apache.catalina.core.ContainerBase$StartChild.call( ContainerBase.java:1322 ) at java.base/java.util.concurrent.FutureTask.run( FutureTask.java:264 ) at org.apache.tomcat.util.threads.InlineExecutorService.execute( InlineExecutorService.java:75 ) at java.base/java.util.concurrent.AbstractExecutorService.submit( AbstractExecutorService.java:145 ) at org.apache.catalina.core.ContainerBase.startInternal( ContainerBase.java:871 ) ... 21 more Caused by: java.lang.RuntimeException: java.lang.NullPointerException: Cannot invoke "jakarta.servlet.ServletRegistration$Dynamic.addMapping(String[])" because "helloServlet" is null at hello.container.MyContainerInitV2.onStartup( MyContainerInitV2.java:26 ) at org.apache.catalina.core.StandardContext.startInternal( StandardContext.java:4875 ) at org.apache.catalina.util.LifecycleBase.start( LifecycleBase.java:183 ) ... 27 more Caused by: java.lang.NullPointerException: Cannot invoke "jakarta.servlet.ServletRegistration$Dynamic.addMapping(String[])" because "helloServlet" is null at hello.container.AppInitServlet.onStartup( AppInitServlet.java:15 ) at hello.container.MyContainerInitV2.onStartup( MyContainerInitV2.java:24 ) ... 29 more 3월 19, 2023 5:15:30 오후 org.apache.catalina.startup.Catalina start SEVERE: 필수 항목인 서버 구성요소가 제대로 시작되지 못하여, Tomcat이 시작될 수 없습니다. org.apache.catalina.LifecycleException: 자식 컨테이너를 시작 중 실패했습니다. at org.apache.catalina.core.ContainerBase.startInternal( ContainerBase.java:890 ) at org.apache.catalina.core.StandardEngine.startInternal( StandardEngine.java:241 ) at org.apache.catalina.util.LifecycleBase.start( LifecycleBase.java:183 ) at org.apache.catalina.core.StandardService.startInternal( StandardService.java:428 ) at org.apache.catalina.util.LifecycleBase.start( LifecycleBase.java:183 ) at org.apache.catalina.core.StandardServer.startInternal( StandardServer.java:913 ) at org.apache.catalina.util.LifecycleBase.start( LifecycleBase.java:183 ) at org.apache.catalina.startup.Catalina.start( Catalina.java:795 ) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke( NativeMethodAccessorImpl.java:77 ) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke( DelegatingMethodAccessorImpl.java:43 ) at java.base/java.lang.reflect.Method.invoke( Method.java:568 ) at org.apache.catalina.startup.Bootstrap.start( Bootstrap.java:347 ) at org.apache.catalina.startup.Bootstrap.main( Bootstrap.java:478 ) Caused by: java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: 자식 컨테이너를 시작 중 실패했습니다. at java.base/java.util.concurrent.FutureTask.report( FutureTask.java:122 ) at java.base/java.util.concurrent.FutureTask.get( FutureTask.java:191 ) at org.apache.catalina.core.ContainerBase.startInternal( ContainerBase.java:878 ) ... 13 more Caused by: org.apache.catalina.LifecycleException: 자식 컨테이너를 시작 중 실패했습니다. at org.apache.catalina.core.ContainerBase.startInternal( ContainerBase.java:890 ) at org.apache.catalina.core.StandardHost.startInternal( StandardHost.java:846 ) at org.apache.catalina.util.LifecycleBase.start( LifecycleBase.java:183 ) at org.apache.catalina.core.ContainerBase$StartChild.call( ContainerBase.java:1332 ) at org.apache.catalina.core.ContainerBase$StartChild.call( ContainerBase.java:1322 ) at java.base/java.util.concurrent.FutureTask.run( FutureTask.java:264 ) at org.apache.tomcat.util.threads.InlineExecutorService.execute( InlineExecutorService.java:75 ) at java.base/java.util.concurrent.AbstractExecutorService.submit( AbstractExecutorService.java:145 ) at org.apache.catalina.core.ContainerBase.startInternal( ContainerBase.java:871 ) ... 13 more Caused by: java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: 구성요소 [StandardEngine[Catalina].StandardHost[ localhost ].StandardContext[]]을(를) 시작하지 못했습니다. at java.base/java.util.concurrent.FutureTask.report( FutureTask.java:122 ) at java.base/java.util.concurrent.FutureTask.get( FutureTask.java:191 ) at org.apache.catalina.core.ContainerBase.startInternal( ContainerBase.java:878 ) ... 21 more Caused by: org.apache.catalina.LifecycleException: 구성요소 [StandardEngine[Catalina].StandardHost[ localhost ].StandardContext[]]을(를) 시작하지 못했습니다. at org.apache.catalina.util.LifecycleBase.handleSubClassException( LifecycleBase.java:440 ) at org.apache.catalina.util.LifecycleBase.start( LifecycleBase.java:198 ) at org.apache.catalina.core.ContainerBase$StartChild.call( ContainerBase.java:1332 ) at org.apache.catalina.core.ContainerBase$StartChild.call( ContainerBase.java:1322 ) at java.base/java.util.concurrent.FutureTask.run( FutureTask.java:264 ) at org.apache.tomcat.util.threads.InlineExecutorService.execute( InlineExecutorService.java:75 ) at java.base/java.util.concurrent.AbstractExecutorService.submit( AbstractExecutorService.java:145 ) at org.apache.catalina.core.ContainerBase.startInternal( ContainerBase.java:871 ) ... 21 more Caused by: java.lang.RuntimeException: java.lang.NullPointerException: Cannot invoke "jakarta.servlet.ServletRegistration$Dynamic.addMapping(String[])" because "helloServlet" is null at hello.container.MyContainerInitV2.onStartup( MyContainerInitV2.java:26 ) at org.apache.catalina.core.StandardContext.startInternal( StandardContext.java:4875 ) at org.apache.catalina.util.LifecycleBase.start( LifecycleBase.java:183 ) ... 27 more Caused by: java.lang.NullPointerException: Cannot invoke "jakarta.servlet.ServletRegistration$Dynamic.addMapping(String[])" because "helloServlet" is null at hello.container.AppInitServlet.onStartup( AppInitServlet.java:15 ) at hello.container.MyContainerInitV2.onStartup( MyContainerInitV2.java:24 ) ... 29 more 3월 19, 2023 5:15:30 오후 org.apache.coyote.AbstractProtocol pause INFO: 프로토콜 핸들러 ["http-nio-8080"]을(를) 일시 정지 중 3월 19, 2023 5:15:30 오후 org.apache.catalina.core.StandardService stopInternal INFO: 서비스 [Catalina]을(를) 중지시킵니다. 3월 19, 2023 5:15:30 오후 org.apache.coyote.AbstractProtocol destroy INFO: 프로토콜 핸들러 ["http-nio-8080"]을(를) 소멸시킵니다. 3월 19, 2023 5:15:30 오후 org.apache.catalina.loader.WebappClassLoaderBase clearReferencesObjectStreamClassCaches WARNING: Java 9 또는 이후 버전을 사용할 때에는, "--add-opens=java.base/java.io=ALL-UNNAMED" 을(를) JVM 명령행 아규먼트들에 추가해서, ObjectStream 캐시 메모리 릭 방지 옵션을 활성화할 필요가 있습니다. 또는 원하시는 경우, ObjectStream 클래스 캐시 메모리 릭 방지 옵션을 비활성화해서 이 경고 메시지를 없앨 수도 있습니다. 3월 19, 2023 5:15:30 오후 org.apache.catalina.loader.WebappClassLoaderBase checkThreadLocalsForLeaks WARNING: ThreadLocal 메모리 누수 탐지를 위해서는 "--add-opens=java.base/java.lang=ALL-UNNAMED" 자바 명령 행 아규먼트를 추가하십시오. 또는 이 경고 메시지를 없애고 싶다면 ThreadLocal 메모리 누수 탐지 옵션을 비활성화 시키십시오. 3월 19, 2023 5:15:30 오후 org.apache.catalina.loader.WebappClassLoaderBase clearReferencesRmiTargets WARNING: Java 9에서 실행하면서 RMI Target 메모리 누수 탐지를 사용 가능하게 하려면, "--add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED"를 JVM 명령 행 아규먼트에 추가해야 합니다. 또는, RMI Target 메모리 누수 탐지를 사용불능 상태로 설정함으로써, 이 경고를 없앨 수도 있습니다. Process finished with exit code 0

  • spring
  • spring-boot
  • prometheus
  • grafana
박준호 댓글 2 좋아요 0 조회수 1251

./gradlew가 powershell에선 작동하는데 git bash에서는 작동 안되는 이유

미해결

스프링 부트 - 핵심 원리와 활용

안녕하세요 내장톰캣 강의를 따라하던 중 ./gradlew build에서 에러가 나서 문의드립니다. 현재 설정정보 사진으로 첨부합니다. 현재 인텔리제이 터미널로는 git bash를 사용하고 있습니다. 다 17로 맞췄습니다. 그런데 신기한 점이 있는데 여기서 ./gradlew build --clean를 하면 build failed가 뜹니다. 하지만 powershell에선 성공합니다. jar 파일이 잘 생기구요 그리고 powershell에서 java version를 확인하면 git bash와 동일합니다. 여기서 git bash에서 gradlew 가 안되는 이유는 뭘까요?

  • spring
  • spring-boot
  • prometheus
  • grafana
youngyou1324 댓글 2 좋아요 0 조회수 612

한글이 깨지고 로그가 안찍히네요 ㅠ

해결됨

스프링 부트 - 핵심 원리와 활용

톰켓 설정 강의에서 하라는 대로 실행을 하였더니 페이지는 잘 뜨는데 한글이 깨지고 TestServlet.service 로그가 안찍히는데 왜그러는지 모르겠어요 ㅠ

  • spring
  • spring-boot
  • prometheus
  • grafana
댓글 1 좋아요 0 조회수 557

외부 파일 주입

미해결

스프링 부트 - 핵심 원리와 활용

안녕하세요, 외부 파일 경우, application.properties를 만들어두고,서 강의와 같이 url=dev.db.com23 username=dev_user23 password=dev_pw23 를 저장해 두었더니, 2023-03-18T10:44:03.240+09:00 INFO 17556 --- [ main] hello.EnvironmentCheck : env url=dev.db.com23 2023-03-18T10:44:03.240+09:00 INFO 17556 --- [ main] hello.EnvironmentCheck : env username=um950 2023-03-18T10:44:03.240+09:00 INFO 17556 --- [ main] hello.EnvironmentCheck : env password=dev_pw23 라고 출력이 됩니다. username만 제대로 나오지 않는데요, 현재 출려고딘 um950이 제 윈도우 계정이거든요... 뭔가 더 높은 우선순위로 잡혀있는 것 같은데 이 부분은 어디서 고치거나/확인 할 수 있을까요...?

  • spring
  • spring-boot
  • prometheus
  • grafana
suyeonjung 댓글 1 좋아요 3 조회수 845

스칼라타입 형변환 질문드립니다

미해결

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

기본적인 개념같아서 구글링도 해봤는데 object 와 object[] 배열간의 형변환에 대한 내용이 안보여서 질문드립니다. 다름이 아니라 Object o = resultList.get(); Object[] result = (Object[])0; 에서 왜 Object 타입에서 Object[] 타입으로 형변환을 해야하는지, 그냥 o[0], o[1] ... 로 쓰면 왜 컴파일 오류가 나는지 궁금합니다. Object 타입에서 어떻게 Object[] 타입으로 형변환이 가능한지 궁금합니다. Obect[] 배열은 Object가 여러개 포함된 배열 아닌가요?.. 아니면 Object 타입이 Object[] 타입까지도 포함한 포괄적인 개념이라 위처럼 형변환이 가능한 건가요? 기본적인 내용같은데 개념이 잘 이해가 안가서 질문드립니다 ㅠㅠ

  • java
  • jpa
hw h 댓글 1 좋아요 0 조회수 430

영속성 컨텍스트에 프록시 객체도 저장이 되나요?

미해결

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

영속성 컨텍스트에 프록시 객체도 저장이 되나요? 강의 내용중 프록시 객체의 초기화를 보면 getName()을 요청했을때 최초의 요청이면 영속성 컨텍스트에서 조회를 하고 DB에서 조회를 한다고 나와있는데 .getReference를 했을때 생성되는 프록시객체도 영속성컨텍스트에서 관리를 하나요? 그리고 .getName을 요청해서 실제 엔티티를 받아오게되면 이 객체도 영속성 컨텍스트에서 관리를하나요? 그리고 2번째 .getName 메서드를 요청해도 꼭 프록시 객체를 거쳐서 값을 받게되나요?

  • java
  • jpa
YOGURT 댓글 1 좋아요 1 조회수 816

Actuator를 Auto scaling 구조에서 Prometheus 모니터링 지표 수집은 어떻게 되나요?

미해결

스프링 부트 - 핵심 원리와 활용

안녕하세요 Actuator Prometheus 공부를 하면서 의문이 하나 생겨 질문 드립니다! 1개의 서버의 Spring application에서 Prometheus 수집하는게 아닌 분산환경에서 actuator를 Prometheus에 연동해도 Grafana에 수집 되는 metric이 알맞은 지표로 수집되는지 궁금합니다! 만약 아니라면 어떤식으로 구성해야되는지 궁금합니다.

  • spring
  • spring-boot
  • prometheus
  • grafana
xorals94 댓글 1 좋아요 0 조회수 542

낙관적 락, 비관적 락 말고 항상 분산락을 쓰는게 좋을까요?

미해결

재고시스템으로 알아보는 동시성이슈 해결방법

공부하다가 의문이 생겼는데요, 낙관적 락 - 충돌 잦으면 락 획득 재시도 로직 때문에 성능 안좋음 비관적 락 - 충돌 잦으면 낙관적 락보다 성능좋음. 분산 락 - 스케일 아웃된 DB 환경에서도 사용 가능 - Redis 라이브러리마다 다른데 Lettuce는 스핀락으로 구현되서 재시도 많으면 불리 Redisson은 pub-sub 기반이라 재시도 많으면 유리 정확하진 않지만 이렇게 알고있습니다. 질문은 1. 잘못 알고 있나요? 2. 제가 공부한게 맞다면, 무조건 비관적 락, 낙관적 락 말고 분산락 + Redis(Lettuce/Redisson) 쓰는게 좋은건가요?

  • java
  • spring
  • 동시성
kevin 댓글 1 좋아요 1 조회수 3271

인기 태그

인프런 TOP Writers

주간 인기글