묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실습으로 배우는 선착순 이벤트 시스템
apply method가 자꾸 성공이 됩니다(Redis incre 적용전)
안녕하세요 .. 위 부분에서 apply메소드는 raceCondition으로 인하여 정합성이 어긋나야하는데왜 자꾸 assertEquals가 100으로 되며 성공하는걸까요.. apply에 Thead.sleep(10)을 넣어도 ExcutorService thread 개수를 1로 하여고아니면 requestCount 개수를 1000으로 늘려도 무조건 성공이 됩니다..
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Enum 이름이 변경되었을 때 DB에 미치는 영향
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]Order가 OrderStatus를 인스턴스 변수로 가지고 있는, 즉, 한 Entity가 Enum 타입의 객체를 가지고 있는 상황에 대해 질문 드리겠습니다.@Enumerated(EnumType.STRING)와 같이 매핑함으로써 DB 컬럼에는 'ORDER', 'CANCEL'과 같은 Enum 이름으로 저장된다는 것을 알겠습니다.그리고 주문을 주문 상태 기준으로 조회할 때는 select from order where order_status = order과 같은 쿼리를 통해 조회하게 될 것 같습니다.이때, 자바 코드에서 주문된 상태를 의미하는 ORDER 이름을 A_ORDER라는 이름으로 변경한다고 가정하겠습니다.(OrderStatus Enum의 이름을 변경)변경 시점 이후로는 주문을 저장하면 order.order_status 컬럼에 A_ORDER가 저장되고, 그 이전까지의 order.order_status 컬럼은 ORDER로 여전히 남아 있을 것 같습니다.그렇다면 주문 상태 기준으로 조회를 할 때 ORDER와 A_ORDER 모두 주문된 상태를 의미하기 때문에, SELECT FROM order WHERE order_status = order OR order_status = a_order와 같이 조회해야 될 것 같습니다.제가 생각하기로는 enum 이름을 A_ORDER로 바꿨기 때문에 조회 쿼리의 조건 역시 A_ORDER 하나로만 조회되는 게 자연스러울 것 같습니다.즉, 제가 생각한 선택지는 총 2가지입니다.기존의 order로 남아 있는 row들을 update 쿼리를 통해 a_order로 수정한다. (직접 쿼리 작성)조회할 때 order와 a_order를 함께 where문에 넣어주면서 조회어떤 선택지가 더 좋다고 생각하시나요?? enum 이름이 변경되는 것을 가정하는 게 크게 의미없는 생각인가 싶지만, 궁금증이 생겨 질문드립니다!
-
미해결토비의 스프링 부트 - 이해와 원리
DataSource 관련 질문입니다.
지난번에 말씀해주신 부분들은 다 수정 처리 해서 했는데 이번에 jdbc를 연결하면서 이상하게 build.gradle도 다시 재실행하고 h2 관련 디펜던시도 다 적용을 했는데, 서버 자체는 잘 실행되는데 DataSourceTest가 지금 실행이 안되서 이렇게 질문드립니다. 뭔가 connect를 잘 못불러오는거 같은데 봐주시면 감사합니다!깃허브 주소는 https://github.com/ted7088/hellospring_toby_study 입니다...
-
미해결실습으로 배우는 선착순 이벤트 시스템
그럼 gradle에 redis: host: 와 port: 는 어떤 역할인 건가요?
다른 예제들을 보면spring: redis: host: localhost port: 6379이런식으로 셋팅해서 사용하던데왜 여기에는 이런게 필요가 없는 건가요?처음 접해봐서 모르겠씁니다ㅠㅠ..
-
해결됨스프링 부트 웹 개발 입문 - 따라하며 배우기
Sailing프로젝트 오류
드라이버 로딩 오류가 나는데, 2.7.6, 2.7.7, 2.7.13 모두 오류가 발생합니다.제컴에 mysql이 설치된 상태입니다. 프로젝트는 메일로 보내드렸습니다.
-
미해결스프링 부트 - 핵심 원리와 활용
스프링부트 내장 tomcat 의 실체
안녕하세요? 김영한 강사님,강의를 본후, [설치형 tomcat 서버] 와 [스프링부트 내장 tomcat ] 의 차이점이 정리가 되지 않아 질문드립니다.질문 1.https://tomcat.apache.org/위의 톰캣 홈페이지에서 다운로드 받아서 설치하는 WAS 는 [ apache 웹서버 + 톰캣 ] 인 것으로 알고 있습니다. 용어가 apache tomcat 이라서 그렇게 알고 있습니다. 제가 잘못 알고 있는 것인가요? 다운로드 받아서 설치하는 방식도 apache 웹서버 없는 순수 tomcat 인가요? 질문 2.스프링부트에 내장된 tomcat 은 [ apache 웹서버 + tomcat] 인가요? 아니면, apache 웹서버가 제외된 순수 tomcat 만 내장되어 있는 것인가요? 질문 3.질문 2 에 대한 답이 순수 tomcat 이라면,실제 서비스 운용시, 스프링부트로 작업한 웹어플리케이션 앞단에 apache 또는 nginx 웹서버를 반드시 붙여서 하는 것이 일반적인지요?아니면, 스프링부트로 작업한 내장 tomcat 웹어플리케이션 만으로 서비스를 하는 것이 더 일반적인지요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
주문 검색 필터링 오류시 참고하세요
다른 분들 질문도 찾아보고 저도 어이없는 실수로 고생을 좀 했습니다.다음 내용 참고하셔서 시간 절약하세요~ 컨트롤러 체크@GetMapping(value = "/orders") public String orderList(@ModelAttribute("orderSearch") OrderSearch orderSearch, Model model) { List<Order> orders = orderService.findOrders(orderSearch); model.addAttribute("orders", orders); return "order/orderList"; }위 부분에 문제가 없다면 orderService.findOrders -> orderRepository.findAllByString or orderRepository findAllByCriteria 부분에서 쿼리 작성하는 부분 반드시 체크가끔 복사 붙여넣기 해서 사용하면 띄어쓰기 차이로 오류가 발생하는 경우가 있습니다꼼꼼하게 확인하시고 한번쯤은 손으로 쳐보세요!OrderStatus가 enum타입으로 잘 정의되었는지 체크public enum OrderStatus { ORDER, CANCEL } OrderSearch가 잘 정의되었는지 체크@Getter @Setter # 글쓴이는 바보같이 Setter를 Service로 작성해서 한참을 헤맸음, 자동완성(tab) 할 때 너무 급하게 하지맙시다... public class OrderSearch { private String memberName; private OrderStatus orderStatus; }요렇게만 체크해도 해결되더라구요. 그리고 팁을 좀 드리자면웹 페이지(html) 쪽은 사실 복사,붙여넣기해서 사용하면 오류날 곳이 없기 때문에 컨트롤러를 기준으로 차근차근 따라가면서 하나씩 꼼꼼하게 체크하시면 오류 찾기 쉬우실 겁니다!
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Create Table Error
sql 테이블 생성 시 이와 비슷한 질문들을 보았을 때는 오타 수정이었지만 이 경우에는 오타가 5번정도 다시 봐도 없는 것 같아서 질문드려요 어떻게 해야할까요....
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
h2.bat 실행이 안됩니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. cmd를 관리자 권한으로 실행한 뒤 cd C:\Program Files (x86)\H2\bin 문장으로 directory 변경 후 "h2.bat"와 h2.bat로 실행을 하고자 하였지만 사진에서 확인할 수 있듯이 아무런 반응이 없었습니다.(웹페이지 생성x) 그렇다고 cmd가 꺼지거나 특별한 오류메시지가 뜨지도 않아서 해결 방법을 얻고자 질문을 작성하였습니다. 이클립스의 application.properties에는 두번째 사진과 같이 추가하였고, build.gradle에는 runtimeOnly 'com.h2database:h2' 문장을 dependencies에 추가하였습니다. h2 database는 windows installer로 1.4.200 을 다운 받았습니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
hello.html 오류
hello.html에서 thymeleaf 엔진을 받아오지 못하는 것 같은데 어디서 오류가 있는지 찾아주세요... 앞선 질문들에서 나왔던 8080포트의 중복인가 싶어 방법대로 8080 포트 프로세스 종료 후 재실행 & 다른 포트 번호로 접속. 두 가지 방법으로 다 해보았지만 계속 /hello에서 에러가 뜹니다 ㅠㅠ 도움 부탁드려요
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
@Compoent 사용시 순환 참조가 일어나지 않는 이유
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 순환 참조 문제가 발생하여 커뮤니티 글을 확인하고 해결하였는데요, 해당 링크를 참고해도 이해가 가지 않는 부분이 있어서 질문 남깁니다."@Around에서 자기 자신을 포함하고 있기 때문에 순환 참조가 발생한다" 라는 것은 이해를 했는데 "컴포넌트 스캔을 사용할 때는 AOP의 대상이 되는 이런 코드 자체가 없기 때문에 문제가 발생하지 않았습니다." 이 부분이 이해가 되지 않습니다. 컴포넌트 스캔을 사용해도 @Around에 명시한 경로에는 자기 자신인 TimeTraceAop 가 포함되는데 왜 이 경우에는 순환 참조가 일어나지 않는 것 인가요?
-
미해결스프링 시큐리티 OAuth2
권한 부여 타입 authorization code, credential, refresh token 타입만 지원??
OAuth 2.0 Authorization Server Metadata Endpoint / JWK Set Endpoint 2:40~2:55권한 부여 타입이 authorization code, credential, refresh token 타입만 지원한다고 하셨는데 좀 헷갈립니다. 인증 서비스를 개발할 때 권한 부여 타입에는 위 3가지말고도 Resource owner password 방식을 사용할 수도 있긴한거죠? 공식문서에서 어디를 참고하면 될까요..?근데 스프링 시큐리티에서 이 Resource owner password 방식의 자체 configure 를 지원하진 않는다. 로 이해하면 될까요.만약에 Resource owner password 타입으로 권한 부여 서비스를 개발하려면 저희가 직접 ~configure, provider 클래스를 생성하는 건가요?
-
미해결스프링 배치
Spring Batch Plugin 설치 관련 질문
Spring Batch Plugin 설치 이유가 궁금합니다.설치하지 않았을 경우 이 부분에서 빨간 줄이 나타나며 Bean을 찾을 수 없다는 에러를 나타냅니다.플러그인을 통해서 빈을 생성하게 된다면 jar로 압축하여 실행하더라도 빈이 생성되지 않아야 되는게 맞다고 생각하지만, 그렇지는 않은걸로 알고 있습니다.또한 jar로 실행하게 되면 잘 실행이 될텐데 그럼 인텔리제이에서도 플러그인 없이 에러가 뜨면 안되지 않나 라는 생각이 들어 질문하게 되었습니다.
-
미해결토비의 스프링 부트 - 이해와 원리
폭풍 질문 죄송합니다....
앞서 수강생처럼 contextPath 부분이 value를 잘 읽어오지 못해서 질문드립니다... PropertyPlaceHolderConfig를 추가하고 META-INF에도 추가를 했는데 contextPath 값을 그대로 가져오지 못해서 이렇게 질문드립니다.깃허브 링크 남겨드립니다. 감사합니다!https://github.com/ted7088/hellospring_toby_study
-
미해결토비의 스프링 부트 - 이해와 원리
깃허브 커밋 후 오류 관련 질문드립니다.
제가 강의 들으면서 공부할때 매번 깃에다 올리고 커밋 후 푸시 하는 작업을 통해 두대의 컴퓨터에서 작업을 진행했는데, 색션 7,8을 어느 한 컴퓨터에서 듣고 다른컴퓨터에서 깃에서 프로젝트 업데이트 하니깐 hellobootapplication 이 실행이 안됩니다... 오류 사항은 Description:Web application could not be started as there was no org.springframework.boot.web.servlet.server.ServletWebServerFactory bean defined in the context.Action:Check your application's dependencies for a supported servlet web server.Check the configured web application type.종료 코드 1(으)로 완료된 프로세스이렇게 나오는데 혹시 이유를 알 수 있을까요?깃에서 가져와서 그런지 HellobootApplication에 환경변수를 추가해도 이상하게 안되더라고요...기존에 한컴퓨터는 실행이 지금도 잘되는데 다른컴퓨터에서는 이런 오류가 걸려서 질문드립니다
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
hello.html 관련 오류 문의
1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]이런식으로 해당 주소를 인식 못하는 건지 오류가 납니다. 아래 th의 경우도 마찬가지입니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
웹 서버, WAS
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]웹 서버(아파치)는 정적인 컨텐츠를 담당해서 작성한 대로 전달하고, WAS(톰캣)은 동적인 컨텐츠를 담당해서 db 등과 연결되어 결과를 전달한다고 이해했습니다. 그런데 현재 개인 컴퓨터로 실습하는 입장에서 잘 이해가 되지 않는 부분이 있어 질문합니다.스프링부트를 이용해 빌드된 파일을 서버에 실행시키면 웹 서버가 구동된다고 이해했습니다. 그렇다면 이 빌드된 파일은 서버를 위한 파일인가요? 개인 컴퓨터로 프로젝트를 할 때 따로 물리적인 서버를 두지 않으면 이때는 개인 컴퓨터가 서버 역할을 하게 되는 것인가요? 백엔드 개발자란 서버의 동적 컨텐츠들을 담당하는 개발자라고 이해하면 될까요? 답변 기다리겠습니다. 감사합니다.
-
미해결호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)
배포 질문있습니다.
안녕하세요. 해당 강의로 배포를 배우고 있습니다. 현재 별개로 진행하는 스프링부트 프로젝트에서 레디스를 도커를 이용해 (docker-compose up) 실행하고, 스프링 프로젝트를 실행하는 형태로 진행하고 있습니다. 이러한 경우는 배포를 어떻게 해야할지를 모르겠습니다.원격 ec2 서버에도 마찬가지로 docker desktop 및 redis를 설치하여 실행한 뒤, 스프링부트 프로젝트를 실행해야 할까요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Assertions 의 core 와 jupiter
[질문 내용]스프링 로드맵에서는 core의 Assertions를 사용했는데 여기에서는 jupiter의 Assertions를 사용해서 궁금한 점이 생겼습니다. 둘은 어떤 차이이며, 현재는 어떤것을 더 선호하는지 궁금합니다.현재 저는 스프링 로드맵에서 했던것 처럼 core의 Assertions를 사용해 하고 있는데 정상테스트와 오류테스트를 모두 core로 할 수 있다면 core로 하는게 더 좋을까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
localhost8080과 관련된 질문
[질문 템플릿]2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예[질문 내용]저 혼자 개발할 때는 localhost:8080 과 postman에서 API를 사용해 본다는 것까지 이해했습니다.만약 안드로이드 개발자와 협업을 합니다.그러면 그 사람도 개발 과정에서 api를 호출해서 받아올텐데 제가 만든 api를 어떻게 가져오나요??대부분 개발 과정에서 어떻게 하나요?