묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
빌드 에러
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.D:\down\study\hello-spring\hello-spring스프링 폴더를 설치한 곳cmd콘솔로 들어가서 위의 폴더까지 이동 후 강의자료처럼 실행하려 하는데 실행이 안되네요..
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
gradlew build오류
자바 버전 17으로 맞게 설정해놨고, 인텔리제이 내에서도 전부 버전을 일치시켰습니다. 하지만 자꾸 빌드가 실패해요ㅠㅠ 도저히 모르겠습니다...도와주세요ㅠㅠ
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
spingmvc 5.3.2x 버전 RequestMappingHandlerMapping.java 변경
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요, 항상 좋은 강의 제공해주셔서 감사합니다. 질문강의 교안에 의하면 (section5 8p)RequestMappingHandlerMapping이 애노테이션 기반의 컨트롤러인 @RequestMapping 에서 사용된다고 명시되어 있습니다.이때, springmvc 버전 변경에 의해 @RequestMapping 이 아니라 @Controller 으로 바꾸어 이해하는 것이 더 올바른지 여쭤봅니다. springmvc 5.3.2x 버전 부터 RequestMappingHandlerMapping.java 클래스의 isHandler() 메서드의 구현이 아래와 같이 변경되었음을 확인했습니다.출처 : [springmvc github commit 이력](https://github.com/spring-projects/spring-framework/commit/3600644ed1776dce35c4a42d74799a90b90e359e) 때문에 5.3.2x 버전 부터 핸들러 매핑에서 @RequestMapping 을 사용한 컨트롤러는 찾을 수 없기 때문에 @Controller 으로 바꾸어 생각해야 하는 것이 아닌지 여쭈어봅니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
addAttribute에러
에러어떻게 해결해야 하나요!
-
미해결스프링 핵심 원리 - 기본편
main에서 코드실행시 gradle에서 빌드되는거같아요 ㅠ
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요강의잘듣고있습니다!Main에서 코드실행시 스프링 로딩되면서 로그가 보여야하는데, 뭔가 Gradle 실행된는것같아요구글링해서 찾아봣는데 해결법을 찾을수가없어서 질문드립니다!메인 실행시 아래 화면처럼 나옵니다!확인부탁드립니다!
-
미해결스프링 핵심 원리 - 기본편
UnsatisfiedDependencyException와 NoUniqueBeanDefinitionException의 차이점
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요 영한 쌤. @Autowired 시 동일한 타입의 빈이 2개 이상일 때를 확인하고 있던 중, 강의와는 다른 에러가 나와서 질문 드립니다. 강의에서는 현재 NoUniqueBeanDefinitionException 에러가 발생하고 있는데 저는 UnsatisfiedDependencyException 라는 에러가 발생합니다.NoUniqueBeanDefinitionException 의 경우에 동일한 타입의 빈이 중복으로 존재한다는 의미이고, UnsatisfiedDependencyException 의 경우에는 의존성이 들어오고 있지 않는 것이 문제라고 알고 있었습니다. 하지만 현재 매칭되는 빈이 2개라는 에러 메세지가 발생하며 UnsatisfiedDependencyException 에러가 발생했고, 두 에러의 차이점을 명확히 하고 싶어 문의를 드립니다. 두 에러가 같은 상황에서 혼용될 수 있는 에러인가요? org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'orderServiceImpl' defined in file [/Users/wooruk/workspace/younghan/spring/core/out/production/classes/com/hello/core/order/OrderServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 1: No qualifying bean of type 'com.hello.core.discount.DiscountPolicy' available: expected single matching bean but found 2: fixDiscountPolicy,rateDiscountPolicy
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
실행이 갑자기 안 됩니다.ㅠㅠ
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.2024-05-17T11:41:14.307+09:00 ERROR 20364 --- [ main] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Exception during pool initialization.2024-05-17T11:41:14.314+09:00 WARN 20364 --- [ main] o.h.e.j.e.i.JdbcEnvironmentInitiator : HHH000342: Could not obtain connection to query metadata2024-05-17T11:41:14.351+09:00 ERROR 20364 --- [ main] o.s.boot.SpringApplication : Application run failed 해당 강의를 들은 후 유튜브에서 mysql에 mariadb를 사용하는 강의를 따라했는데 현재는 두 프로젝트에 에러가 뜬 상태입니다.유튜브를 보고 따라한 프로젝트는 삭제를 한 상태이고요그 후 hello-spring을 실행한 후 뜬 에러메세지가 위와 같습니다.ㅜㅜ
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
frontController 객체 생성시점
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.package hello.servlet.web.frontcontroller.v1; import hello.servlet.web.frontcontroller.v1.controller.MemberFormControllerV1; import hello.servlet.web.frontcontroller.v1.controller.MemberListControllerV1; import hello.servlet.web.frontcontroller.v1.controller.MemberSaveControllerV1; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.HashMap; import java.util.Map; //v1하위 어떤게 와도 해당 서블릿 호출된다. @WebServlet(name = "frontControllerServletV1", urlPatterns = "/front-controller/v1/*") public class FrontControllerServletV1 extends HttpServlet { private Map<String, ControllerV1> controllerMap = new HashMap<>(); public FrontControllerServletV1() { System.out.println("FrontControllerServletV1.FrontControllerServletV1 인스턴스 생성 실행"); controllerMap.put("/front-controller/v1/members/new-form", new MemberFormControllerV1()); controllerMap.put("/front-controller/v1/members/save", new MemberSaveControllerV1()); controllerMap.put("/front-controller/v1/members", new MemberListControllerV1()); } @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("FrontControllerServletV1.service"); String requestURI = request.getRequestURI(); ControllerV1 controller = controllerMap.get(requestURI); controller.process(request,response); } }이 프론트 컨트롤러도 하나의 서블릿 객체인데 서블릿 객체는 요청이 들어올때(최초 로드)한번 실행되고 그 이후부터는 객체를 재사용하는걸로 아는데 서버를 구동하면 저 프론트 컨트롤러 객체가 생성됩니다. 해당 url(urlPatterns = "/front-controller/v1/*"))로 요청을 하지 않았는데 이유가 뭐죠?
-
미해결PZM기반 실무중심 백엔드 부트캠프(프리트레이닝)
root-context가 다르게 나와서 복사하려는데 깃허브 어디로 들어가야 하나요?
root-context가 다르게 나와서 복사하려는데 깃허브 어디로 들어가야 하나요?
-
해결됨스프링 시큐리티 OAuth2
oauth2 적용시 cors 에러
안녕하세요 디테일한 강의 어렵지만 조금씩 잘 보고 있습니다.좋은 강의 만들어주셔서 감사합니다. 제가 실무에서 oauth2 로 google , naver 로그인 연동에 진행중에 있습니다.spring boot 3.x 버전이고 kotlin 으로 진행중에 있습니다. 현재 cors 에러가 나서 검색하다가https://www.inflearn.com/questions/1064449/authenticationentrypoint-%EB%A5%BC-%EA%B8%B0%EB%B3%B8-%EC%84%A4%EC%A0%95%EB%90%9C-login%EC%9D%B4-%EC%95%84%EB%8B%8C-react-%EC%9B%B9-%ED%8E%98%EC%9D%B4%EC%A7%80%EB%A1%9C-%EC%84%A4%EC%A0%95-%EC%8B%9C-cors-%EB%AC%B8%EC%A0%9C%EA%B0%80-%EC%A7%80%EC%86%8D%ED%95%B4%EC%84%9C-%EB%B0%9C%EC%83%9D%ED%95%A9 여기서말씀하신CorsConfigurationSource corsConfigurationSource() 적용해보았고정말 많은 수정을 하였지만 계속 cors 에러가 나고 있는상황입니다.현재 local 에서 작업테스트중이며front : localhost:3000backend : localhost:8080 현재 api 서버입니다. 인증이 필요없는 페이지에서는 axios 로 호출된 데이터가 잘 호출이됩니다.아래는 kotlin 으로만든 securityConfig 입니다.혹시 추가할 사항이 있을까요? 봐주셔서 감사합니다.( 별도의 WonCoinfig 클래스에 corsRegistry 도 추가되어 있습니다. ) package hurryup.hukbizibbackend.config import hurryup.hukbizibbackend.service.CustomOAuth2UserService import hurryup.hukbizibbackend.utils.JWTFilter import hurryup.hukbizibbackend.utils.JWTUtil import hurryup.hukbizibbackend.utils.OAuth2SuccessHandler import org.springframework.context.annotation.Bean import org.springframework.context.annotation.Configuration import org.springframework.security.config.annotation.web.builders.HttpSecurity import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity import org.springframework.security.config.http.SessionCreationPolicy import org.springframework.security.web.SecurityFilterChain import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter import org.springframework.security.web.authentication.logout.CookieClearingLogoutHandler import org.springframework.web.cors.CorsConfiguration import org.springframework.web.cors.CorsConfigurationSource import org.springframework.web.cors.UrlBasedCorsConfigurationSource @Configuration @EnableWebSecurity class SecurityConfig( private val customOAuth2UserService: CustomOAuth2UserService, private val oAuth2SuccessHandler: OAuth2SuccessHandler, private val jwtUtil: JWTUtil ) { // // private fun configureCors(corsCustomizer: CorsConfigurer<HttpSecurity>) { // corsCustomizer.configurationSource(corsConfigurationSource()) // } // // @Bean // fun corsConfigurationSource(): CorsConfigurationSource { // println("corsConfigurationSource") // val configuration = CorsConfiguration() // configuration.allowedOrigins = listOf("http://localhost:3000") // //configuration.addAllowedOrigin("*") // configuration.allowedMethods = listOf("GET", "POST", "PUT", "DELETE", "OPTIONS") // //configuration.allowedHeaders = listOf("*") // configuration.allowedHeaders = listOf("Origin", "Content-Type", "Accept", "Authorization", "X-Requested-With", "X-XSRF-TOKEN", "X-Auth-Token", "X-Auth-Token-Expire", "X-Auth-Token-Refresh") // //configuration.exposedHeaders = listOf("Set-Cookie", "Authorization") // configuration.maxAge = 3600L // configuration.allowCredentials = true // // return CorsConfigurationSource { configuration } // } @Bean fun corsConfigurationSource(): CorsConfigurationSource { val config = CorsConfiguration() config.allowCredentials = true config.allowedOrigins = listOf("http://localhost:3000") config.allowedMethods = listOf("GET", "POST", "PUT", "DELETE", "PATCH", "OPTIONS") config.allowedHeaders = listOf("*") config.exposedHeaders = listOf("*") val source: UrlBasedCorsConfigurationSource = UrlBasedCorsConfigurationSource() source.registerCorsConfiguration("/**", config) return source } @Bean fun securityFilterChain(http: HttpSecurity): SecurityFilterChain { http //.cors { configureCors(it) } .cors { it.configurationSource(corsConfigurationSource()) } http .csrf { it.disable() } http .formLogin { it.disable() } http .httpBasic { it.disable() } http .addFilterAfter(JWTFilter(jwtUtil), UsernamePasswordAuthenticationFilter::class.java) http .oauth2Login { oauth2 -> oauth2.userInfoEndpoint { endpoint -> endpoint.userService(customOAuth2UserService) } .successHandler(oAuth2SuccessHandler) } http .logout { it.deleteCookies("Authorization") // 단순 쿠키삭제 // 이 메소드는 LogoutHandler 인터페이스를 구현한 CookieClearingLogoutHandler 객체를 로그아웃 핸들러로 추가합니다. // CookieClearingLogoutHandler는 생성자에서 받은 쿠키 이름들을 로그아웃 시 삭제합니다. // 이 메소드는 여러 개의 쿠키를 한 번에 삭제할 수 있으며, 추가적인 로그아웃 로직을 구현할 수 있습니다. .addLogoutHandler(CookieClearingLogoutHandler("Authorization")) } http .authorizeHttpRequests { auth -> auth.requestMatchers("/", "/login", "/swagger-ui/**", "/v3/**","/api/v1/users/" + "").permitAll() // root 경로는 모두허용 .anyRequest().authenticated() // 나머지는 인증 필요 } http .sessionManagement { session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS) } return http.build() } }
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
세션 만료 후 로그인 페이지로 자동 리다이렉트 설정 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요?김영한님께서 만들어주신 로드맵 덕분에 스프링을 잘 이해하고 현업에서 잘 활용하고 있어서 너무 감사드립니다. 현업에서 스프링으로 개발을 하다가 한가지 궁금한게 있어서 문의 드립니다.세션이 만료가 되면 자동으로 로그인 페이지로 리다이렉트 해주는 스프링 내부 셋팅이 어디에 있나요?컨트롤러에서 직접 하고 있지는 않고요, 스프링 내부 어디에선가 해 주고 있는데요... 경험치가 부족해서 찾을 수가 없네요. jdk 1.8을 사용하면서 Spring Framework 4.3.12 를 사용하는것 같네요. 감사합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
인텔리제이 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.버젼은 다 맞게 깔렸으며인텔리제이 커뮤니티 버젼으로 설치.2020년 3월 버전으로 설치.오류 해결 부탁드려요!
-
미해결견고한 결제 시스템 구축
테스트 시 오류
안녕하세요 강사님테스트 진행 시에 오류가 발생해서강사님께서 올려주신 샘플 프로젝트에서도 똑같이 테스트 진행해보았으나 동일한 오류가 발생합니다혹시 테이블 제약조건 변경이 필요한건가요..?제가 테이블 생성 시 사용했던 스크립트와 오류메세지 전달드립니다감사합니다 could not execute statement [Cannot add or update a child row: a foreign key constraint fails (`test`.`ledger_entries`, CONSTRAINT ledger_entries_ibfk_1 FOREIGN KEY (`transaction_id`) REFERENCES ledger_transaction (`id`))] [insert into ledger_entries (account_id,amount,transaction_id,type) values (?,?,?,?)]; SQL [insert into ledger_entries (account_id,amount,transaction_id,type) values (?,?,?,?)]; constraint [null]
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
db 컬럼 이름 형식
JPA 관련 질문 드립니다.db 테이블의 컬럼 이름을 만들 때 isSold 라는 컬럼을 케멀케이스 형식으로 만들었습니다.그런데 이러한 함수를 만들어서 사용할려고 하니 계속 에러가 떴습니다.이러한 에러가 나와서 살펴보니 is_sold라는 컬럼을 찾는 것 같은데 저는 IsSold라고 컬럼명을 지어서 오류가 나는 거라고 생각이듭니다.제가 궁금한점은1. jpa가 스네이크케이스 형식으로 컬럼명을 자동으로 찾는 것 같아 오류가 나오는 걸로 생각이 드는데 이게 맞을까요?2. 그럼 db의 컬럼 명을 처음 만들 때 컬럼명이 길 경우 스네이크케이스 형식으로 만들어야 할까요? 보편적으로 어떻게 하는지 궁금합니다.
-
미해결견고한 결제 시스템 구축
JpaLedgerTransactionMapper.class
강사님 샘플 프로젝트에서 발견한 오타 제보드립니다!!referenceType = ledgerTransaction.referenceType,referenceType = ledgerTransaction.referenceType.name,
-
미해결스프링 프레임워크는 내 손에 [스프1탄]
깃허브 주소
선생님 강의에서 코드 대신 필기하며 듣고싶어 그런데 강의 코드가 있는 깃허브 주소는 없을까요 ?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
o.s.b.d LoggingFailureAnalysisReporter 오류
2024-05-16T23:53:30.318+09:00 ERROR 11428 --- [library-app] [ restartedMain] o.s.b.d.LoggingFailureAnalysisReporter : ***************************APPLICATION FAILED TO START***************************Description:Parameter 0 of constructor in com.group.libraryapp.service.book.BookService required a bean of type 'com.group.libraryapp.domain.book.BookRepository' that could not be found.Action:Consider defining a bean of type 'com.group.libraryapp.domain.book.BookRepository' in your configuration.Process finished with exit code 0이런 오류가 뜨는데 bean 설정도 강의 내용그대로 한거 같은데 계속 코드를 수정하려고 해도 Error 가 떠서 해결방법을 모르겠습니다package com.group.libraryapp.service.book; import com.group.libraryapp.domain.book.Book; import com.group.libraryapp.domain.book.BookRepository; import com.group.libraryapp.domain.user.User; import com.group.libraryapp.domain.user.UserRepository; import com.group.libraryapp.domain.user.loanhistory.UserLoanHistory; import com.group.libraryapp.domain.user.loanhistory.UserLoanHistoryRepository; import com.group.libraryapp.dto.Book.request.BookCreateRequest; import com.group.libraryapp.dto.Book.request.BookLoanRequest; import com.group.libraryapp.dto.Book.request.BookReturnRequest; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @Service public class BookService { private final BookRepository bookRepository; private final UserLoanHistoryRepository userLoanHistoryRepository; private final UserRepository userRepository; public BookService( BookRepository bookRepository, UserLoanHistoryRepository userLoanHistoryRepository, UserRepository userRepository) { this.bookRepository = bookRepository; this.userLoanHistoryRepository = userLoanHistoryRepository; this.userRepository = userRepository; } @Transactional public void saveBook(BookCreateRequest request){ bookRepository.save(new Book(request.getName())); } @Transactional public void loanBook(BookLoanRequest request){ Book book = bookRepository.findByName(request.getBookName()) .orElseThrow(IllegalArgumentException::new); if(userLoanHistoryRepository.existsByBookNameAndIsReturn (book.getName(),false)){ throw new IllegalArgumentException("이미 대출되어 있는 책 입니다"); } User user = userRepository.findByName(request.getUsername()) .orElseThrow(IllegalArgumentException::new); userLoanHistoryRepository.save(new UserLoanHistory(user, book.getName())); } @Transactional public void returnBook(BookReturnRequest request){ User user= userRepository.findByName(request.getUserName()) .orElseThrow(IllegalArgumentException::new); UserLoanHistory history = userLoanHistoryRepository.findByUserIdAndBookName(user.getId(), request.getBookName()) .orElseThrow(IllegalArgumentException::new); history.doReturn(); } } package com.group.libraryapp.domain.book; import org.springframework.data.jpa.repository.JpaRepository; import java.util.Optional; public interface BookRepository extends JpaRepository<Book,Long> { Optional<Book> findByName(String bookName); }
-
해결됨스프링 DB 2편 - 데이터 접근 활용 기술
DB강의 듣다 강이ppt의 외래키 부분을 보고 궁금증이 생겨 질문 남깁니다.
웹 개발을 할 때 DDL을 통해 생성되는 테이블들은 모두 서비스에서 사용되는 객체들을 보고 만드는것 같은데 (예를 들면 Member 클래스, Item클레스들을 생각했습니다)만약 어떤 회원 A가 아이템A를 등록하였으면 데이터 베이스의 회원과 아이템 사이에는 등록이라는 관계가 생성이 되고 회원 1명은 아이템을 여러개 등록이 가능하다면 Member 테이블의 PK를 Item 테이블의 FK로 등록되며 Item 테이블의 속성들은 (id, item_name, price, quantity, member_id)로 설정이 될것 같은데 이런 경우 Item 클레스의 멤버변수로Member member_id; 를 생성해주어야 할것 같은데 이런 외래키 값은 도메인을 설계할때 어떻게 처리해야 하나요?그리고 api로 통신할 때 클라이언트 에게 데이터를 넘겨줄 때 스프링 입문 강의에서 hello 객체자체를 return 하면 스프링의 잭슨라이브러리가 json포멧으로 변환해서 넘겨준다고 해주셨는데 여러개의 테이블이 조인된 결과를 json으로 반환 해주려면(예를 들어서 멤버 A가 등록한 아이템의 이름과 가격, 멤버의 이름을 요청한다면 반환되는 튜플이 item_name, price, member_name) 이것들은 하나의 객체가 아닌 Member클래스와 Item클래스의 일부 변수들을 사용한 새로운 값들인데 이럴때는 어떤 방법으로 return해주어야 하나요? 클라이언트측과 조율을 하여 검색되는 조건을 설정하여 조인검색의 제약을 설정하나요? 제약을 설정한다면 반환할 때 (item_name, price, member_name)이 3개의 속성들을 멤버변수로 사용하는 새로운 클래스를 생성하여 반환해 주어야 하나요?
-
해결됨스프링 핵심 원리 - 기본편
assertThat() 인자값 질문있습니다.
assertThat() 메서드에 대해서 찾아 봤는데, 매개변수 이름이 actual(실제값) 이더라구요. 그리고 isEqualTo() 메서드의 매개변수 이름은 expected(기대값)이구요.그러면 assertThat() 메서드를 호출할 때 인자값으로 테스트하고자 하는 값을, 그리고 isEqualTo() 메서드는 테스트의 결과로 기대되는 값을 넘기는게 맞지 않나요?여기 아래 코드에서 memberService.findMember(1L)로 찾아온 회원(findMember)이앞서 직접 만들어서 join으로 넘긴 member와 같아야 하는 거니까Assertions.assertThat(findMember).isEqualTo(member)가 맞는거 아닌가요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
localhost:8080 에러에 관하여..
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요 현재 프로젝트 생성 강의에 나오는대로 따라하였는데 톰캣이 뜨지 않는데 뭐가 문제인지 잘 모르겠습니다..