묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
jar와 war의 차이점을 명확하게 모르겠습니다
안녕하세요 공부를 하다가 jar와 war의 차이점에 대해 공부하다가 궁금한 점이 있어 질문 남겼습니다. 제가 알아본 결과war는 웹 어플리케이션 배포하기 위한 자바 아카이브 포맷으로 웹 어플리케이션을 구성하는 모든 요소를 하나의 아카이브로 묶어준다.jar는 자바 프로젝트를 압축한 파일로 class,라이브러리 파일을 포함한다. 라고 되어있습니다. 그런데 스프링 부트를 실행하면 static/경로에 있는 정적 리소스들은 자바 파일이 아닌데도 jar파일에 포함이 되어있습니다. 그러면 사실상 war나 jar파일은 둘 다 똑같은 파일들을 패키징하는거 아닌가요? 그저 내장된 서버에서 실행되느냐 아니면 외부 서버에서 실행되느냐의 차이뿐 아닌지 궁금합니다
-
해결됨죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.
[예시 코드 오타 제보]처형부탁한다
한다 제보를 KILL-9, 바란다 응답[제보 정보 수집중...🤖][KILL-9@user]$ cd 커리큘럼/섹션4/3장/작전1해킹 주문 데이터베이스 정찰 작전에서 프락치를 발견했다JdbcPagingItemReader 가 whereClause에 거짓 증거를 제출해서 혼란을 야기했다status = 'READY_FOR_SHIPMENT' 이고 not null 이어햐 하지 않을까 생각한다CANCELLED 가 아닌 것 같다다시 보니 작전에 혼동이 있는 것 같다 확인요망 🔥 유해 게시물 처형 작전 시스템에도 버그가 발견됐다전체코드에서 JpaCursorItemReader 에 queryString 조건이 잘못된 것 같다이후의 예시 코드들은 잘돼있지만전체코드 복사하는 녀석들이 많기 때문에 처리부탁한다[추가 처형 요청...💀][KILL-9@user]$ cd 커리큘럼/섹션3/2장/작전1글 쓰는 김에 한 녀석도 추가 제보하겠다FlatFileItemReader 고정길이 예제도 처형 부탁한다 소제목인 .columns() 예제 이미지가 정확하다하지만 예시코드라고 적혀있는 Range는 틀렸다 이것은 KILL-9 후보생의 혼란만 가중시킬뿐이다
-
미해결스프링 핵심 원리 - 기본편
안녕하세요 질문 컴파일 에러 문제에대해서 질문있습니다.
@Qualifier 에 관하여 질문이 있습니다. @Component @Qualifier("mainDiscountPolicy") public class RateDiscountPolicy implements DiscountPolicy @Component @Qualifier("fixDiscountPolicy") public class FixDiscountPolicy implements DiscountPolicy @Autowired public OrderServiceImpl(MemberRepository memberRepository,@Qualifier("mainDiscountPolicy") DiscountPolicy discountPolicy) { this.memberRepository = memberRepository; this.discountPolicy = discountPolicy; }이렇게 설정을하고 테스트를 돌리면 class AutoAppConfigTest { @Test void basicScan() { ApplicationContext ac = new AnnotationConfigApplicationContext(AutoAppConfig.class); DiscountPolicy bean = ac.getBean(DiscountPolicy.class); System.out.println("bean.getClass() = " + bean.getClass().getName()); } }위에 테스트에서 org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'hello.core.discount.DiscountPolicy' available: expected single matching bean but found 2: fixDiscountPolicy,rateDiscountPolicy중복 빈이 발생하는데 @Qualifier를 설정해도 중복 빈이 발생하는 이유는 무엇일까요?@Primart로 rateDiscount 를 우선 순위를 설정하면 테스트는 정상적으로 통과합니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
@RequestBody 객체 시 객체의 멤버변수를 필수로 받게 하려면 어떻게 해야하나요??
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]@RequestBody {객체} 변수명 시 객체의 멤버변수를 필수로 받게(없을 시 에러발생) 하려면 어떻게 해야하나요?? 이를 설정하는 옵션이 있을까요?? 궁금해서 테스트 해본 결과 멤버변수명과 다르게 요청을 보냈을 시 기본값으로 들어가는 것을 확인했습니다. 파라미터로 넘어온 객체에서 멤버변수를 각각 검증하는 단계를 거쳐야 하나요?
-
미해결나도! 스프링으로 인공지능을 할 수 있다(인프1탄)
Advisors 질문입니다.
예제를 따라하고 있는데요public ChatClient chatClient(ChatClient.Builder chatBuilder){ return chatBuilder .defaultAdvisors(new MessageChatMemoryAdvisor(new InMemoryChatMemory()).build();}이부분이 에러가 나서 MessageChatMemoryAdvisor를 생성을 못하는데요.. 어떻게 해야 할까요?spring ai버전이 1.0.0버전인데 버전에 따라 코드가 바뀌는것 같은데요..
-
해결됨실무 환경 그대로 주문게시판 만들기 웹개발 기초 마스터
강의 연장 문의
안녕하세요:)강의를 구매했다가 일정 때문에 모두 못들어서 강의 연장을 해서 꼭 강의를 모두 수강하고 싶습니다ㅜ혹시 강의 수강 기간 연장 진행해주실 수 있으실까요?확인 부탁드립니다.감사합니다.
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
@Transactional connection 얻는 시점
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]스프링에서 기본적인 설정으로 @Transactional 적용된 메서드를 실행했을 때 connection을 바로 풀에서 가져오나요 아니면 실제 DB상 쿼리를 날리기 전에 connection을 얻어와서 처리하나요??
-
미해결스프링 웹 MVC 완전정복
ppt 510 실습질문
클라이언트용 프록시 생성1. RestClient 사용private repository 라git repository collaborator mail 로 드렸어요https://github.com/insoou/study-springmvcbranch name: test/rest-client/http-interfaceClientProxy.java 테스트 파일에서 주석으로 표시 소스간략@Test void restClient(){ RestClient restClient = RestClient.builder().baseUrl("https://api.github.com/").build(); RestClientAdapter restClientAdapter = RestClientAdapter.create(restClient); HttpServiceProxyFactory httpServiceProxyFactory = HttpServiceProxyFactory.builderFor(restClientAdapter).build(); RepositoryService repositoryService = httpServiceProxyFactory.createClient(RepositoryService.class); // 요기서 에러나지는 않지만 디버시 첨부한 사진처럼 찜찜한 메세지가 남습니다. 저 메세지의 의미가 무엇인지 알고있으십니까? Map<String, Object> repository = repositoryService.getRepository("spring-projects", "spring-boot"); assert false==repository.isEmpty(); } 질문사진에 첨부했습니다리포지토리서비스 메서드 에러 던지기가 나오는 이유가 궁금한데 알고계신가요?
-
미해결Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트
update에서 Repository.save
dbEntity와 도메인으로 따로 분리하면 Jpa의 기능을 쓰지 못하기에 update부분에서 더티체킹을 사용하지 않고 Repository.save를 이용해 merge로 update한다는건데 이렇게 했을 때 merge는 하나하나 다른 부분을 수정하는게 아니고 전부 덮어 쓰는거라 이로 인해 발생할 수 있는 문제에 대해 신경 쓰지 않아도 되나요? 아니면 따로 처리를 해야하나요?
-
미해결실전! 스프링 데이터 JPA
영속성 전이와 연관관계
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요 선생님 강의를 통해 배움을 얻고 프로젝트를 하며 성장 하고 있습니다.프로젝트를 하던중 영속성 전이와 관련하여 궁금한점이 생겨 질문 드립니다.( 영한님 JPA 강의에 질문 하는것이 맞으나 JPA는 책을 사서 여기에 질문 드립니다 ㅠㅠ ) 회원과 주소는 양방향 관계를 두고 있습니다.회원과 주소를 연관관계 매핑하여 회원을 저장하면 영속성 전이를 통해주소가 같이 저장 됩니다. 그런데 문제는 둘다 영속 상태일때 주소를 제거 하면 delete 쿼리가 나가지 않았습니다.이런 저런 실험을 해본 결과 영속성 전이 때문에 삭제 되지 않은것으로 보았습니다.영속 대상인 주소를 삭제 하려고 했으나 회원의 연관관계인 Address는 그대로 있기 때문에영속성 전이로 인해 삭제가 되지 않았다로 판단 하였습니다. 영속성 컨텍스트에 주소만 있을 경우 주석 으로된 부분을 실행하면영속성 전이를 수행할 회원이 없기 때문에 delete 쿼리가 나가게 됩니다.제가 생각한게 맞는지 궁금하여 질문 드립니다. 밑의 예시의 경우 회원이 영속 상태인 경우영속성 전이 때문에 연관관계를 끊지 않으면 영속 대상인 주소가 delete가 안되는게 맞을까요? @DisplayName("회원과 연관된 주소를 제거할때 자식인 주소를 제거 하면 delete 쿼리가 발생하지 않는다.") @Test void deleteAddress() { //given User user = new User("회원"); Address address = new Address("주소"); address.connectUser(user); //when em.persist(user); em.flush(); boolean isAddressManaged = em.contains(address); System.out.println("Address is managed? " + isAddressManaged); addressRepository.deleteById(address.getId()); em.flush(); em.clear(); //then //Address findAddress = addressRepository.findById(address.getId()).orElseThrow() //addressRepository.deleteById(findAddress.getId()); //em.flush(); } [ 회원 ]@Getter @Setter @Table(name = "users") @Entity public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @OneToOne(mappedBy = "user", cascade = CascadeType.PERSIST) private Address address; protected User() {} private String name; public void connectAddress(Address address){ this.address = address; } }@Getter @Entity public class Address { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @OneToOne(fetch = FetchType.LAZY) @JoinColumn(name = "user_id") private User user; private String addressName; protected Address() {} public Address(String addressName) { this.addressName = addressName; } public void connectUser(User user){ this.user = user; user.connectAddress(this); } }
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
service 메서드를 실행하는 주체
1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요, 강의 수강 중 질문이 생겨 여쭤봅니다.Hello 서블릿 강의 내용 중 void service(HttpServletRequest request, HttpServletResponse response)에 대해 여쭤보고 싶습니다. 이 메서드는 서블릿 http 요청이 왔을 때 WAS가 request, response를 만들어 서블릿 컨테이너로 전달하는 과정일까요 ? 아니면 WAS에서 생성된 request, response를 서블릿 컨테이너가 받아서 service 메서드를 통해 내부적으로 동작 후 WAS에 다시 전달하는 과정일까요 ? 좋은 강의 제공해주셔서 항상 감사드립니다 !
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
로그인 후, redirect 에서 error
localhost:8080 에서 login 페이지로 넘어가고, 로그인을 하면, error?cutomerParam=y 주소로 넘어갑니다. 리다이렉트는 문제없이 잘 된거 같은데 어디서 에러가 생격서 savedRequest 객체에 error가 저장되는지 도통 모르겠네요;; 로그인 직후 network
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
th:object 커맨드 객체는 HTML의 FORM에서만 사용가능한가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]여기에 질문 내용을 남겨주세요.섹션 3.타임리프-스프링 통합과 폼25.입력 폼 처리 강의 내용 중 회원등록 폼과 회원수정 폼에서 th:object 커맨드 객체를 사용해 코드를 수정하였는데 이 커맨드 객체는 html의 <form>태그 안에서만 사용 가능한건가요? items.html 파일에서 .container클래스인 <div>태그에서는 사용하면 안 되는건가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
MemberService에서의 Autowired
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]섹션 5 강의 중 자바 코드로MemberService와 MemberRepository를 스프링 Bean으로 등록 후에 MemberController에서 MemberService객체를 사용할 때 @Autowired 어노테이션을 사용했는데 MemberService에서 MemberRepository 객체를 사용할 때 @Autowired 어노테이션이 없던데 이유가 무엇인지 궁금합니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
실무에서도 패키지 구조는 학습과 같이 많이 사용하게 되나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요!패키지구조에 관련하여 문의드립니다!강의에서는controllerservice ..패키지가 이렇게 나뉘어져있는데member - controller - serviceorder - controller - service...이런 패키지구조도 있어 질문드립니다!프로젝트, 기업마다 규칙이 다르겠지만보통 보편적으로 어떤 패키지구조를 사용하게 되나요??
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
비관적 락 VS 네임드 락
안녕하세요. 해당 강의를 통해 다양한 락의 특징과 장단점을 배울 수 있어 현재 프로젝트에 적용할 수 있었습니다.적용한 부분: 상품 재고 감소에 대한 동시성 제어적용했던 락: 네임드 락적용한 이유: 상품 테이블에 재고 컬럼이 포함되어 있기 때문에 비관적 락을 적용할 경우, 해당 row를 단순 조회하거나 다른 비즈니스 로직에서 락 대기 등으로 인해 영향을 미칠 수 있을 것이라 판단하여 네임드 락을 적용했습니다.궁금한 점: 적용 이후 테스트 과정에서 알게 된 점이, MySQL의 단순 select 쿼리는 FOR UPDATE로 인해 락이 걸린 row를 조회하더라도 락 대기나 차단이 발생하지 않는다는 사실이었습니다. 또한 네임드 락과 비관적 락 간의 부하 테스트 결과, 성능 차이가 거의 없다는 점에서, 정합성이 중요한 주문/결제 상황이라면 낙관적 락은 배제하고, 오히려 네임드 락보다는 비관적 락을 적용하는 것이 더 적절하지 않을까 하는 의문이 들었습니다.질문: 상품 테이블에 재고 컬럼이 포함되어 있다고 하더라도 단순 조회 성능에 영향을 주지 않는다는 점에서, 네임드 락보다 비관적 락을 적용하는 것이 더 타당한 선택일지 궁금합니다. 실무적인 기준에서 어떤 판단이 더 적절할지 조언 부탁드립니다.
-
미해결스프링 웹 MVC 완전정복
강의자료 오타
안녕하세요, 강의를 듣다가 강의 자료에 오타가 난 부분이 있어 글 올립니다.아래 [기존] 부분들을 [수정]으로 바꾸셔야 할 것 같습니다.감사합니다.-------------------------------------04. 서블릿 이해HttpServletRequest 기본[기존]https://github.com/onjsdnjs/servlet/tree/httpRequestServletApi[수정]https://github.com/onjsdnjs/servlet/tree/httpServletRequestApiHttpServletRequest - 요청 처리[기존]https://github.com/onjsdnjs/servlet/tree/httpRequestServletProsess[수정]https://github.com/onjsdnjs/servlet/tree/httpServletRequestProsessHttpServletResponse[기존]https://github.com/onjsdnjs/servlet/tree/httpResponseServletApi[수정]https://github.com/onjsdnjs/servlet/tree/httpServletResponseApiHttpServletResponse – 응답 처리[기존]https://github.com/onjsdnjs/servlet/tree/httpResponseServletProcess[수정]https://github.com/onjsdnjs/servlet/tree/httpServletResponseProcess
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
orderItems[0] 은 아직 단일주문만 가능하기에 인가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요! 강의를 듣는 도중 궁금한게 있어 질문드립니다. <td th:text="${item.orderItems[0].item.name}"></td> <td th:text="${item.orderItems[0].orderPrice}"></td> <td th:text="${item.orderItems[0].count}"></td>부분에 [0] 인건 아직 단일 주문만 가능하기에 [0] 으로 하신건가요?개인적으로 변경하여 한 번에 여러 개의 주문이 가능하게 될 경우에는 [0] 하드코딩이 아닌 타임리프 반복문의 인덱스를 넣으면 되는건가요??
-
해결됨실무 환경 그대로 주문게시판 만들기 웹개발 기초 마스터
문의 드려요
강사님 강의 잘 들었습니다jsp js 로 개발되어 있는 솔루션을 넥사크로로 전환 하여 사용 하려고 계획중입니다 crud 기능 말고 부가적으로 페이징 처리 등 추가 기본 기능에 대하여 소스나 설명을 좀더 받고 싶은데 혹시 가이드좀 주시면 안될까요?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
다른 예외 처리 방식
강사님께서는 데이터를 먼저 읽고 없으면 예외를 발생시켰는데, 그렇게 하지 않고 일단 업데이트(혹은 삭제)를 시키고 나서 변경된 row의 개수가 0이면 예외를 발생시키는 방법으로 예외 처리를 해도 괜찮나요? 코드는 아래와 같습니다.if(jdbcTemplate.update(sql, request.getName(), request.getId()) == 0) { throw new IllegalArgumentException(); }}