묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Parameter 0 of constructor in springIntroduction.springIntroduction.SpringConfig required a single bean, but 2 were found:
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]질문의 제목과 같은 에러가 발생했는데 이를 해결하는 과정에서 JpaMemberRepository에 붙어있는 어노테이션인 @Repository를 제거하니 해결이 됐습니다.이 이유가 SpringDataJpaMemberRepository에서 자동으로 구현체를 생성하게 되면 이게 빈으로 등록이 되기 때문에 저 어노테이션을 제거해서 해결을 하는 것이 정확한 이유가 되나요?
-
해결됨실습으로 배우는 선착순 이벤트 시스템
kafka를 왜 사용하는지가 잘 이해가 안가서 질문 남깁니다!
안녕하세요! 강의 잘 듣고 있습니다. 감사합니다. https://www.inflearn.com/course/lecture?courseSlug=%EC%84%A0%EC%B0%A9%EC%88%9C-%EC%9D%B4%EB%B2%A4%ED%8A%B8-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EC%8B%A4%EC%8A%B5&unitId=156125&category=questionDetail&tab=community&q=1029856해당 질문과 답변을 보고 추가 질문 드리려고 합니다. 제가 kafka나 redis, 분산서버 등에 대해 이해도가 낮은 점 양해 부탁드립니다! 1.Kafka 미사용시 주문생성/회원가입요청의 타임아웃 및 10분뒤 실행에 대한 해결책으로 Kafka 를 선택한 이유는 배압조절(back pressure) 때문입니다.이렇게 말씀을 해주셨는데요,답변에서 말씀하신 예시에서 처럼 10000개 요청이 있고,카프카를 사용한다면,요청 100개가 쌓일때마다 db에 insert를 하고, 다시 요청 100개가 쌓일때까지 기다렸다가 insert 하기를 반복한다는 것으로 이해하면 될까요?2. 그게 맞다면, 강의에서 구현한 apply 메서드에서 100개의 요청이 왔는지 확인하지 않고, kafka를 사용해서 다른곳에 전달하여 처리하는 이유는 무엇인가요?예시로 apply 메서드 안에서 redis의 incr 값을 체크하면 요청이 몇개가 쌓였는지 알 수 있을테고, 데이터를 임시저장하다가 100개마다 처리할 수 있을거란 생각이 들었습니다. kafka로 다른 모듈로 전달하는 것과의 차이점이 무엇인가 궁금합니다.3.실제로 consumer에서 100개의 작업이 완료되었는지는 일반적으로 어떻게 확인하는 걸까요? db에 저장하기 전에 100개의 데이터는 어디에 임시저장을 하나요?
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
NamedLock을 사용하는 경우 DataSource 분리
NamedLock을 사용하는 경우에 DataSource를 분리하는 것이 좋다고 하여 시도해봤으나 DataSource 설정의 문제인지 정상적으로 동작하지 않아 질문드리게 되었습니다. Main이 JPA에서 사용하게 될 데이터소스이고, Lock이 JdbcTemplate를 사용하기 위해서 사용하는 데이터소스입니다.spring: datasource: main: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1:3308/stock_example?serverTimezone=Asia/Seoul username: root password: 1234 lock: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1:3308/stock_example?serverTimezone=Asia/Seoul username: root password: 1234 hikari: maximum-pool-size: 20 jpa: database: mysql database-platform: org.hibernate.dialect.MySQLDialect hibernate: ddl-auto: create logging: level: root: INFO org: hibernate: SQL: DEBUG type.descriptor.sql.BasicBinder: TRACE애플리케이션 자체에서 사용해야 할 커넥션 풀만 관리를 하면 될 것이라고 생각하여 동일한 데이터베이스를 사용하였습니다. 먼저, 메인으로 사용하는 NamedLock을 사용하지 않는 데이터소스설정클래스입니다.@Configuration @EnableJpaRepositories( basePackages = "com.example.stock.stock", entityManagerFactoryRef = "mainEntityManager", transactionManagerRef = "mainTransactionManager") public class MainDataSourceConfiguration { @Bean @Primary @ConfigurationProperties("spring.datasource.main") public DataSourceProperties mainDataSourceProperties() { return new DataSourceProperties(); } @Bean @Primary public DataSource mainDataSource() { return mainDataSourceProperties() .initializeDataSourceBuilder() .type(HikariDataSource.class) .build(); } @Bean(name = "mainEntityManager") @Primary public LocalContainerEntityManagerFactoryBean mainEntityManager( EntityManagerFactoryBuilder builder) { return builder.dataSource(mainDataSource()) .packages("com.example.stock.stock") .build(); } @Bean(name = "mainTransactionManager") @Primary public PlatformTransactionManager mainTransactionManager( @Qualifier("mainEntityManager") LocalContainerEntityManagerFactoryBean entityManagerFactoryBean) { return new JpaTransactionManager(Objects.requireNonNull(entityManagerFactoryBean.getObject())); } }다음으로 Lock을 사용하기 위한 데이터소스 설정 클래스입니다.@Configuration @EnableTransactionManagement public class LockDataSourceConfiguration { @Bean @ConfigurationProperties("spring.datasource.lock") public DataSourceProperties lockDataSourceProperties() { return new DataSourceProperties(); } @Bean public DataSource lockDataSource() { return lockDataSourceProperties() .initializeDataSourceBuilder() .type(HikariDataSource.class) .build(); } @Bean(name = "lockTransactionManager") public JdbcTransactionManager lockTransactionManager(@Qualifier("lockDataSource") DataSource dataSource) { return new JdbcTransactionManager(dataSource); } }@Configuration public class JdbcTemplateConfiguration { @Bean public NamedParameterJdbcTemplate namedParameterJdbcTemplate(@Qualifier("lockDataSource") DataSource dataSource) { return new NamedParameterJdbcTemplate(dataSource); } }그리고 테스트를 돌려봤는데, 재고가 정상적으로 감소가 되지 않습니다. 이상한 점은 업데이트 쿼리가 발생을 하지 않는다는 점입니다.또 매번, 생성되는 스톡의 id가 1씩 증가한다는 점입니다. 혹시 제가 놓친 부분이 있을까요..?
-
해결됨자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
JPA에 관련해서 현업 관련 질문이 있습니다.
간혹 유튜브 영상이나 ORM과 관련된 담론이 있는 글들을 보면 JPA의 속도 문제를 문제점으로 삼는 분들을 보았습니다. 그리고 JPA로는 한계가 오는 점들은 네이티브 쿼리를 사용해서 해결을 할 수 있다는 점, 그리고 태현님께서도 특정 상황에서는 JdbcTemplate을 사용해서 문제를 해결할 수 있다는 점을 강의에서 말씀 해주셨는데요. 하지만 그 '특정 상황'의 예시가 잘 떠오르지가 않는데 어떤 것이 있을까요? 배민의 영상에서도 동욱님은 JPA와 QueryDSL을 사용해서 몇 억건의 데이터도 잘 처리하셨고, 영한님께서도 책을 개정판을 내지 않는 이유로 이미 많이 성숙한 기술이라서 극적인 변화가 없는 기술이라고 하셨으며 어떤 유튜버분도 말씀하시길 'JPA라는 기술이 문제 자체를 일으킨다기 보단 개발자가 JPA에 대한 이해가 부족해서 문제가 발생한다.' 라고 하셔서 더 미궁속으로 빠집니다. 혹시 태현님께서도 이런 상황을 겪으신 적이 있으신지, 있다면 어떻게 해결하셨는지 궁금합니다!
-
미해결
JPA physical-strategy 변환이 안되는 이유가 어떤게 있을까요???
안녕하세요. 스프링부트3 기반으로 api 프로젝트를 셋팅 중 입니다. 그런데 셋팅 중 physical-strategy 이 제대로 동작하지 않아서 이것저것 해보다가도움을 구해보고자 글을 올리게 되었습니다. 우선 프로젝트 환경은스프링부트 = 3.2.2하이버네이트 = 6.3.1.FinalJava = corretto17입니다. application.yml 은 이렇게 설정되어 있습니다. Entity는 카멜케이스로 작성이 된 상태 입니다. DB는 스네이크로 네이밍이 되어 있는 상태입니다. 그런데 JPA 조회 쿼리를 날리면계속 카멜케이스로 조회가 되면서 오류가 발생해서이것저것 해보는데 해결이 안되서 도움을 구해보고자 합니다. 혹시 뭔가 놓치고 있는게 있을까요???
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
JDBC 강의 내용 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]스프링 빈과 의존 관계에서 설명하셨던 다형성과 Solid에 대한 개념이 여기 19:00 이후의 설명에 나온 것 같은데요. helloController는 memberService에 의존하고 있고 이 memberService를 구현하는 구현체로 memoryMemberRepository, JdbcMemberRepository가 있는데 만약에 저걸 저렇게 작성하지 않고 MemoryMemberRepository를 직접 주입받아 사용하게 되면 시간이 지나 다른 것으로 변경을 해야할 때 기존 코드를 고쳐야하니 다형성의 활용하여 인터페이스를 주입하고 그 인터페이스를 구현한 구현체에서 외부 생성자로 주입을 하는 것이 DI고 저게 객체 지향의 기본이다... 라고 이해하는 것이 맞을까요?
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
OSIV true 상태에서 Controller에서 Entity가 수정되는 현상
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]OSIV가 true인 상태에서는 @Transaction이 설정된 Service계층까지만 수정이 가능하고, Controller에서는 수정이 불가능하다고 알고있는데,Controller에서 Entity를 수정했는데, DB가 변경됩니다.Entity변경이 마지막이고, 추가로 Service를 호출하지는 않았습니다.어떤 설정이 잘못되어서 그런지 알려주시면 감사하겠습니다.<예제>public GoodsGetResponseDto getGoods(GoodsGetRequestDto goodsReq) {log.info("getGoods(): goodsReq={}", goodsReq);List<Goods> goods = goodsService.findGoods(goodsReq);int goodsCnt;goodsCnt = goods.size();log.info("goods.size() 갯수 = {}", goodsCnt);if (Objects.equals(goodsReq.getImageYn(), "Y")) {log.info("With imageYn={}", goodsReq.getImageYn());}else {goods.stream().forEach(o -> o.setImagePath("")); ==> Dto에 imagePath 값을 넘기지 않으려고 추가한 이 부분 때문에 DB가 변경됨.}return new GoodsGetResponseDto(goods, "200", goodsCnt);}
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
스프링 프로젝트환경 구성중 main 실행 안됨
스프링 학습환경 구축을 위해 강의를 보며 따라하는 도중 src에 main에 java에 있는 HelloSpringApplication.java 파일을 run 하려고했는데 실행버튼이 비활성화 되어있고, 실행버튼에 커서를 올리면 "the file in the editor is not runnable" 이라는 문구가 뜹니다. 어떻게 해결해야 될 지 궁금합니다.
-
미해결김영한의 실전 자바 - 기본편
김영한의 실전자바-기본편 섹션6 연습문제 두번째
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용] 김영한의 실전자바 기본편 섹션6 연습문제 두번째 문제에서 코드에서 제가 작성한 코드와 김영한 선생님이 작성한 코드가 다른데 차이점을 알고 싶습니다.//저의 코드 public void displayItems() { System.out.println("장바구니 상품 출력"); for (int i = 0; i < itemCount; i++) { System.out.println("상품명:" + items[i].getName() + ", 합계:" + items[i].sumPrice()); } //비교하고싶은 부분 System.out.println("전체 가격 합: "+totalPrice()); } //김영한 선생님 코드 public void displayItems() { System.out.println("장바구니 상품 출력"); for (int i = 0; i < itemCount; i++) { Item item = items[i];//저와 다른 부분 System.out.println("상품명: " + item.getName() + ", 합계: " + item.getTotalPrice()); } System.out.println("전체 가격 합: " + calculateTotalPrice()); } 저의 코드는 items[i] 의 참조값의 getName과 sumPrice를 불러서 프린트 했고,김영한 선생님은 items[i]를 item에 할당해서 item의 getName과 Price를 프린트 했지 않습니까? 질문 1. 기능적으로는 똑같은거 같은데 둘의 차이가 있습니까? 질문 2. 뭔가 똑같아 보이긴 하지만 김영한 선생님이 작성한 코드니까 더 좋아 보이는 이유가 있는거 같은데 혹시 둘의 차이 설명 가능한가요?
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
Entity 설계 시 고민되는 부분 문의드립니다.(@Setter, @Builder 미사용 시 테스트 등)
토이프로젝트나 회사에서 엔티티 설계 하면서 고민되는 부분이 있어서 문의드립니다. 엔티티에 @Setter 나 @Setter 가 포함된 @Data 애노테이션을 추가하지 않는 것이 좋다고 강의에서 들어서 설계 시 해당 부분을 제외하고 있습니다.@Entity @Getter @SuperBuilder @NoArgsConstructor(access = AccessLevel.PROTECTED) @Table(name = "book") public class Book extends BaseDateEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "book_id", updatable = false) private Long id; @Column(name = "title", length = 200, nullable = false) private String title; @Column(name = "author") private String author; @Column(name = "price") private int price; @Column(name = "publisher") private String publisher; @Column(name = "publish_at") private LocalDate publishAt; @Column(name = "isbn", nullable = false) private String isbn; @Column(name = "sort", nullable = false) private String sort; @Column(name = "image", columnDefinition = "TEXT") private String image; @Column(name = "link", columnDefinition = "TEXT") private String link; } @Builder는 엔티티 클래스에 붙이고 있는데, 이렇게 되면 사실 점층적 생성자가 있는것과 다를바 없이 객체를 생성할 수 있기 때문에 좋은 방법이 아닌거 같아 문의드립니다.실무에서는 보통 어떤 식으로 사용하시는지 궁금하여 문의드립니다. 별도의 of, create 메서드를 static으로 만들어서 생성하기도 하는데요. 이렇게 되면 테스트 코드 작업 시 @BeforeEach로 초기 데이터를 추가하기 쉽지 않더라고요. 어느정도 수준으로 실무에서 사용하는 것이 적절할지 궁금합니다. public static Reservation create(String userName, String phoneNumber, Performance performance, PerformanceSeat performanceSeat) { return Reservation.builder() .userName(userName) .phoneNumber(phoneNumber) .title(performance.getTitle()) .round(performance.getRound()) .amount(performance.getPrice()) .status(ReservationStatus.APPLY) .performance(performance) .performanceSeat(performanceSeat) .build(); } [문의 내용 정리]Q1) JPA Entity 클래스에 @Builder 애노테이션을 추가하는 것은 좋지 않은 방식일까요? 그렇다면 어떻게 사용하는것이 적절할까요?Q2) @Builder 패턴, 기본 생성자, setter 제외한 경우 테스트 코드에서 @BeforeEach로 초기 데이터를 추가 시 어떻게 하는 것이 좋을까요?
-
미해결김영한의 실전 자바 - 기본편
6. 접근 제어자.pdf 오타 수정 요청
6. 접근 제어자.pdf 본문에 오타 수정이 여러 군데 필요합니다.스피커에 대한 내용 중폭팔 -> 폭발로 오타 수정이 필요합니다. ‘폭발’은 ‘불이 일어나며 갑작스럽게 터지다’라는 뜻과 함께 ‘속에 쌓여 있던 감정 따위가 일시에 세찬 기세로 나옴’ 또는 ‘힘이나 열기 따위가 갑작스럽게 퍼지거나 일어남’이라는 뜻으로 사용됩니다. ‘폭팔’은 ‘폭발’의 잘못된 표현이므로 사용해서는 안되겠습니다.
-
미해결코틀린 문법부터 실무까지 (실전 자바->코틀린 변환)
PDF 안에 파일이 없습니다
안녕하세여 강사님 pdf 파일을 다운로드를 하는데 zip 파일안에 아무것도 없어서 질문드립니다.현제 제가사용하는 윈도우11 이 문제인건지 강사님의 실수로 안넣으신건지 인프런의 문제인건지 제가 몰라서 제가 사용하는 윈도우 버전도 함께 남기면서 질문드립니다.현재 자바 스프링 프로젝트는 안에 파일이 있는 상태로 다운로드가 되는 상태입니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
13강 yml 파일에서
yml파일 작성할 때 driver-class-name이 Cannot resolve class 가 cj부터 Driver까지 뜨네요.build.gradle의 의존성은 다음과 같구요, 아래 질문들 보고 Ctrl Shift N 해봤을 때 Driver.java 파일도 잘 있는데 이것 때문에 서버 실행이 안됩니다.dependencies { implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-jdbc' testImplementation 'org.springframework.boot:spring-boot-starter-test' runtimeOnly 'mysql:mysql-connector-java:8.3.0' }
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
new 키워드 사용X와 DI
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)아니오3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]안녕하세요, 강의를 수강하고 계속 돌려보면서 이해를 하려고 하는 과정에서 이해를 제대로 한 것이 맞는지 궁금해 질문을 드립니다.어떤 인터페이스 A가 있고 객체 B가 있다는 가정 하에 B가 A를 구현하게 되면 B는 구현체 클래스, A가 인터페이스가 됩니다. 근데 만약 객체 C가 A를 주입받아 사용한다면 당장은 편리하겠지만 서비스가 변화하면서 객체 C가 A를 구현한 D를 주입받아 사용해야하는 경우를 예로 들었을 때, C의 코드에서 A와 연동(?)이 되는 부분을 제거하고 이를 D와 연동(?)을 해야 한다는 번거로움이 존재하여 다형성이란 개념을 활용한다고 이해했습니다.C가 A를 주입받는다고 할 때 다형성에 기초하여 설명하면 C는 C고 C는 A가 된다고 이해할 수 있었습니다. 그럼 인터페이스 A를 구현한 구현체 클래스 D를 C와 연동(?)시키면 C의 코드를 수정할 필요가 없으니까 이게 DI인가..? 라고 이해했는데 이게 맞을까요?결론적으로 인터페이스를 객체에 직접 주입하고 인터페이스를 구현한 구현체 클래스와 객체를 연동(?)하여 사용한다는 것이 맞는지 궁금합니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
white label error 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]jdbcmemberrpository를 실행하려고 하면 회원가입, 회원 목록 조회에서 계속 white label 화면이 뜨더라구요ㅜ 프로젝트 파일 압축해서 올려놓겠습니다ㅜㅜhttps://drive.google.com/file/d/1YwdD-BMx7g5YGutSKdL9pKWCm45VCymo/view?usp=sharing
-
미해결스프링 시큐리티 OAuth2
JwtAuthorizationFilter에 대한 질문입니다!
안녕하세요.테스트를 하다 보니까 (결과적으론 저의 실수인데요) 토큰을 검증하는 로직이 두 번 실행되는 겁니다. Mac 방식과 Rsa 방식 둘 다요. OAuth2ResourceServer에서 분명 addFilterBefore()에서는 하나의 필터만 넣어주었는데 말이죠.궁금해서 찾아보니 OAuth2ResourceServer에서 Mac방식과 RSA 방식 모두를 Bean으로 만들어서 그런 거였습니다. addFilter에 넣은 커스텀 필터만 동작하는 줄 알았지만, OncePerRequestFilter를 상속하면 빈으로 만드는 것만으로도 필터 목록에 추가되더라고요. 확인해 보니 가장 마지막에 추가되는 것 같습니다. 여기서 질문입니다!addFilterBefore() 등의 함수로 커스텀 필터의 위치를 지정하하면서, 설정에서 MAC과 RSA의 bean을 둘 다 살리면서 동작하는 방법은 없는 걸까요~? GenericFilterBean을 상속하게 해서 구현해도 addFilter 없이도 동작을 하니까 아래처럼 두 Bean 모두 살아있으면 검증을 두 번 하게 되네요. @Bean public JwtAuthorizationMacFilter jwtAuthorizationMacFilter(OctetSequenceKey octetSequenceKey) throws JOSEException { return new JwtAuthorizationMacFilter(new MACVerifier(octetSequenceKey.toSecretKey())); } @Bean public JwtAuthorizationRsaFilter jwtAuthorizationRsaFilter(RSAKey rsakey) throws JOSEException { return new JwtAuthorizationRsaFilter(new RSASSAVerifier(rsakey.toRSAPublicKey())); }
-
해결됨김영한의 실전 자바 - 기본편
다형성 재정의에 질문이 있습니다.
[질문 내용]Dog dog = new Dog();위의 코드는 Dog 내부에 extends로 Animal이 있기에 Dog 클래스는 Animal 이라는 부모가 있는걸 알 수 있습니다. 하지만 Animal dog = new Dog();Animal 타입으로 Dog를 생성하면 힙메모리에는 Dog와 Animal이 하나의 영역에 생기지만 Animal 타입으로 선언하였기 때문에 힙메모리에서 Animal 부분을 먼저 바라볼 것으로 생각하는데 어떻게 Animal에서 자식 요소가 있는걸 알고 오버라이딩된 메서드가 우선적으로 처리되는건지 궁금합니다. annotation의 영향인가요? =======추가 질문!Animal dog = new Dog();위 코드와 같이 선언하면 자바에서는 자동으로 업캐스팅이 이뤄지는것 이라고 이해해도 될까요?Animal dog = (Animal) new Dog();위와 같이 자바에서 자동으로 형 변환을 시켜준다고 생각하면 되는건가요?!
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
thymeleaf에러
이렇게 타임리프에 노란줄이 뜨고run 실행하면 계속 처리시간이 계속 쌓이는데404에러가 뜨는데 어떻게 해결해야 좋을까요
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
섹션7 훈련 문풀2 마지막 문제 풀이
안녕하세요. 강의를 들으며 문제를 해결하던 중 질문이 생겨 남깁니다. 섹션 7번 훈련 문제와 풀이 2에서 마지막 문제 사이 정수 구하는 문제인데요. 강사님이 풀어주신 방법과 다르게 이 방법으로 해결해도 맞는걸까요? 답은 똑같이 나옵니다! 항상 잘 듣고 있습니다 감사합니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
SpringDataJpaTest 오류
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]코드 리뷰를 여러번 진행해도 잘못된 점을 찾지 못해 질문 올립니다 ㅠ코드 링크도 함께 남깁니다https://drive.google.com/file/d/13QHcf3F544Y9epn4K2luIK09jMDgSefW/view?usp=sharing