묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
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에 대한 이해가 부족해서 문제가 발생한다.' 라고 하셔서 더 미궁속으로 빠집니다. 혹시 태현님께서도 이런 상황을 겪으신 적이 있으신지, 있다면 어떻게 해결하셨는지 궁금합니다!
-
해결됨스프링 DB 1편 - 데이터 접근 핵심 원리
DriverManagerDataSource 질문
이 DriverManagerDataSource가 커넥션 풀은 아닌거죠? 매번 getConnection할때마다 새 커넥션을 생성하긴 하지만URL USERNAME PASSWORD 를 매번 전달하지는 않아도 되는그냥 좀 더 편리한 DriverManager 라고 생각하면 되는 걸까요
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 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);}
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
빈 등록
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]기본적인건데 애매해서 질문드립니다. test코드에서 RepositoryV3와 ServiceV3_3를 @Bean으로 등록하지 말고 실제 RepositoryV3클래스와 ServiceV3_3클래스에 @RequiredArgsConstructor와 각각 @Repository, @Service를 추가해서 빈으로 등록을 해도 똑같이 내부에서 작동하는 것으로 봐도 괜찮을까요? test를 실행했을 때 오류가 발생하지 않아서 질문드립니다.
-
미해결스프링 핵심 원리 - 기본편
강의에서 필드 주입 방식이 스프링 의존적이라고 하신 이유
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]의존성 자동 주입의 방법 4가지 중 필드 주입의 방법만 스프링 의존적이라고 하시는 건가요? 아니면 @Autowired를 이용한 의존관계 자동주입 방법 4가지가 모두 스프링 의존적이라는 의미인가요?제 생각에는 필드 주입만 스프링 의존적이라는 게 좀 이해가 안가서요... 4가지 방법 모두 @Autowired 를 이용한 주입방법인데, 오직 필드 주입만 스프링 의존적이라서 단위 테스트가 불가능하다고 하시는건까요?+추가혹시 제가 이해한 내용이 맞을까요?!4가지 방법 모두 스프링 의존적인게 맞음. 그러나 다른 방법은 단위 테스트 시 의존관계가 안들어왔을 경우 내가 직접 넣어줄 수 있는데 필드 주입은 그럴 방법이 아예 없기 때문에 테스트를 꾸리는 것이 힘들어진다는 의미임.
-
미해결스프링 핵심 원리 - 기본편
수정자 주입으로 의존관계가 주입 안된 빈이 실행될 경우
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]수정자 주입을 통한 의존관계 주입 시, 해당 의존관계 빈이 컨테이너에 없더라도 예외가 발생하지 않고 실행된다고 하셨는데요.그러면 의존관계가 주입되지 않은 상태에서 실행이 됐고, 이후 의존관계가 없는 해당 빈을 사용하게 되면 런타임 에러가 발생하나요? 아니면 해당 타입의 추상체가 의존관계로 주입이 될까요?? 어떻게 동작하는지 궁금합니다. +추가혹시 제가 이해한 게 맞을까요?!4가지 방법 모두 스프링 의존적인게 맞음. 그러나 다른 방법은 단위 테스트 시 의존관계가 안들어왔을 경우 내가 직접 넣어줄 수 있는데 필드 주입은 그럴 방법이 아예 없기 때문에 테스트를 꾸리는 것이 힘들어진다는 의미임.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
스프링 프로젝트환경 구성중 main 실행 안됨
스프링 학습환경 구축을 위해 강의를 보며 따라하는 도중 src에 main에 java에 있는 HelloSpringApplication.java 파일을 run 하려고했는데 실행버튼이 비활성화 되어있고, 실행버튼에 커서를 올리면 "the file in the editor is not runnable" 이라는 문구가 뜹니다. 어떻게 해결해야 될 지 궁금합니다.
-
미해결
서비스 계층에서 응답 객체 생성 관련 커뮤니티의 생각이 궁금합니다
안녕하세요.Spring Boot를 사용하여 REST API를 구축하는 과정에서 응답 객체의 생성 위치에 대한 베스트 프랙티스에 대해 커뮤니티의 의견을 듣고자 합니다.일반적으로, 컨트롤러는 HTTP 요청을 처리하고 HTTP 응답을 반환하는 역할을 수행하며, 서비스 계층은 비즈니스 로직과 데이터의 처리를 담당합니다. 그러나 서비스 계층에서 직접 HTTP 응답 객체를 생성하고 이를 컨트롤러를 통해 반환하는 방식에 대해 고민 중입니다.이 방법은 서비스 계층과 컨트롤러 계층 사이의 경계를 모호하게 만들 수 있으며, 서비스 계층의 재사용성과 테스트 용이성에 영향을 미칠 수 있습니다. 반면, 일부 개발자는 이러한 접근 방식이 효율적이라고 주장하기도 합니다.저는 다음과 같은 질문을 가지고 토론을 시작하고자 합니다:여러분의 프로젝트에서는 서비스 계층에서 응답 객체를 생성하나요, 아니면 컨트롤러에서만 생성하나요?각 방식의 장단점에 대해 어떻게 생각하시나요?응답 객체를 생성하는 위치에 대한 결정 기준은 무엇인가요?개발 프로세스의 투명성과 효율성을 높이는 것이 목표입니다. 여러분의 경험과 지식을 공유해 주신다면, 이를 바탕으로 더 나은 아키텍처 설계 결정을 내릴 수 있을 것 같습니다.감사합니다. github discussions (https://github.com/soobinJung/JCK-World/discussions/27 )
-
해결됨스프링 핵심 원리 - 기본편
특정 하위 타입으로 조회하기
<섹션 4. 스프링 컨테이너와 스프링 빈> 파트에서 질문 드리고 싶은게 있습니다.저와 비슷한 질문을 하신 분이 있어서 그 게시물에 달린 답변을 읽어보았지만, 여전히 이해가 되지 않습니다... https://www.inflearn.com/questions/1045843/%ED%8A%B9%EC%A0%95-%ED%95%98%EC%9C%84-%ED%83%80%EC%9E%85%EC%9C%BC%EB%A1%9C-%EC%A1%B0%ED%9A%8C%ED%95%A0-%EB%95%8C-%EA%B6%81%EA%B8%88%ED%95%9C-%EC%A0%90-%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4 void findBeanBySubType() { RateDiscountPolicy bean = ac.getBean(RateDiscountPolicy.class); assertThat(bean).isInstanceOf(RateDiscountPolicy.class); }@Configuration static class TestConfig { @Bean public DiscountPolicy rateDiscountPolicy() { return new RateDiscountPolicy(); } @Bean public DiscountPolicy fixDiscountPolicy() { return new FixDiscountPolicy(); } }컨테이너를 보면 rateDiscountPolicy() 메소드의 리턴 타입은 DiscountPolicy 타입으로 되어있습니다. 따라서, rateDiscountPolicy라는 이름을 가진 빈은, DiscountPolicy 타입의 RateDiscountPolicy 객체를 저장할 것이라고 생각했습니다.이러한 상황에서 ac.getBean(RateDiscountPolicy.class)로 빈을 조회하면 RateDiscountPolicy 타입과 그것의 자식 타입 빈이 조회될 것입니다. 저는 ac.getBean(RateDiscountPolicy.class)이 어떻게 rateDiscountPolicy라는 이름의 빈을 조회할 수 있는지 알고 싶습니다.해당 빈은 RateDiscountPolicy 객체이지만, 타입은 DiscountPolicy 타입이므로 ac.getBean(RateDiscountPolicy.class)로 조회했을 때 걸리지 않을 것이라 생각했습니다... 답변 부탁드립니다.감사합니다!
-
해결됨Practical Testing: 실용적인 테스트 가이드
혹시 @AllArgsConstructor 를 지양하시는 이유가 빌더 패턴을 사용하기 위함인가요?
private @Builder 를 통해서 객체 생성을 주로 하시는 이유가 Builder 패턴의 장점을 위해서 사용하시는 건지 궁금합니다!
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
파일 저장 에러
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 강의에서 설명하는 대로 제출을 했지만 파일이 저장되지 않습니다. 404 오류가 뜨지만 302 리다이렉트는 정상적으로 실행이 되었습니다. 제가 로컬디스크 C에 file이라는 폴더를 만들어서 application.properties 에는 file.dir=C:/file/ 이라는 경로로 지정해주었습니다. 파일이 저장되지 않는 이유가 뭘까요?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
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인가..? 라고 이해했는데 이게 맞을까요?결론적으로 인터페이스를 객체에 직접 주입하고 인터페이스를 구현한 구현체 클래스와 객체를 연동(?)하여 사용한다는 것이 맞는지 궁금합니다.
-
해결됨스프링 핵심 원리 - 기본편
ApplicationContext
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.강의 16분쯤에 ClientBean 클래스 안에 @Autowired로 스플링 컨테이너를 가져오는 의존관계 등록후. 가져온 스프링 컨테이너 안에서 프로토타입을 빈을 호출하는 것 까진 이해를 했습니다. 궁금한점은 스프링 컨테이너가 여러개 있는 경우 ClinetBean에 있는 ApplicationContext에 무엇이 들어올지 어떻게 알 수 있나요??
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 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
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
ObjectMapper 지원안함....
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.ObjectMapper는 자바8에서만 지원하고 이제 스프링부트 3.0으로 넘어오면서 자바17버전을 사용하고 있어서 ObjectMapper 가 사용이 안됩니다... ObjectMapper를 대채할 메소드가 있나요 ??
-
미해결스프링 시큐리티 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())); }
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
thymeleaf에러
이렇게 타임리프에 노란줄이 뜨고run 실행하면 계속 처리시간이 계속 쌓이는데404에러가 뜨는데 어떻게 해결해야 좋을까요