묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 시큐리티
Method방식의 인가에서 궁금증이 있습니다.
안녕하세요.현재 지금 스프링 부트 2.6.14로 작성중에 궁금한 점이 있습니다. @Secured와 같은 메서드 방식에서 RoleHierarchy가 그대로 적용 되는지 궁금해서 질문드립니다. 혼자서 테스트 할때 ROLE_ADMIN > ROLE_MANAGER > ROLE_USER 구조로 RoleHierarchy를 구성하고 ROLE_ADMIN 권한을 지닌 아이디로 @Secured("ROLE_USER") 메서드를 호출하는데 인가가 안되는데 원래 안되는 것인지 아니면 되는 방향이 있는지 궁금하여 질문드리겠습니다. 감사합니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
단방향 연관관계 (member, order) 질문있어요 !!
강사님은 member 테이블 필드값에 order 리스트를 없애서 단방향 연관관계를 보통 한다고 하시는데(6:22초) 어떤 상황에서 그렇게 되나요 ??? ADMIN쪽 개발 관련된 부분인가요 ?? 예를 들면 배송사이트에서 나의 주문정보 보기 와 같은 페이지는 오히려 member 테이블 필드값에 order 리스트가 필요하지 않나요 ??
-
미해결[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발
인증 실패 시 HTTP Satuts code 200
안녕하세요. 강의 보면서 따라하다가 궁금한 점 하나가 생겨서 질문드립니다.아이디 혹은 비밀번호를 일부러 틀리게 입력 시 stuatus code가 200이 출력되는데 강의에서는 401로 출력되더라고요. 제가 생각해도 200 ok는 아닌 거 같은데.. 따로 설정해줘야 하나요? SecurityConfig.javapackage com.example.restfulwebservice.config; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; @Configuration public class SecurityConfig { @Autowired public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { auth.inMemoryAuthentication() .withUser("test") .password("{noop}test1234") .roles("USER"); } } CustomizedResponseEntityExceptionHandler.java@RestController @ControllerAdvice // 모든 컨트롤러가 실행될 때 이 어노테이션이 붙은 Bean이 사전에 실행되도록 한다. public class CustomizedResponseEntityExceptionHandler extends ResponseEntityExceptionHandler { @ExceptionHandler(Exception.class) // 이 메서드가 ExceptionHandler 라는 걸 알려주는 어노테이션 public final ResponseEntity<Object> handleAllExceptions(Exception ex, WebRequest request) { ExceptionResponse exceptionResponse = new ExceptionResponse(LocalDateTime.now(), ex.getMessage(), request.getDescription(false)); return new ResponseEntity(exceptionResponse, HttpStatus.INTERNAL_SERVER_ERROR); } // user 클래스 전용 @ExceptionHandler(UserNotFoundException.class) public final ResponseEntity<Object> handleUserNotFoundException(Exception ex, WebRequest request) { ExceptionResponse exceptionResponse = new ExceptionResponse(LocalDateTime.now(), ex.getMessage(), request.getDescription(false)); return new ResponseEntity(exceptionResponse, HttpStatus.NOT_FOUND); } @Override protected ResponseEntity<Object> handleMethodArgumentNotValid(MethodArgumentNotValidException ex, HttpHeaders headers, HttpStatus status, WebRequest request) { List<FieldError> list = ex.getBindingResult().getFieldErrors(); ExceptionResponse exceptionResponse = new ExceptionResponse(LocalDateTime.now(), "Validation Failed : " + list.get(0).getField(), ex.getBindingResult().toString()); return new ResponseEntity(exceptionResponse,HttpStatus.BAD_REQUEST); } } application.ymlserver: port: 8088 logging: level: org.springframework : DEBUG spring: messages: basename: messages mvc: pathmatch: matching-strategy: ANT_PATH_MATCHER security: user: name: username password: test1 management: endpoints: web: exposure: include: "*" build.gradle// security implementation 'org.springframework.boot:spring-boot-starter-security' 확인 부탁드립니다.. 감사합니다.
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
기존의 테이블이 삭제되지 않습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]여기에 질문 내용을 남겨주세요.application.yml jpa: hibernate: ddl-auto: create이라 되어 있는데, 기존의 테이블이 드랍되지 않습니다.질문 게시판을 검색해보니, H2의 버전이 1.4.200인 경우에는 하이버네이트 버전을 5.4.13.Final 로 바꿔야 한다고 되어 있네요. 그래서, build.gradle 에 ext["hibernate.version"] = "5.4.13.Final" 를 추가 해놓고 다시 돌려보니 이제는 엄청난 에러메시지가 나오네용..하이버네이트 버전을 바꾸는 방법이 올바르지 않았나요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Hibernate 질문
강의 영상에서 보면 test 실행 시 콘솔창에 'Hibernate: insert into member(id, name) values(null, ?)'라는 SQL문이 뜨는데요.실제로 db에 요청되는 쿼리라면insert into member(id, name) values(null, spring)insert into member(id, name) values(null, spring100)이런식으로 떠야할 것 같은데, ? 라고 뜨는 이유가 있을까요?
-
미해결스프링 시큐리티
DelegateFilterProxy 는 서블릿 컨테이너가 다른 프레임워크가 필터를 조작할 수 있게 만들어준 표준을 지키는 구현체인가?
서블릿 컨테이너는 스프링에 종속되지 않게 만들어졌다고 이해했는데요.어느정도 이러한 규제를 완화해주기 위해서 다른 프레임워크가 이용할 수 있는 필터 표준을 만들어줬고 이를 스프링 시큐리티가 구현한게 DelegatingFilterProxy 가 맞을까요?그러면 DelegatingFilterProxy 가 어떻게 Servlet Fitler 로 주입될 수 있을까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
HelloController.java 에러
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]실행 시, 콘솔 창과 같은 에러 때문에 실행이 안 됩니다. JDK 19.0.1 버전을 사용하는데, 버전에 문제가 있는 것일까요? 아니면 다른 해결 방법이 있는 걸까요?
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
현업에서의 jpql
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.쿼리 dsl에서 많이 설명 해주셨는데요 그렇다면 dsl을 쓰는 현업에서는 jpql을 사용할 일이 전혀 없을까요 ? 전혀 없다고 해도 근본이 되는 jpql을 알아둬야 하겠지만 학습시간에 대한 비중을 어디에 크게 둬야 할지 의문입니다 .
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
assertThat 관련 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]assertThat메서드가 두 값을 비교할 때 사용된다는 건 알겠는데 구글링 해보니 assertThat(actual, isEqualTo(expected)) 이런식으로 actual와 expected이 들어갈 위치라고 나와있고 강의에선 반대 느낌으로 설명하는거 같아서요강의코드로 혹시 어떤 게 actual값이고 expected값인지 이해하면 될까요?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
빈의 개념
클래스를 빈이라 하지 않고, (컨테이너 안에 들어 있는) '클래스의 객체'를 빈이라 하지 않는지요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
오류(java.lang.IllegalStateException: java.lang.IllegalArgumentException: No DataSource specified)
강의와 똑같이 한 것 같은데 "No DataSource specified" 오류가 뜹니다ㅠㅠ
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
HomeController가 선택되는 이유가 궁금합니다
수업과 같이 코드를 다 작성하고, HelloStringApplication을 실행하고나서localhost:8080을 들어가면 왜 3개의 컨트롤러중 home컨트롤러가 실행되어 home.html이 화면에 출력되는지 궁금합니다.
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
팩토리 메서드를 정적으로 사용하는 이유에 대해서 궁금합니다
안녕하세요 영한님 강의 잘 듣고 있습니다^^전부터 궁금해 왔던 것인데요, 팩토리를 만들 때 정적으로 올리는 이유에 대해서 궁금합니다영한님이 다른 QnA에서 추천해 주신 내용들을 읽어보았으나 굳이 왜 "정적"영역으로 보내는 가에 대한 의문은 쉽게 풀리지 않습니다 ㅜㅜ일단 정적 팩토리 메서드로 보내면 생성자들에 대한 응집도가 크게 떨어지는 느낌입니다. "엘레강트 오브젝트"라는 책을 보면 생성자는 10~15개 까지도 만들고 퍼블릭 메서드를 최대한 적게 가져가라고 가이드를 주는데요, 정적 영역으로 보내면 주/부 생성자로 보낼 수 없기 때문에 그 많은 생성자들이 다 흩어지고, 생성자들 간 관계를 맺을 수 없기 때문에 유연성이 떨어지고 코드 중복이 자주 일어나는 효과가 나는 것 같습니다이는 굳이 정적 영역으로 보내지 않고 주/부 생성자로 구분하면 쉽게 해결될 일이 아닌가? 하는 생각도 들어 질문을 드립니다
-
해결됨토비의 스프링 부트 - 이해와 원리
TestRestTemplate로 테스트 하는데 403 FORBIDDEN이 응답으로 옵니다.
문제가 되는 코드입니다. 브라우저에서는 200 응답이 정상적으로 오는데 테스트 코드에서만 이런 문제가 생깁니다. 의심가는 부분은 user-agent인데 헤더를 설정해주는 부분이 TestRestTemplate에는 없어서 다른 해결 방법이 있는지 질문드립니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
직접 스프링 빈 등록하기 관련 질문
자바 코드로 직접 스프링 빈 등록하기에서 SpringConfig 파일에 코드를 작성하시는 부분을 보다가 궁금한게 생겨서 질문합니다.스프링 컨테이너에 빈을 등록한다는 것은 등록하고자하는 클래스의 실제 객체, 즉 인스턴스를 하나 생성하여 관리한다는 것으로 이해했는데요. 그럼 @Bean annotation을 붙이는 것은 빈으로 등록하겠다는 것을 명시하는 것을 나타내는 것 같은데, 꼭 메서드 형식으로 작성을 해야하는 것인가요? 예를 들어, 강의에 적혀있던 메서드 대신@Bean public MemberService memberService = new MemberService();위와 같이 변수 형태로 선언하면 안되는 것인가요?
-
미해결스프링 배치
Fetch와 Cursor의 순서?
[DB - Cursor & Paging 이해] 강의에서 보여주신 장표를 보면 cursot가 먼저 움직이고 fetch를 통해 application으로 매핑된 데이터(객체)를 넘겨주는 것처럼 표현되어있는데요.fetch size에 의해서 DB --> 메모리로 데이터가 적재된 후, 그 결과집합을 순차적으로 cursor를 통해 접근하는걸로 알고있습니다.즉, fetch size는 DB에서 메모리로 데이터를 적재할 크기이고 그 데이터 셋을 처음부터 cursor를 통해 접근하는게 맞지않나 싶어서 질문드립니다. 제가 반대로 알고 있을 수 있지만...
-
해결됨토비의 스프링 부트 - 이해와 원리
블로그에 강의 내용을 정리해서 올려도 괜찮을까요?
안녕하세요. 수업 흥미롭게 듣고 있는 수강생 입니다.블로그에 공부한 내용을 정리해두는걸 좋아합니다. (예시) 토비님의 강의도 아래처럼 강의를 정리하면서 듣고 있는데 혹시 블로그(광고 안붙인 블로그입니다.)에 아래와 같이 메모한 강의 내용을 올려도 괜찮을지 문의드립니다. 주로 강의 따라서 작성한 코드 스샷 및 말하신 내용 중 기억할만한 부분들이나 전체적인 흐름을 적었습니다. (나중에 제가 보고 기억날 수 있게요)가능하시다면 혹시 일부 강의 스샷도 올려도 되는지 궁금합니다(특히 현재까지의 코드 구조 중간중간 설명해주신 부분이나 초반에 Containerless 설명해주신 부분이요! 물론 몇장만요.)
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
비대칭키일 때 decrypt 질문입니다.
bootstrap.yml파일에는 암호화할 때 사용하는 개인키 위치만 알려줬는데 어떻게 복호화를 할 수 있는 건가요?디렉토리에 공개키를 생성했다고는 하지만 yml파일에 위치를 설정하진 않았는데 어떻게 복호화를 할 수 있는지 궁금합니다.
-
해결됨토비의 스프링 부트 - 이해와 원리
@ComponentScan 에 대해서
@Component를 사용하기 위해서는 @ComponentScan을 사용하는데 더 나아가 @component가 메타 어노테이션으로 쓰이는 @Service나 @Controller 같은 경우는 @ComponentScan없이 동작이 되는데요. 내부적으로는 @Component 어노테이션을 사용해 @ComponentScan이 필요하지 않을까 했는데 없어도 동작이 되는것 같은데요.이는 동작이 다른건가요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
컬렉션 필드에서 초기화 질문이 있습니다. (arraylist 기본 사이즈 문제)
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]ArrayList는 기본 사이즈를 10으로 생성하고 이후 사이즈를 초과할 경우 2배로 늘린 후 기존의 값을 복사하는 것으로 알고 있습니다.만약 사용자의 orders 개수가 10개 이상이라면, 이것을 지속적으로 늘리는 연산이 필요할 것으로 생각됩니다.실무에서는 arraylist를 필드 초기화할 때, 이런한 것을 예상해서 넉넉한 사이즈로 초기화를 하는지, linkedlist로 초기화하여 불필요한 연산을 줄이는 지 궁금합니다.