묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
31강 따라하는데 계속 오류가 납니다
BookService 51번째줄 오류 41번째줄 정상, 51번째줄 오류51번째줄 오류, 62번째줄 오류, 65번째줄 정상UserRepository.오류코드 강사님 안녕하세요!좋은 강의 잘 듣고 있습니다.강의를 따라하고 있는데 오류가 나서 더 이상 진행이 안돼서요 ㅠㅠBookService에서 41번째 줄의 orElseThrow 과 65번째줄 orElseThrow는 오류가 안 나는데51번째의 orElseThrow , 책 반납하는 62번째의 orElseThrow 는 빨간줄이 뜹니다.그대로 따라한 것 같은데 BookService orElseThrow이 부분에서 왜 계속 오류가 나는지 모르겠습니다...뭐 때문일까요??
-
미해결스프링 시큐리티
deprecate된 authorizeRequests와 access인자 관련
강의를 따라가다 antMatchers와access 관련해서 도움이 되고자 글을 남깁니다.(1) access스프링 시큐리티에서 authorizeRequests가 deprecate되면서 hasRole('ADMIN') or hasRole('SYS')에 인자로 문자열만 받을 수 있게 되었습니다.이로 인해 특정 경로에 대한 인가를 2개 이상의 role에 주고 싶을시 hasAnyRole을 사용해야 합니다.(2) antMatchersdeprecate된 authorizeRequests 대신 스프링에서 사용을 권장하는 authorizeHttpRequests를 사용한 사용자별 인가를 설정하는 코드입니다. // 스프링 시큐리티 5.4에 맞춘 강의 예제 http .authorizeHttpRequests(authorizeHttpRequests -> authorizeHttpRequests .requestMatchers("/user").hasRole("USER") .requestMatchers("/admin/pay").hasRole("ADMIN") .requestMatchers("/admin/**").hasAnyRole("ADMIN", "SYS") .anyRequest().authenticated());
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
findByID 구현 in Test
[질문 내용]Test 클래스에 findByID를 구현해보려고 했는데id를 하나 만들때마다 sequence를 하나씩 올려서 저장해야될 거 같은데Main클래스의 sequence가 private여서 그런가 sequence 자체에 접근이 불가능한 거 같습니다.구현 어떻게 해야될 지 힌트라도 얻고 싶습니다!!
-
해결됨실전! 스프링 데이터 JPA
교안과 강의내용의 차이점 및 Member(String name) 생성자 초기화 세팅
우선 강의 에서는 생성자를 아래와 같이 구성하여 진행하였습니다public Member(String username) { this.username = username; // 2번 생성자 호출 } public Member(String username, int age, Team team) { this.username = username; this.age = age; if (team != null) { changeTeam(team); } }순차적으로 각각 1번과 2번 생성자로 구분한다고 가정하였을 경우 강의 교안에서는 아래와 같은 코드로 구성되어 있습니다. public Member(String username) { this(username, 0); // 2번 생성자 호출 } public Member(String username, int age) { this(username, age, null); // 3번 생성자 호출 } public Member(String username, int age, Team team) { this.username = username; this.age = age; if (team != null) { changeTeam(team); } }논리적으로 해석해보자면 2번째 생성자는 username과 age만 값이 세팅되므로 team에 대한 값은 null로 세팅하는게 맞다 라고 판단이 되었으나,1번째 생성자는 username만 초기화되고 age에 대한 값만 0으로 초기화 해주지만 team에 대한 값은 들어오지 않았으니 null로 처리해줘야 하는게 아닌가? 하는 의문이 들었습니다. public Member(String username) { this(username, 0, null); // 2번 생성자 호출 } 위와 같이 1번 생성자의 this() 초기화에서는 username만 들어온다면 2번째 생성자와 같이 team에대한 값을 null로 함께 초기화 해야 맞는것이 아닌가 의문이 듭니다.
-
미해결실습으로 배우는 선착순 이벤트 시스템
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의 경우도 마찬가지입니다.