묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
WebSecurity관해여 질문드립니다
강의자료 pdf 19page 설명하실 때 WebSecurity는 HttpSecurity에서 생성한 SecurityFilterChain을 SecurityBuilder에 저장한다고 하셨는데, SecurityBuilder는 인터페이스인데 어떻게 저장하는지 이해가 안됩니다. 원래 변수나 데이터들은 객체에 저장하는게 아닌가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
빌드 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]명령 프롬포트에서 java를 치면 나오는데, gradlew.bat치면 'gradlew.bat'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다. 라고 나와요 ㅠㅠ자바는 22버전입니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
레포지토리 테스트 코드 작성
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에서 findById 테스트코드 작성 안 하는 이유가 있나요 ?
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
컨트롤러에서 그냥 Authentication을 파라미터로 받아요면 null인 이유
컨트롤러가 실행되는 시점이면 이미 모든 Filter를 거쳤으니 AnonymousAuthenticationFilter도 거쳤을거라 생각하고, SecurityContext에도 AnonymousAthenticationToken이 있으니,Authentication에 AnonymousAthenticationToken이 있을거라 생각했는데, 왜 null이 있는건가요??그리고 왜 @CurrentSecurityContext로 찾을때만 AnonymousAthenticationToken를 받을수 있는건가요??
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
카프카 설치 오류
카프카 설치 시 오류가 납니다.어떻게 해결 하나요? C:\SpringBoot\springcloud\kafka-demo\kafka_2.12-2.7.0\kafka_2.12-2.7.0>.\bin\windows\zookeeper-server-start.bat .\config/zookeeper.properties\MySQL\Connector은(는) 예상되지 않았습니다.
-
미해결실습으로 배우는 선착순 이벤트 시스템
test 과정에서 오류가 발생합니다.
코드는 3번정도 체크해서 강의 내용과 같은 방식으로 작성하였습니다.db는 mysql>maria로만 바꿨습니다.앞에서 질문들에서 나왔던 것처럼 숫자가 출력되지않는 현상이 발생합니다.https://github.com/zhzkal2/coupon_study혹시몰라서 깃 코드도 올려둡니다.환경은 윈도우 환경이라서docker-compose 로 세팅했어요.도커데스크탑에서 consumer생성을 했고인텔리제이 kafka 플러그인으로 컨슈머랑 토픽 둘다 확인했습니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
JPA활용 2들어가기 전에 질문
JPA에 대한 기본적인 CRUD는 알고 있는 상태입니다.자바 ORM표준 JPA프로그래밍이라는 강의 수강해야 JPA2강의를 이해할 수 있는걸까요? 강의에서 요구하는 수준이 궁금합니다
-
미해결토비의 스프링 부트 - 이해와 원리
Tomcat 포트 프로퍼티 미설정시 랜덤 포트 설정 문의
server.contextPath=/app 처럼/ 이후 아무 텍스를 넣고 port 값은 설정하지 않은 상태에서 실행을 하게 되면 아래와 같이 포트가 랜덤하게 설정됩니다.실행할때마다 포트 번호가 다르게 할당됩니다.Tomcat started on port(s): 33745 (http) with context path '/app'어떤 부분에서 이렇게 랜덤한 포트를 설정해주는지 궁금합니다.
-
미해결토비의 스프링 부트 - 이해와 원리
@Import 로 Bean을 등록해야하는 기준이 뭔지 궁금합니다.
@Import(ServerProperties.class) public class TomcatWebServerConfig { @Bean("tomcatWebServerFactory") @ConditionalOnMissingBean@Import(MyAutoConfigImportSelector.class) public @interface EnableMyAutoConfiguration { }두 케이스의 경우 @Import를 통해 클래스를 Bean으로 등록하고 있는데 @Bean 이나 @Component로 안되는 이유가 있을까요?@Component는 개발자가 컨트롤 가능한 클래스의 경우에 사용이 가능하고 @Bean은 그렇지 못한 경우에 사용하는 걸로 이해하고 있는데 Serverproperties 클래스는 직접 작성한 코드인데도 @Import가 아니면 Bean 등록이 안되어서 질문을 드립니다.
-
미해결[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발
롬북이 안먹히는것같아요
getter ,setter 가 오류가나는데 원인을 모르겠어요
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
aop 실행시 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]The dependencies of some of the beans in the application context form a cycle:memberController defined in file [C:\MyJava\study\hello-spring\out\production\classes\hello\hello_spring\controller\MemberController.class]↓memberService defined in class path resource [hello/hello_spring/service/SpringConfig.class]┌─────┐| timeTraceAop defined in class path resource [hello/hello_spring/service/SpringConfig.class]└─────┘이렇게 오류가 납니다의존하는게 서로 겹친건지수업과 똑같이 해도 오류나는 이유를 모르겠네요https://drive.google.com/file/d/1UAbLzMZ1jvYSh7vWVDv0XIwgat0giIVu/view?usp=drive_link
-
해결됨코드로 배우는 React 19 with 스프링부트 API서버
router 이동 질문 드립니다.
안녕하세요. 열심히 강의 듣고 있습니다. ... react에서 router 이동에 궁금한거 잇어서 질문 드려요1root 의 라우터에는 TodoIndex와 ProductsIndex 2개의 페이지가 있습니다. ............ 생략 ..............{ path: "todo", element: ...<TodoIndex/>..., children: todoRouter() }, { path: "products", element: ... <ProductsIndex/>..., children: productsRouter() }2.TodoIndex의 child은 todoRoter이고 add의 TodoAdd와 mdify의 TodoModify가 있습니다. { path: "add", element: ...<TodoAdd/>... }, { path: "modify/:tno", element: ...<TodoModify/>... }ProductsIndex의 child은 productsRouter이고 add의 ProductList와 mdify의 ProductModify가 있습니다. 현재 ../products/add 에 있다고 했을때 add 페이지에 있는 버튼을 누르면 ../todo/add 로 점프해서 이동하려면 어떻게 navigate 해야되나요? todo/add에서 todo/modify 이런식의 같은 폴더 레벨이면 쉽게 이동되던데 ...
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
Product 컨트롤러 api 결과값 리턴 질문
상품 등록이나 수정을 하고나서return Map.of("result", "Success")이렇게 리턴해주셨는데실무에서 이런 방식을 많이 사용하나요 아니면 교육목적이기 때문에 조금 러프하게 하신건가요??이번 강의를 보고 실무와 가깝게 프로젝트를 진행하고 싶은데 이렇게 Map에 간단하게 리턴할지 아니면 api마다 매번ResponseEntity에 Http Status Code 담아 리턴해야 할지 기준을 모르겠습니다.제 목적에 맞게 하려면 어떤 방식으로 api 결과를 리턴해줘야 할까요??
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
회원 권한이 있어도 deinied로 가는데 이유가 뭘까요? ㅠㅠ
package io.security.springsecuritymaster.security.config; import io.security.springsecuritymaster.security.filter.RestAuthenticationFilter; import io.security.springsecuritymaster.security.handler.FormAuthenticationSuccessHandler; import io.security.springsecuritymaster.security.handler.FromAuthenticationFailureHandler; import io.security.springsecuritymaster.security.handler.FromAccessDeniedHandler; import io.security.springsecuritymaster.security.handler.RestAuthenticationFailureHandler; import io.security.springsecuritymaster.security.handler.RestAuthenticationSuccessHandler; import io.security.springsecuritymaster.security.provider.RestAuthenticationProvider; import io.security.springsecuritymaster.security.token.RestAuthenticationToken; import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.annotation.Order; import org.springframework.security.authentication.AuthenticationDetailsSource; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.AuthenticationProvider; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer; import org.springframework.security.core.userdetails.User; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.crypto.factory.PasswordEncoderFactories; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.provisioning.InMemoryUserDetailsManager; import org.springframework.security.web.SecurityFilterChain; import org.springframework.security.web.authentication.AuthenticationFailureHandler; import org.springframework.security.web.authentication.AuthenticationSuccessHandler; import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; import org.springframework.security.web.authentication.WebAuthenticationDetails; @EnableWebSecurity @Configuration @RequiredArgsConstructor public class SecurityConfig { // private final UserDetailsService userDetailsService; private final AuthenticationProvider authenticationProvider; private final RestAuthenticationProvider restAuthenticationProvider; private final FormAuthenticationSuccessHandler formAuthenticationSuccessHandler; private final FromAuthenticationFailureHandler fromAuthenticationFailureHandler; private final RestAuthenticationSuccessHandler restAuthenticationSuccessHandler; private final RestAuthenticationFailureHandler restAuthenticationFailureHandler; private final AuthenticationDetailsSource<HttpServletRequest, WebAuthenticationDetails> authenticationDetailsSource; @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .authorizeHttpRequests(auth -> auth .requestMatchers("/css/**", "/images/**", "/js/**", "/favicon.*", "/*/icon-*").permitAll() // 정적 자원 설정 .requestMatchers("/", "/signup", "/login*").permitAll() .requestMatchers("/user").hasAuthority("ROLE_USER") .requestMatchers("/manager").hasAuthority("ROLE_MANAGER") .requestMatchers("/admin").hasAuthority("ROLE_ADMIN") .anyRequest().authenticated() ) .formLogin(form -> form .loginPage("/login").permitAll() .authenticationDetailsSource(authenticationDetailsSource) .successHandler(formAuthenticationSuccessHandler) .failureHandler(fromAuthenticationFailureHandler) ) // .userDetailsService(userDetailsService) .authenticationProvider(authenticationProvider) .exceptionHandling(exception -> exception.accessDeniedHandler(new FromAccessDeniedHandler("/denied"))) ; return http.build(); } @Bean @Order(1) public SecurityFilterChain restSecurityFilterChain(HttpSecurity http) throws Exception { AuthenticationManagerBuilder authenticationManagerBuilder = http.getSharedObject(AuthenticationManagerBuilder.class); authenticationManagerBuilder.authenticationProvider(restAuthenticationProvider); AuthenticationManager authenticationManager = authenticationManagerBuilder .build(); http .securityMatcher("/api/login") .authorizeHttpRequests(auth -> auth .requestMatchers("/css/**", "/images/**", "/js/**", "/favicon.*", "/*/icon-*").permitAll() // 정적 자원 설정 .anyRequest().permitAll() ) .csrf(AbstractHttpConfigurer::disable) .addFilterBefore(restAuthenticationFilter(http, authenticationManager), UsernamePasswordAuthenticationFilter.class) .authenticationManager(authenticationManager) ; return http.build(); } private RestAuthenticationFilter restAuthenticationFilter(HttpSecurity http, AuthenticationManager authenticationManager) { RestAuthenticationFilter restAuthenticationFilter = new RestAuthenticationFilter(http); restAuthenticationFilter.setAuthenticationManager(authenticationManager); restAuthenticationFilter.setAuthenticationSuccessHandler(restAuthenticationSuccessHandler); restAuthenticationFilter.setAuthenticationFailureHandler(restAuthenticationFailureHandler); return restAuthenticationFilter; } // @Bean // public UserDetailsService userDetailsService() { // UserDetails user = User.withUsername("user").password("{noop}1111").roles("USER").build(); // return new InMemoryUserDetailsManager(user); // } }
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
UnsupportedJavaError
오늘 처음 강의를 듣기 시작했는데, 프로젝트 생성 편에서 open jdk 22.0.1 그래들 8.9를 사용하니 에러가 발생합니다.정상적으로 작동하여 아래 처럼 실행이 되지만,실행을 종료한 후에 이런 메세지가 나오는 것으로 보입니다.해결 방법이 어떻게 될까요? +그래들로 실행하는 경우에만 발생하는 것 같습니다.저장
-
해결됨입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기
org.junit.jupiter.api.extension.ParameterResolutionException: Failed to resolve parameter
테스트 코드 실행시 의존성 주입이 안되는 듯한 에러가 있습니다...org.junit.jupiter.api.extension.ParameterResolutionException: Failed to resolve parameter [com.mkim.portfolio.domain.repository.ExperienceRepository experienceRepository] in constructor [public com.mkim.portfolio.domain.repository.ExperienceRepositoryTest(com.mkim.portfolio.domain.repository.ExperienceRepository)]: Failed to load ApplicationContext for [MergedContextConfiguration@41120e48 testClass = com.mkim.portfolio.domain.repository.ExperienceRepositoryTest, locations = [], classes = [com.mkim.portfolio.PortfolioApplication], contextInitializerClasses = [], activeProfiles = [], propertySourceDescriptors = [], propertySourceProperties = ["org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTestContextBootstrapper=true"], contextCustomizers = [org.springframework.boot.test.autoconfigure.OverrideAutoConfigurationContextCustomizerFactory$DisableAutoConfigurationContextCustomizer@15bb5034, org.springframework.boot.test.autoconfigure.actuate.observability.ObservabilityContextCustomizerFactory$DisableObservabilityContextCustomizer@1f, org.springframework.boot.test.autoconfigure.filter.TypeExcludeFiltersContextCustomizer@34be3d80, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@854e4b26, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizer@7a35b0f5, [ImportsContextCustomizer@165a5979 key = [org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration, org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration, org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManagerAutoConfiguration, org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration, org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration, org.springframework.boot.autoconfigure.sql.init.SqlInitializationAutoConfiguration, org.springframework.boot.test.autoconfigure.jdbc.TestDatabaseAutoConfiguration, org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration, org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration, org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration, org.springframework.boot.autoconfigure.jdbc.JdbcClientAutoConfiguration, org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration, org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration]], org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@7bd7d6d6, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@2a8448fa, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.context.SpringBootTestAnnotation@4d8dfd98], contextLoader = org.springframework.boot.test.context.SpringBootContextLoader, parent = null] @Autowired 도 잘 넣은듯한데 왜 해당 에러가 발생하는지를 파악을 못하고 있습니다...test를 하려하는 타겟 레포지토리도 하위 경로에 잘 존재합니다.interface ExperienceRepository : JpaRepository<Experience, Long> { fun findAllByIsActive(isActive: Boolean): List<Experience> }현재 플러그인과 디펜던시는 아래와 같습니다.plugins { id("org.springframework.boot") version "3.3.0" id("io.spring.dependency-management") version "1.1.5" kotlin("plugin.jpa") version "1.9.24" kotlin("jvm") version "1.9.24" kotlin("plugin.spring") version "1.9.24" } dependencies { implementation("org.springframework.boot:spring-boot-starter-data-jpa") implementation("org.springframework.boot:spring-boot-starter-thymeleaf") implementation("org.springframework.boot:spring-boot-starter-validation") implementation("org.springframework.boot:spring-boot-starter-web") implementation("com.fasterxml.jackson.module:jackson-module-kotlin") implementation("org.jetbrains.kotlin:kotlin-reflect") runtimeOnly("com.h2database:h2") runtimeOnly("com.mysql:mysql-connector-j") testImplementation("org.springframework.boot:spring-boot-starter-test") testImplementation("org.jetbrains.kotlin:kotlin-test-junit5") testRuntimeOnly("org.junit.platform:junit-platform-launcher") }제가 확인해야할 부분을 잘 못찾고 있는듯합니다... 혹시 제가 놓치는 부분이 있을까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
member 객체 id 생성 관련 질문입니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]테스트를 실행할 때마다 member 객체가 초기화되고, repository에 저장이 되는데, 그럼 db에 userName=memberA로 갖는 객체가 여러 개 저장되야 하는 거 아닌가요?왜 테스트를 계속 실행해도 DB엔 userName=memberA인 객체 하나만 저장되어 있는 건가요?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
h2 콘솔 접근 불가
위의 에러가 나옵니다 활성화도 제대로 된거 같은데 h2-console에 jdbc:h2:mem:library;MODE=MYSQL;NON_KEYWORDS=USER를 입력하고 connect버튼을 누르면 에러가 나오고 url은 초기화 됩니다. local로 돌려도 화면상에 mysql연결이 된 거 같이 데이터는 그대로 입니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
주문 서비스 개발 할 때, 주문 상품 생성에 관해
[질문 템플릿]1. 강의 내용과 관련된 질문인가요?예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요?예[질문 내용]주문 생성 시에 매개변수로 OrderItem을 여러개 받을 수 있게 했었는데 그렇다면 주문 서비스도 ItemId를 여러 개 받게 해야 하지 않나요??
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
테스트케이스 작성 중 오류
[질문 내용]회원 리포지토리 테스트케이스 작성 강의의 2분 30초를 따라할 때, 오류가 발생하는데 무엇이 문제인지, 어떻게 해결해야할 지 모르겠습니다 ㅠㅠ 이전까지는 문제없이 잘 따라했었습니다..!