묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 부트 - 핵심 원리와 활용
프로메테우스 연동
안녕하세요 질문이 있습니다.프로메테우스 설치 부분에 있어서아래의 내용을 추가하면 애플리케이션을 연동할 수 있었습니다. #추가 - job_name: "spring-actuator" metrics_path: '/actuator/prometheus' scrape_interval: 1s static_configs: - targets: ['localhost:8080'] 혹시 아래와 같이 추가하면 현재 pc의 로컬이 아닌다른 서버에서 매트릭을 받을 수 있을까요? #추가 - job_name: "spring-actuator2" metrics_path: '/actuator/prometheus2' scrape_interval: 1s static_configs: - targets: ['http://192.*.*.*:8080'] <-이 부분을 서버의 주소로 변경
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
run도 안뜨고 갑자기 오류부터 떠서 질문해봅니다
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]아래 사진은 다운 과정이고 위 사진은 압축 푼 파일 열자마자 뜨는 오류입니다. run 버튼도 안뜹니다. 무엇이 문제일까요..
-
미해결스프링 시큐리티
최신 스프링 시큐리티 - Ajax 로그인 시도 시 쿠키가 오지 않을 때 삽질 기록
증상### 로그인(일반 회원) POST http://localhost:8080/api/login Content-Type: application/json X-Requested-With: XMLHttpRequest { "username": "user", "password": "1111" } ### 로그인(매니저) POST http://localhost:8080/api/login Content-Type: application/json X-Requested-With: XMLHttpRequest { "username": "manager", "password": "1111" } ### messages 요청 GET http://localhost:8080/api/messages Content-Type: application/json X-Requested-With: XMLHttpRequesthttp 파일을 작성하고 로그인 요청에 성공했음에도 성공 응답 및 사용자 정보 dto가 오도록 했는데, 쿠키가 오지 않는 문제가 있었습니다.원인원인은 AbstractAuthenticationProcessingFilter 의 기본 SecurityContextRepository가 RequestAttributeSecurityContextRepository이기 때문입니다.그동안 폼 인증에서 우리가 세션을 통해 인증을 할 수 있었던 것은 스프링시큐리티가 기본적으로 등록해준 UsernamePassowordAuthenticationFilter가 저 SecurityContextRepository 구현체로 DelegatingSecurityContextRepository(HttpSessionSecurityContextRepository(), RequestAttributeSecurityContextRepository()) 를 넣어줬기 때문입니다.또 우리가 AuthenticationSuccessHandler, AuthenticationFailureHandler를 커스텀하게 만들었다면 이를 수동으로 등록하는 코드를 작성해줘야하는 이유도 이와 같습니다. 기본 구현체가 위와 같기 때문입니다. @Bean fun ajaxLoginProcessingFilter(): AjaxLoginProcessingFilter { val filter = AjaxLoginProcessingFilter(objectMapper, authenticationManager()) filter.setSecurityContextRepository(securityContextRepository()) filter.setAuthenticationSuccessHandler(ajaxAuthenticationSuccessHandler()) filter.setAuthenticationFailureHandler(ajaxAuthenticationFailureHandler()) return filter } @Bean fun securityContextRepository(): SecurityContextRepository = DelegatingSecurityContextRepository(HttpSessionSecurityContextRepository(), RequestAttributeSecurityContextRepository()) @Bean fun ajaxAuthenticationProvider() = AjaxAuthenticationProvider(userDetailsService, passwordEncoder()) @Bean fun ajaxAuthenticationSuccessHandler() = AjaxAuthenticationSuccessHandler(objectMapper) @Bean fun ajaxAuthenticationFailureHandler() = AjaxAuthenticationFailureHandler(handlerExceptionResolver) @Bean fun ajaxAuthenticationEntryPoint() = AjaxAuthenticationEntryPoint(objectMapper) @Bean fun ajaxAccessDeniedHandler() = AjaxAccessDeniedHandler(objectMapper)혹시 저처럼 최신 스프링 시큐리티 환경에서 실습하시면서http 요청 실습에서 로그인 시 쿠키가 전송 안 되시는 분들은 이 작업을 해보시길 바랍니다.SecurityContextRepository 구현체를 생성하여, 등록해보시는 것을 추천드립니다.
-
미해결스프링부트 JUnit 테스트 - 시큐리티를 활용한 Bank 애플리케이션
authenticationEntryPoint 질문
굳이 authenticationEntryPoint 에 들어갈 내용을 CustomREsponseUtil 로 빼는 이유가 무엇인가요 ??실무에서는 따로 뺄 만큼 들어가는 내용이 길어지나요 ? ?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
H2 데이터베이스 가 접속이 안되어요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요. Database "C:/Users/mukim/test" not found, either pre-create it or allow remote database creation (not recommended in secure environments) [90149-224] 90149/90149 (도움말)이렇게 나와요 뭘 어떻게 해야하나요?
-
해결됨Spring Boot JWT Tutorial
2:00 에서 저처럼 버전 안 맞춰서 해서 헤매는 분들 이걸로 해보세요.
저처럼 버전 안 맞춰서 안되는 분들 이걸로 해결해보세요. 문서 참조해서 지원 중단된 방식은 제외하고 설정했습니다. @Configuration @EnableWebSecurity @EnableMethodSecurity public class SecurityConfig { @Bean public SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception { return httpSecurity .csrf(AbstractHttpConfigurer::disable) .authorizeHttpRequests((registry) -> registry.requestMatchers("/api/hello").permitAll() .anyRequest().authenticated() ) .build(); } } 어노테이션에 꼭 @Configuration 이 들어가야 설정 파일로 인식해 제대로 작동합니다. 빼먹으시면 안됩니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
어플리케이션 재구동 시 H2 DB table 및 data가 유지되게 할 수 없나요?
메모리 기반으로 설정했다고 해서 어플리케이션 재구동 할 때마다 Table 및 Data가 날라가는 것으로 알고있습니다.그런데 개인적으로 공부하면서 여러가지 시도를 하다보면 기존 Data가 유지되었으면 좋겠습니다.김영한 강사님의 다른 기초 강의에서는 H2서버의 Data를 유지하도록 설정했었는데,이 강의에서는 설정을 어떻게 해야 Data가 유지되는지요?
-
미해결실전! 스프링 데이터 JPA
fetch join 쿼리 질문 드립니당
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용] 페이징 처리를 하다가 갑자기 궁금해서(이전에 배웠는데 까먹은걸지도..모르겠네요) <질문> : @Query에서 페치 조인으로 팀을 가져왔는데, Team 엔티티에 있는 List<Members> members의 값은 왜 결과 쿼리에서 조회가 되지 않았는지 궁금합니다.패치조인을 하게 되면 member와 team의 모든 필드 값을 다 select 하게 되는거 아니였나요'? 맞다면 리스트 members도 가져와야 된다고 생각하는데 왜 안되는지 궁금하고, 가져올 수 있는 방법이 따로 있는 건지도 궁금합니다. @Query(value = "select m from Member m left join fetch m.team t", countQuery = "select count(m) from Member m")Page<Member> findByAge(int age, Pageable pageable); @Testpublic void paging(){//given memberRepository.save(new Member("member1", 10)); memberRepository.save(new Member("member2", 10)); memberRepository.save(new Member("member3", 10)); memberRepository.save(new Member("member4", 10)); memberRepository.save(new Member("member5", 10)); memberRepository.save(new Member("member6", 10)); int age = 10; PageRequest pageRequest = PageRequest.of(0, 3, Sort.by(Sort.Direction.DESC, "username")); //when Page<Member> page = memberRepository.findByAge(age, pageRequest); // PageRequest의 부모 인터페이스가 Page package study.datajpa.entity;import jakarta.persistence.*;import lombok.*;import java.util.ArrayList;import java.util.List;import static lombok.AccessLevel.PROTECTED;@Entity@Getter @Setter@NoArgsConstructor(access = PROTECTED)@ToString(of = {"id", "name"})public class Team {@Id @GeneratedValue @Column(name = "team_id")private Long id; private String name; @OneToMany(mappedBy = "team")private List<Member> members = new ArrayList<>(); public Team(String name) {this.name = name; }}
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
인스턴스 죽은게 대시보드에 표시가 안됩니다.
안녕하세요 수강하면서 질문이 있어 글을 남깁니다.4개의 서비스를 띄우고 작업하는 것을 해보고 있는데 서비스를 중지했음에도 대시보드에는 서버가 계속 남아있습니다.설정이 별로 없는데 적용이 안되는 이유가 혹시 있을까요?
-
미해결실전! 스프링부트 상품-주문 API 개발로 알아보는 TDD
POJO
강사님이 생각하시는 POJO란 어떤 방법론인가요?? 시중에 나와있는 설명으로는 용어가 잘 와닿지 않아서요!!
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
서버의 콘솔에 관련된 질문
강의 감사하게 잘 듣고 있습니다.궁금한게 있어서 문의드립니다.프로그램을 셋팅하고 서버를 start하면 이렇게 로그가 출력되면서 왼쪽 빌드창에 계속 뭐가 돌고 있는게 보이는데 이게 서버로 설정해놓아서 그런건가요?
-
미해결스프링 시큐리티 OAuth2
spring boot 3.1 security entryPoint 관련 질문입니다
스프링부트 2.7.7 버전에서는 사용할때 아무 문제없던 코드들인데 3.1 버전 업데이트하면서 securityFilterChain 이부분 문법만 살짝 바뀐정도입니다 그런데jwt 토큰에서 chain.doFilter(request, response); 까지 잘 넘어가고비즈니스 로직인 service 단에서 에러가 터졌을때 (NullPointException,IllegalArgumentException)에러가 났을경우다시 엔트리포인트로 넘어와서 에러처리가 되는데 왜 이럴까요 ?? 무슨 에러가 나든엔트리포인트로 넘어오는데 엔트리포인트는 인증 실패일경우에 실행되어야하는걸로 알고있습니다토큰값은 모두 유효하고 jwt 토큰 인증은 되었음에도 불구하고 엔트리포인트로 넘어가는 이유를 모르겠습니다아래 에러는 비즈니스로직에서 에러 난 코드이며 2023-10-30T23:56:16.287+09:00 ERROR 26006 --- [nio-8081-exec-6] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: org.springframework.dao.InvalidDataAccessApiUsageException: No enum constant com.tripcoach.core.domain.alarm.enums.AlarmType.COACH] with root causejava.lang.IllegalArgumentException: No enum constant com.tripcoach.core.domain.alarm.enums.AlarmType.COACHat java.base/java.lang.Enum.valueOf(Enum.java:273) ~[na:na]at org.hibernate.type.descriptor.java.EnumJavaType.fromName(EnumJavaType.java:231) ~[hibernate-core-6.2.9.Final.jar:6.2.9.Final]at org.hibernate.type.descriptor.converter.internal.NamedEnumValueConverter.toDomainValue(NamedEnumValueConverter.java:53) ~[hibernate-core-6.2.9.Final.jar:6.2.9.Final] 바로 에러코드 다음이 2023-10-30T23:56:16.291+09:00 ERROR 26006 --- [nio-8081-exec-6] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] threw exceptionjava.lang.NullPointerException: Cannot invoke "Object.getClass()" because "exception" is nullat org.springframework.web.method.annotation.ExceptionHandlerMethodResolver.resolveMethodByThrowable(ExceptionHandlerMethodResolver.java:146) ~[spring-web-6.0.12.jar:6.0.12]at org.springframework.web.method.annotation.ExceptionHandlerMethodResolver.resolveMethod(ExceptionHandlerMethodResolver.java:134) ~[spring-web-6.0.12.jar:6.0.12] 엔트리포인트에서 넘어와버리네요부족한 코드이지만 아무리 찾아도 모르겠어서 글 남깁니다. 아래 전체코드 첨부합니다
-
해결됨스프링 부트 - 핵심 원리와 활용
javaw 로 백그라운드 실행한 이후에 재시작할 때는 종료 후 시작으로 하면 되나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]저희 회사는 지금 외장 톰캣을 사용하고 있습니다. 그런데 외장 톰캣과 관련해서 SpringApplicationShutdownHook 에 버그가 있고, 최근까지도 spring github 에 issue 로 보고된 것으로 알고 있습니다. 그 외에도 불편한 건 좀 있지만 특히 이 버그 때문에 내장 톰캣으로 배포해야겠다는 생각을 했습니다. java -jar 로 실행하면 포어그라운드에서 실행되며 프롬프트를 나가면 해당 프로세스도 자동으로 종료가 됩니다. 그래서 javaw -jar 로 실행해서 백그라운드로 실행하려고 합니다. 1. 한 번 배포한 이후에는 매번 백그라운드의 프로세스를 종료하고 다시 시작하면 되나요?2. 내장 톰캣 방식으로 애플리케이션을 실행하면, 외장 톰캣에 ROOT.war 를 옮기면 자동으로 재시작하는 그런 방법은 더 이상 사용할 수 없나요?3. 1번과 2번이 그렇다는 가정 하에 제가 아는 지식 선에서는, 서비스의 중단 없이 배포를 하기 위해서는 2대의 서버 또는 서비스와 로드 밸런서를 활용해서 순차적으로 2개의 애플리케이션에 재시작 스크립트를 재실행하면 될 것 같습니다(CentOS 와 젠킨스를 사용하고 있습니다).혹시 실무에서 더 추천할 만한 배포 방식이나, 관련 레퍼런스를 알기 위한 키워드, 공부 방향을 배울 수 있을까요??
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
연관관계 편의 메서드 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 강의를 듣다가 헷갈리는 점이 생겨 질문드립니다연관관계 편의 메서드는 양방향 관계일때만 사용하면 되는지 궁금합니다만약에 연관관계 메서드를 사용하지 않아서 예를 들어 order엔티티에서 this.member = member만을 해주면 order테이블에는 member 정보가 들어가 있지만 member 테이블에는 order의 정보가 없고 null 상태인건가요?
-
미해결스프링 부트 - 핵심 원리와 활용
스프링 MVC 서블릿 컨테이너 초기화 지원
http://localhost:8080/hello-spring을 실행해도 System.out.println("HelloController.hello");이 출력되지 않습니다. 어떻게 해결하나요?
-
미해결스프링 부트 - 핵심 원리와 활용
톰캣설정 - 인텔리 J무료 버전 로그
톰캣 설정 후 실행하면 아래와 같은 문장만 찍히고 로그가 찍히지 않습니다.-이 문제는 어떻게 해결해야 하나요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
변경감지와 병합 25:54초 부분 DB에 수정안됨
강사님 안녕하세요 ItemService updateItem 메서드에서 pk넣어서 아이템을 받아온 뒤 Item 객체에서 change 메서드만들고 Book 객체를 생성해서 받아온 값들을 넣었는데 DB에 인서트가 되지않습니다 @Transactinal 어노테이션도넣었고 값도 정상적으로 받아진거까지는 확인했습니다 하지만 DB에 인서트가 날라가지않습니다 BOOK이 그냥객체로 인식되서 JPA에서 인서트쿼리를 안날리는걸가요? 수정이 정상적으로 되게 insert 쿼리가 날라가려면 어떤부분을 고처야 할가요? 오랜시간 답을 못찾아서 질문 남깁니다. 감사합니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
테이블을 못 찾습니다. ㅠㅠ
데이터베이스도 생성해주고 해당 테이블도 만들어주었으나 정보를 입력했을 때 해당 테이블을 찾지못해 내부 서버 오류가 발생합니다. 추가적으로 더 설정해줘야 하는 것이 있나요?아래 로그 첨부하겠습니다ㅠㅠjava.sql.SQLSyntaxErrorException: Table 'library.user' doesn't existat com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:121) ~[mysql-connector-j-8.0.33.jar:8.0.33]at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) ~[mysql-connector-j-8.0.33.jar:8.0.33]at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:916) ~[mysql-connector-j-8.0.33.jar:8.0.33]at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1061) ~[mysql-connector-j-8.0.33.jar:8.0.33]at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1009) ~[mysql-connector-j-8.0.33.jar:8.0.33]at com.mysql.cj.jdbc.ClientPreparedStatement.executeLargeUpdate(ClientPreparedStatement.java:1320) ~[mysql-connector-j-8.0.33.jar:8.0.33]at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdate(ClientPreparedStatement.java:994) ~[mysql-connector-j-8.0.33.jar:8.0.33]at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeUpdate(ProxyPreparedStatement.java:61) ~[HikariCP-4.0.3.jar:na]at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeUpdate(HikariProxyPreparedStatement.java) ~[HikariCP-4.0.3.jar:na]at org.springframework.jdbc.core.JdbcTemplate.lambda$update$2(JdbcTemplate.java:973) ~[spring-jdbc-5.3.29.jar:5.3.29]at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:656) ~[spring-jdbc-5.3.29.jar:5.3.29]at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:968) ~[spring-jdbc-5.3.29.jar:5.3.29]at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:1023) ~[spring-jdbc-5.3.29.jar:5.3.29]at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:1033) ~[spring-jdbc-5.3.29.jar:5.3.29]at com.group.libraryapp.controller.user.UserController.saveUser(UserController.java:37) ~[main/:na]at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-5.3.29.jar:5.3.29]at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-web-5.3.29.jar:5.3.29]at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-5.3.29.jar:5.3.29]at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.3.29.jar:5.3.29]at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.29.jar:5.3.29]at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.29.jar:5.3.29]at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1072) ~[spring-webmvc-5.3.29.jar:5.3.29]at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:965) ~[spring-webmvc-5.3.29.jar:5.3.29]at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.29.jar:5.3.29]at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) ~[spring-webmvc-5.3.29.jar:5.3.29]at javax.servlet.http.HttpServlet.service(HttpServlet.java:555) ~[tomcat-embed-core-9.0.79.jar:4.0.FR]at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.29.jar:5.3.29]at javax.servlet.http.HttpServlet.service(HttpServlet.java:623) ~[tomcat-embed-core-9.0.79.jar:4.0.FR]at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:209) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) ~[tomcat-embed-websocket-9.0.79.jar:9.0.79]at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.29.jar:5.3.29]at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.29.jar:5.3.29]at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.29.jar:5.3.29]at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.29.jar:5.3.29]at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.29.jar:5.3.29]at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.29.jar:5.3.29]at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:926) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1790) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
옵셔널 질문입니다.
회원서비스개발강의에서요.memberRepository.findByname(member.getName())이부분이 4분 5초에는 옵셔널이 있어서 옵셔널이라고 했는데요. 근데 강의에서 옵셔널을 지웠는데도 옵셔널인 이유가 뭔가요?
-
해결됨실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
방법2. custom setter 사용하기에 대해 질문
안녕하세요!오랜만에 재수강 중인데 다시보다가 질문이 있어서 남깁니다! 2분41초에서 setter를 private으로 두고 싶은 경우 private set을 이용하기라고 되어 있는데요.JPA와 함께 사용하게 된다면 저는 엔티티 클래스의 경우 gradle 설정에서 OPEN설정을 해주는데, open으로 두게 되면 private set 기능은 사용이 불가능 하더라고요. 이 부분에서 jpa의 프록시 기능 사용이 안 되는 것으로 알고 있는데 TRADE-OFF의 영역인지 아니면 제가 모르는 다른 설정으로 프록시 기능을 사용하면서 private set을 사용할 수 있는지 궁금합니다!.