묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 핵심 원리 - 기본편
ObjectProvider와 new 객체 생성의 차이
해당 강의에서 ObjectProvider를 사용하여 DL 방식으로 컨테이너에서 PrototypeBean 객체를 찾고 PrototypeBean은 prototype 스코프이므로 새로운 객체를 생성하고 반환해준다고 이해했습니다.새로운 객체를 생성하여 반환하는 것이라면 굳이 ObjectProvider를 사용하지 않고 new 객체를 생성하여 사용해도 되지 않을까요? 이 부분이 궁금해서 질문드립니다.제 생각에는 ObjectProvider를 사용하면 만약 prototype 스코프의 객체가 다른 객체를 자동으로 주입받아야 할 때 new 객체는 사용자가 의존관계를 주입해주어야 하므로 문제가 생깁니다. 따라서 스프링의 DI 기능을 사용하기 위해 사용하는 것 같다고 생각됩니다.<ObjectProvider 사용> @Scope("singleton") static class ClientBean { @Autowired private ObjectProvider<PrototypeBean> prototypeBeanProvider; public int logic() { PrototypeBean prototypeBean = prototypeBeanProvider.getObject(); prototypeBean.addCount(); return prototypeBean.getCount(); } }<new 객체 사용> @Scope("singleton") static class ClientBean { public int logic() { PrototypeBean prototypeBean = new PrototypeBean(); prototypeBean.addCount(); return prototypeBean.getCount(); } }
-
미해결Practical Testing: 실용적인 테스트 가이드
ProductNumber 계산 로직
안녕하십니까! 먼저 항상 좋은 강의 감사드립니다.특히 이번 강의에서는 Transaction에서 readOnly 옵션을 사용하므로써 JPA 최적화를 통해 성능 향상을 이점을 얻을 수 있다와 함께,CQRS 측면을 말씀해 주셔서 좋았습니다!저의 경우는 아직 master/slave DB 구조를 다뤄본적이 없어서 몰랐는데, 이렇게 readOnly 옵션을 사용할 경우 DB endpoint를 구분하여 명시하므로써 master/slave DB 구조를 사용할 수 있다는 측면도 알게되어서 좋았습니다.본론으로 넘어가서, Q1. ProductNumber를 계산하는 로직을 DB에서 최신값을 읽어온 후에 ,그 값을 기반으로 다음 productNumber 값을 계산하는 로직을 저의 경우는 동시성 이슈를 고려하여 , 1.일단 SaveAndFlush()로 Id를 할당받고 2. 그 Id 값으로 만들자 라는 로직을 사용하였습니다.(IDENTITY 전략이므로 테이블당 1부터 Id가 할당되기 때문에 가능)이러한 저의 로직에 문제가 있는지 피드백 주시면 정말 감사하겠습니다.특히 calculateProductNumber() 메소드를 저의 경우는 도메인 주도 전략에 기반하여 서비스의 private Method로 정의하지 않고 , Entity 안에 정의하여 사용하는 편인데, 이러한 스타일에 대해서도 문제가 없을지 여쭤보고 싶습니다.Q2.두번째로 저의 경우는 createProduct() 메소드 테스트를 1.처음 생성일의자리 productNumber로 생성십의자리 productNumber로 생성백의자리 productNumber로 생성1000개를 넘어가면 예외발생으로 구분하여 테스트 하였습니다.그런데 이 테스트를 한꺼번에 돌렸을 땐 직전 테스트로 이미 저장된 Product에 의해 다음 테스트에 영향을 미쳐 일부 테스트가 실패하는 상황이 발생하였습니다.이상황을 어떻게 해결할 수 있을지 질문 드리고 싶고(sleep() 으로 간격을 주어야 할까요,,)또한 이 원인이 테스트를 한꺼번에 실행시킬 경우,각 테스트 메소드가 각 쓰레드로 동시에 실행되기 때문인지여쭤보고 싶습니다! 감사합니다.
-
해결됨Kevin의 알기 쉬운 Spring Reactive Web Applications: Reactor 1부
Flux의 에러
Flux에서 3개의 데이터 중 2개만 성공하는 경우 어떤식으로 처리가 되나요? 한 개만 실패해도 onError signal을 받게 되나요?만약 2개가 에러가 나면 두 개의 errorsignal을 받나요?
-
미해결스프링 핵심 원리 - 기본편
@PostConstruct 호출시점 질문드립니다 :)
[질문 내용]request 객체는 스프링 컨테이너에 요청하는 시점에 생성되므로, 클라이언트가 브라우저에 url을 입력하고 전송하는 시점을 의미하는 것으로 이해하고 있습니다. 예제의 실행 결과를 보면 @PostConstruct가 호출된 결과보다 컨트롤러 메서드의 myLogger.getClass()를 호출한 결과가 먼저 출력되는 것을 확인할 수 있습니다. 컨트롤러 메서드가 실행되자마자 request객체가 생성되기 때문에 즉시 @PostConstruct가 호출되고 나머지 컨트롤러의 문장들이 실행되어야 할 것 같은데 실제로는 그런 결과가 나오지 않아서 이유가 궁금해 질문 남깁니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
윈도우 cmd창에서 java -jar 명령어 실행 안되는 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 아니오3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]자바 환경변수 - > 설정 완료재부팅 -> 완료두가지 전부 해봤는데 아무 반응이 없습니다.bulid -> libs 디렉토리에서 java -jar ~~ 명령어 실행이 안됩니다. 확인하실 때 필요한 사진이나 파일 있으면 알려주시면 감사하겠습니다 // 사진 첨부2-1.2-2.
-
미해결윤재성의 만들면서 배우는 Spring MVC 5
자바 상단메뉴 셋팅 다하고 실행시키니 에러가 납니다.
에러가 나는데 알수가 없어요..ㅜ.ㅠBean객체 생성이 안된다고 줄줄이 나는데 왜 그런건지..아래와 같이 나옵니다.org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'servletAppContext': Unsatisfied dependency expressed through field 'topMenuService'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'topMenuService' defined in file [C:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\MiniProjectJava\WEB-INF\classes\kr\co\softcampus\service\TopMenuService.class]: Post-processing of merged bean definition failed; nested exception is java.lang.IllegalStateException: Failed to introspect Class [kr.co.softcampus.service.TopMenuService] from ClassLoader [ParallelWebappClassLoadercontext: MiniProjectJavadelegate: false
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
계속 복습중이고 새로운 사이트를 만드는 중인데
spring: profiles: active: local datasource: url: "jdbc:h2:mem:balance;MODE=MYSQL;NON_KEYWORDS=USER" username: "sa" password: "" driver-class-name: org.h2.Driver jpa: hibernate: ddl-auto: create properties: hibernate: show_sql: true format_sql: true dialect: org.hibernate.dialect.H2Dialect h2: console: enabled: true path: /h2-console server: port: 8081 --- spring: profiles: active: dev datasource: url: "jdbc:mysql://localhost/balance" username: "root" password: "Abcd1234!" driver-class-name: com.mysql.cj.jdbc.Driver jpa: hibernate: ddl-auto: none properties: hibernate: format_sql: true show_sql: true dialect: org.hibernate.dialect.MySQL8Dialect server: port: 8081여기서 틀린게 있나요?프로파일이 local로 되어있어도 mysql 로연결하고 h2 로 연결되어도 create인데도 쿼리문이 안뜹니다 ㅠㅠ
-
해결됨스프링 핵심 원리 - 기본편
안녕하세요 지금까지 배웠던 내용을 정리하고 있는데 맞게 정리를 한건지 궁금해서 질문을 합니다.
[질문 내용]스프링 컨테이너에 스프링 빈을 등록 할때 등록이 되는 빈들은 스프링 컨테이너가 관리해줬으면 하는 객체들을 저장하는 거다. 그리고 스프링 컨테이너에 스프링 빈을 등록하는 가장 큰 이유는 의존관계 주입을 스프링 컨테이너에 맡겨서 좋은 객체지향 약속들을(OCP, DIP) 지키기 위해서다.스프링 빈이 등록 될때 키 : 값 => 빈 이름 : 빈 객체로 저장이 된다. 스프링 빈에 등록을 할때는 @Configuration과 @Bean을 이용해서 수동으로 등록을 할 수 있고 @ComponetScan을 사용해서 @Componet, @Service, @Controller, @Repository가 붙은 클래스들을 자동으로 등록을 할 수가 있다.수동으로 등록을 할때에는 빈 이름은 메소드 이름이 빈 객체는 해당 메소드가 반환하는 객체가 자동으로 등록을 할때에는 빈 이름은 클래스 이름이(클래스 이름 맨 앞에는 소문자) 빈 객체는 해당 클래스의 객체가 저장이 된다.수동으로 등록 할때 주의 할 점은 @Bean만 쓰면 스프링 빈으로 등록이 되지만 싱글톤으로 관리 되지는 않는다 싱글톤으로 관리 되기 위해서는 @Configuration과 @Bean을 같이 써야 한다.감사합니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
인스턴스에 대한 질문입니다.
새로운 인스턴스를 만드려는데 t2micro 처럼 1년간 무료인 애들은 어떤애들이 있는지 어떻게 알수 있을까요?? 1년간 공짜인 애들은 t2밖에없나요??아님 모든 인스턴스가 그런가요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
경로문제 제가이해한게 맞는지 추가질문입니다.
https://www.inflearn.com/questions/1031594/%EC%97%84%EC%B2%AD-%EA%B8%B0%EC%B4%88%EC%9D%B8%EB%8D%B0-%EA%B8%B0%EC%96%B5%EC%9D%B4%EC%95%88%EB%82%98%EB%84%A4%EC%9A%94-%E3%85%A0%E3%85%A0-%EA%B2%BD%EB%A1%9C%EB%AC%B8%EC%A0%9C에 대해 제가 이해한게 맞는지 질문드립니다.만일 @RequestMapping("/basic")이있고 @GetMapping("text-basic") @GetMapping("/text-basic") 두개가있으면 위는 /basic/text-basic에 매핑되는 거고아래는 /text-basic에 매핑되는게 맞나요??
-
미해결스프링 시큐리티 OAuth2
JWT 자체 검증에 대해서 질문드립니다
강의 막바지에 인가서버에서는 개인키로 서명하고, 자원 서버에서는 공개키로 검증한다고 하셨는데, 말그대로 공개키는 노출되어있는 키여서, 누구나 검증할 수 있어서 보안적인 측면에서 취약한거 아닌가요?? 공개키로 서명하고 -> 리소스 서버에서 개인키로 검증해야하는게 맞지 않나 싶어서 질문드립니다
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
테스트코드 콘솔에 sql코드
강의 영상에서 강사님 콘솔에는 테스트 코드를 돌려도 SQL코드가 뜨는데 저는 뜨질 않습니다.버전이 유료버전이라 뜨는건가요?
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
서블릿 mvc 회원 조회 에러
서블릿, JSP는 다 회원 조회가 되던데서블릿 mvc는 오타도 없는데 계속 찾아보고 해도화이트 라벨 에러 페이지만 뜨길래 예외 메시지를 보니According to TLD or attribute directive in tag file, attribute [items] does not accept any expressions가 있길래 검색해보니members.jsp에서<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>를<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>로 변경해주니까 정상적으로 페이지에 뜨더라구요..버전 차이때문이라는데 이것도 pdf에 추가되어야 되지 않을까 해서 올려봅니다.
-
미해결스프링 핵심 원리 - 기본편
주문과 할인 도메인 실행과 테스트 강의에서 OrderServiceImpl.java
package hello.core.order; import hello.core.discount.DiscountPolicy; import hello.core.discount.FixDiscountPolicy; import hello.core.member.Member; import hello.core.member.MemberRepository; import hello.core.member.MemoryMemberRepository; import org.springframework.core.annotation.Order; 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 discountPrice = discountPolicy.discount(member, itemPrice); return new Order(memberId, itemName, itemPrice, discountPrice); } }주문과 할인 도메인 실행과 테스트 강의에서 OrderServiceImpl.java 입니다java: org.springframework.core.annotation.Order is abstract; cannot be instantiated이런 오류가 뜨는데 어떻게해야할까요?
-
미해결spring boot actuator 파헤치기
AtomicLong
AtomicLong을 쓰신 이유가 있으신가요?
-
미해결실전! 스프링 데이터 JPA
스프링 데이터 JPA Repository 구현체에 관해서 질문 있습니다!
안녕하세요. Spring Data Jpa Repository의 구현체에 대해서 공부하다가 궁금한 점이 생겨서 질문 드립니다. 우선 기본적인 CRUD 쿼리를 위한 MemberRepository를 만들고 Repository가 스프링 빈으로 등록될 때 SimpleJpaRepository 타입으로 등록되는지 확인 해보고 싶어서 테스트 코드를 짰습니다. 우선 ApplicationContext를 @Autowired로 주입 받고 그 안에 MemberRepository 타입의 스프링 빈을 반환 받아서 인스턴스 참조값과 클래스 타입을 각각 출력해 봤습니다. 결과 값은 다음과 같았습니다. MemberRepository 타입으로 JDK 동적 프록시를 이용해 만들어진 프록시 객체가 스프링 컨테이너에 등록되어 있는 것을 확인했습니다. 여기서 2가지의 질문이 생겼는데요.첫 번째로, 제가 알고 있는 지식 내에서는 프록시 객체를 생성하는 이유가 JPA의 예외를 스프링 예외로 전환하는 기능을 추가하기 위해서 인데 이것이 맞는지,두 번째로, 첫 번째가 맞다면 구현 클래스가 존재하는데 왜 스프링의 프록시 생성 기본 전략인 CGLIB를 사용하지 않고 JDK 동적 프록시를 사용 했는지가 궁금합니다. 좋은 강의 들려주셔서 항상 감사드립니다!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
build gradle 에러
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]이렇게 해서 프로젝트를 생성하고 gradle을 빌드하면No matching variant of org.springframework.boot:spring-boot-gradle-plugin:3.1.4 was found. The consumer was configured to find a library for use during runtime, compatible with Java 11, packaged as a jar, and its dependencies declared externally, as well as attribute 'org.gradle.plugin.api-version' with value '8.2.1' but: 라는 에러가 뜨는데 무엇이 문제인지 잘 모르겠습니다...
-
미해결spring boot actuator 파헤치기
보안관련 질문
안녕하세요 ~ 먼저 좋은강의 감사드립니다. actuator 정보들을 외부로 노출시키면 보안쪽으로는 좋지 않지 않을 것 같은 생각이 드는대요.마이크로서비스에서는 사내 호출일 경우에는 괜찮을것 같은대 외부로 열려있는 경우에는 어떻게 처리가 될까요?문득 생각이 들었습니다!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
테스트를 통과했는데 Member 테이블이 생성되지 않습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요.현재 '실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발 강의'에서 'JPA와 DB 설정, 동작확인' 강의를 듣고 있습니다.H2 데이터베이스에 연결하고, 테스트 코드를 실행해서 성공적으로 member테이블이 생성되었다고 나오는데, H2 콘솔에서는 생성이 되어있지 않네요.아래 스크린샷을 첨부합니다.무엇이 문제일까요?그리고 어떻게 하면 해결할 수 있는지 궁금합니다.감사합니다. 말씀해주신대로 설정을 다시 확인해봤는데요.datasouce 설정 밑에 connection을 지우면 에러가 나서 넣었습니다. 이게 문제일까요?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
BooleanExpression where 절
BooleanExpression를 querysdl where절에서 사용할 때콤마(,)를 and로 인식한다고 하셨는데 or는 어떻게 작성해야 하나요? (|)를 사용해야 할까요?