묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 시큐리티 완전 정복 [6.x 개정판]
(공유) 이제는 securityMatcher 지정 안 한 FilterChain 의 순서가 맨 앞에 있으면 에러를 뱉어냅니다.
요청 기반 권한 부여 - HttpSecurity.securityMatch 강의 (14분 25초) 를 듣고 코드를 똑같이 따라 치고 실행해보니 에러가 뜨면서 동작을 안 하더군요. spring boot 버전은 3.4.1 + spring security 6.4.2 로 테스트를 해봤습니다. 조사를 해보니 에러를 뱉는 건 스프링 시큐리티의 WebSecurity 클래스였고, 아래 빨간 박스 친 부분에서 에러를 뱉습니다. 이 코드는 securityMatcher 를 설정 안 한 SecurityFilterChain, 즉 anyRequestFilterChain 이 모든 FilterChain 들 보다 항상 뒤편에 있어야 되는 것을 보장하기 위한 유효성 검사를 위한 것입니다. 선생님이 강의를 찍던 당시와 달라진 내용이 아닐까 싶습니다. 아무튼 이를 우회해서 테스트를 할 수 있는데, 선생님이 작성하신 코드에서 딱 한줄만 추가해주면 됩니다. @Bean @Order(1) public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { // !!!!!!!!!!!!!!! 아래 한 줄 추가 !!!!!!!!!!!!!!! http.securityMatchers(matcher -> matcher.requestMatchers("/**")); http.authorizeHttpRequests(auth -> { auth.anyRequest().authenticated(); }) .formLogin(Customizer.withDefaults()); return http.build(); } @Bean public SecurityFilterChain securityFilterChain2(HttpSecurity http) throws Exception { http.securityMatchers(matchers -> matchers.requestMatchers("/api/**", "/oauth/**")); http.authorizeHttpRequests(auth -> { auth.anyRequest().permitAll(); }); return http.build(); } 이상으로 내용 공유를 마칩니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
OneToMany속의 ManyToOne 조회시 질문
OneToMany 관계에서 페치조인을 하게되면 페이징이 불가하다고 하셨는데 OneToMany는 batchSize를 조절하여 해결한뒤OneToMany안의 ManyToOne 관계는 어떻게 페치조인 할수있을까요? 예를 들어서테이블 A, B, C가 있을경우A와 B는 OneToMany관계B와 C는 ManyToOne관계 class A { @OneToMany private List<B> b = new ArrayList<>(); }class B { @ManyToOne // Lazy private A a; @ManyToOne // Lazy private C c; } class C { } A를 조회하고 C까지 끌고와야하는경우A와 B는 OneToMany 관계이기 때문에 페치조인이 불가능하지만B와 C는 페치조인이 가능하다고 이해하였습니다BatchSize를 설정하여 A에서 B를 가져올시 IN 쿼리로 가져온뒤B에서 C를 페치 조인하는 방법은 없나요? 아니면 이런경우 특수하게 B에서 C를 Eager로 설정 해야할까요애초에 B를 통해서 A와 C를 가져와야할까요
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
memberrepositorytest 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.could not prepare statement [Sequence "MEMBER_SEQ" not found; SQL statement:select next value for member_seq [90036-232]] [select next value for member_seq]; SQL [select next value for member_seq]org.springframework.dao.InvalidDataAccessResourceUsageException: could not prepare statement [Sequence "MEMBER_SEQ" not found; SQL statement:select next value for member_seq [90036-232]] [select next value for member_seq]; SQL [select next value for member_seq]at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:277)at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:241)at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:560)at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61)at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:343) 이런 에러가 납니다ㅠㅠ
-
미해결[백엔드/예외처리 시나리오/집계 최적화] 백엔드 포트폴리오와 실무 이력 강화 전략. 올인원 PART1
pg 파라미터가 이제는 없어진다고 하는데 업데이트 해주시나요?
pg 파라미터가 이제는 없어진다고 하는데 업데이트 해주시나요?
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
Serializable에 대해서 질문입니다!
안녕하세요 강사님!제가 토이 프로젝트를 진행했을 때 엔티티에 implements Serializable를 하지 않았을 때 오류가 나지 않고 정상적으로 잘 되었는데(스프링 부트 3.2.4 사용 했습니다)강사님 께서는 앞선 카탈로그 엔티티 및 오더 엔티티에서 둘 다 Serializable를 implements 하셨는데 강의 말씀 하시기를 직렬화 때문에 사용을 하셨다고 말씀해주셨는데 해당과정에서 Serializable을 implements 을 하지 않으면 어떤 부분에서 오류가 나는지 여쭤 볼 수 있을까요??어느 부분에서 implements Serializable가 필요한 부분인지 모르겠습니다 ㅠㅠ보통 일반적으로 스프링에서 Jackson? 으로 직렬화를 자동으로 지원해주어 implements를 따로 해줄 필요가 없다고 알고 있었습니다.기초적인 질문이었다면 먼저 죄송하다는 말씀 드리면서 질문 드리겠습니다!감사합니다.
-
미해결[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발
현재 GIT에 올리신 소스를 실행해봤습니다.
현재 GIT에 올리신 소스를 실행해봤습니다. 그런데 시큐리티 비밀번호가 콘솔창에 뜨지 않습니다. 그리고 application.yml에서 시큐리티 관련 비밀번호 주석을 풀고 실행을 해도, rest api가 인증 없이도 호출되는 것 같습니다. 어떤 부분에서 설정이 빠진 것일까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
프로젝트 생성 강의 관련 질문드립니다~
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 프로젝트 생성 강의 듣고나서 떠오르는 2가지 질문이 있어 글을 올려봅니다! 1) 먼저, 제가 start.spring.io에선 자바 17버전으로 프로젝트를 시작했는데, 막상 main 메서드를 실행시켜서 스프링부트 애플리케이션을 띄울 때 콘솔에는2024-12-19T20:15:54.366+09:00 INFO 38362 --- [hello-spring] [ main] h.hello_spring.HelloSpringApplication : Starting HelloSpringApplication using Java 21.0.5 with PID 38362 (/Users/.../Desktop/study/hello-spring/build/classes/java/main started by ... in /Users/.../Desktop/study/hello-spring)이렇게 왜 자바 21.0.5버전을 사용하고 있다고 나올까요? 이미 제 맥북에 21버전 자바가 설치되어서 그런걸까요??build.gradle에는java { toolchain { languageVersion = JavaLanguageVersion.of(17) } }이렇게 17버전으로 올바르게 되어있긴 합니다! 2) 선생님께서 인텔리제이 Preferences > Gradle에서 Build and run using을 Gradle로 되어있는 걸 인텔리제이로 바꾸면 더 빠르게 실행할 수 있다고 하셨는데,만약, Gradle (Default)로 설정된 경우 > 인텔리제이 화살표 버튼을 클릭했을 때 자바 소스 코드를 컴파일하고 빌드 과정을 포함해서 빌드를 진행하고 스프링부트 애플리케이션을 실행하고,IntelliJ IDEA로 설정된 경우 > 인텔리제이 화살표 버튼을 클릭했을 때 자바 소스 코드를 컴파일하고 빌드를 진행하지 않고 스프링부트 애플리케이션을 바로 실행하기 때문에 더 빠르게 실행된다고 하신걸까요??
-
미해결백엔드 개발을 위한 필수 강의 - 스프링 부트3
프로젝트 생성오류 (gradle)
개발환경자바 버전 : 21.0.2프로젝트 : gradle스프링부트 : 3.4.1dependencis : 1. Spring WebSpring Boot DevTools ==================================================================인텔리제이에서 프로젝트 열기시 오류가 발생함.- 이걸로 3일째 해결을 못하고 있어요.Build file 'D:\proj\demo1\build.gradle' line: 3Plugin [id: 'org.springframework.boot', version: '3.4.1'] was not found in any of the following sources:* Try:> Run with --stacktrace option to get the stack trace.> Run with --info or --debug option to get more log output.> Run with --scan to get full insights.> Get more help at https://help.gradle.org.
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
useCallback 사용 이유를 잘 모르겠습니다...
안녕하세요 강의를 듣다 궁금한 점이 생겨서 질문 드립니다.강의에서는 list페이지와 add페이지로 이동할때 useCallbak을 사용하여 이동하는데, const handleClickList = () => { navigate('list'); }; const handleClickAdd = () => { navigate('add'); };다음과 같이 useNavigate만 사용해도 라우터 이동은 똑같지 않나요??
-
미해결[백엔드/예외처리 시나리오/집계 최적화] 백엔드 포트폴리오와 실무 이력 강화 전략. 올인원 PART1
paymentProcess() 결제내역 남기기
제가 알기로는 request_pay() 매개변수로 포트원 대시보드에서 확인가능한 storeId 와 channelkey을 추가해서 요청해야, 결제내역에 남는걸로 알고있습니다. 결제기록 안남으시면 참고하세용
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
HttpSecurity configurer
5강에서 11개의 configurer가 생성된다고 하셨는데제꺼에서는 CorsConfigurer를 제외한 10개만 생성이 됩니다.왜 이런지 알 수 있을까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
서비스테스트,리포지터리 테스트 따로 만드는 이유?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]제목그대로요 어떤차이가 있고, 현업에서도 그러는지 궁금합니다.
-
미해결스프링 부트 - 핵심 원리와 활용
실시간으로 로거 레벨을 바꾸는 기능
[질문 내용]1. 실시간으로 로그 레벨을 바꾸는 게 굉장히 신기한데 어떤 원리로 저게 가능한건가요? 강의에 나온 것처럼 POST 방식으로 보내서 로그 레벨 변경이 가능하다면 보안에 취약할 수도 있을 것 같다는 생각이 드는데(서비스를 운영하는 입장에서는 원치 않은 동작일 수도 있음) 보안을 강화하는 방법은 어떤 것이 있을까요?
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
인텔리제이 무료버전 사용중입니다. 프로젝트 생성 시
이렇게 안뜨고이렇게 떠 있는데 어떻게 프로젝트를 생성해야하는지 모르겠습니다 ㅠㅠ
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
파일들이 주황색 글씨로 떠요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 지피티에 검사해서 나오는 방법을 모두 다 해보았습니다. Gradle 프로젝트 리로드, 캐시 무효화, 프로젝트 SDK 재설정, 소스 루트 설정 확인, Gradle 빌드 툴 설정 확인 등등 모두 다 해보았지만, 여전히 저 파일들이 주황색 글씨로 뜹니다.
-
미해결[인프런 X VMware Tanzu] Spring Boot 밋업 with Josh Long
?
?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
JpaMemberRepository를 만드는 이유?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]제목그대로요 MemoryRepository, MemoryMemberRepository 정도로 만들고 끝내느게 아니라 EntityManger 활용하는 JpaRepsitory까지 만드는 이유가 뭔가요? 프로젝트 마다 다 다르겠지만 어떤 프로젝트는 심지어 서비스 없는 프로젝트까지 있더라고요. 있고 없고의 차이가 뭔지 궁금하네요
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Database not found, either pre-create it or allow remote database creation (not recommended in secure environments) [90149-232] 90149/90149
test 랑 jpashop말고 다른 db를 만들어보려고 하는데,Database not found, either pre-create it or allow remote database creation (not recommended in secure environments) [90149-232] 90149/90149이 에러가 뜨고 만들어지지 않는데 어떻게 해야 하나요? test 랑 jpashop접속은 되지만 새로운 db 생성이 안됩니다
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
findOne 메서드의 이름에 대하여
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요, 메서드 이름을 보던 중 의문이 생겨 이렇게 질문을 남깁니다. 서비스에서 findOne 메서드의 이름도 findById라고 하면 비록 리포지토리랑 이름이 겹치긴 해도 더 명확하고 좋을 거 같은데, 혹시 findOne이라고 짓는 특별한 이유가 있을까요? 강의에서 말씀하신 '서비스는 비즈니스에 가깝게 이름을 지어야 한다'는 내용과 관련된 것인지 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
JPA오류
[질문 내용]JPA 테스트 코드 오류============================CONDITIONS EVALUATION REPORT============================Positive matches:----------------- AopAutoConfiguration matched: - @ConditionalOnProperty (spring.aop.auto=true) matched (OnPropertyCondition) AopAutoConfiguration.AspectJAutoProxyingConfiguration matched: - @ConditionalOnClass found required class 'org.aspectj.weaver.Advice' (OnClassCondition) AopAutoConfiguration.AspectJAutoProxyingConfiguration.CglibAutoProxyConfiguration matched: - @ConditionalOnProperty (spring.aop.proxy-target-class=true) matched (OnPropertyCondition) ApplicationAvailabilityAutoConfiguration#applicationAvailability matched: - @ConditionalOnMissingBean (types: org.springframework.boot.availability.ApplicationAvailability; SearchStrategy: all) did not find any beans (OnBeanCondition) DataSourceAutoConfiguration matched: - @ConditionalOnClass found required classes 'javax.sql.DataSource', 'org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType' (OnClassCondition) - @ConditionalOnMissingBean (types: io.r2dbc.spi.ConnectionFactory; SearchStrategy: all) did not find any beans (OnBeanCondition) DataSourceAutoConfiguration.PooledDataSourceConfiguration matched: - AnyNestedCondition 1 matched 1 did not; NestedCondition on DataSourceAutoConfiguration.PooledDataSourceCondition.PooledDataSourceAvailable PooledDataSource found supported DataSource; NestedCondition on DataSourceAutoConfiguration.PooledDataSourceCondition.ExplicitType @ConditionalOnProperty (spring.datasource.type) did not find property 'type' (DataSourceAutoConfiguration.PooledDataSourceCondition) - @ConditionalOnMissingBean (types: javax.sql.DataSource,javax.sql.XADataSource; SearchStrategy: all) did not find any beans (OnBeanCondition)JPA코드를 작성하고 통합 테스트 코드를 작성하니 이와같은 오류가 뜹니다! 테스트 코드는 package hello.hello_spring.service; import hello.hello_spring.domain.Member; import hello.hello_spring.repository.MemberRepository; import jakarta.transaction.Transactional; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import static org.assertj.core.api.AssertionsForClassTypes.assertThat; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; @SpringBootTest @Transactional class MemberServiceIntegrationTest { @Autowired MemberService memberService; @Autowired MemberRepository memberRepository; @Test public void 회원가입() throws Exception { //Given Member member = new Member(); member.setName("hello"); //When Long saveId = memberService.join(member); //Then Member findMember = memberRepository.findById(saveId).get(); assertEquals(member.getName(), findMember.getName()); } @Test public void 중복_회원_예외() throws Exception { //Given Member member1 = new Member(); member1.setName("spring"); Member member2 = new Member(); member2.setName("spring"); //When memberService.join(member1); IllegalStateException e = assertThrows(IllegalStateException.class, () -> memberService.join(member2));//예외가 발생해야 한다. assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원입니다."); } }이렇게 되어있습니다!