inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

174만명의 커뮤니티!! 함께 토론해봐요.

application.yml/ OAuth2ClientProperties 편 30:50초

해결됨

스프링 시큐리티 OAuth2

index 경로로 넘어가질 못하고 있습니다. yml 설정은 강의와 똑같이 설정했습니다.

  • spring-boot
  • oauth
  • spring
  • java
bigger 댓글 2 좋아요 0 조회수 699

SELF JOIN 질문입니다

미해결

[백문이불여일타] 데이터 분석을 위한 중급 SQL

수업에서 SELECT A.name AS Employee FROM Employee AS A INNER JOIN Employee AS B ON A.managerID = B.id WHERE A.salary > B.salary 이런 식으로 풀으셨는데 왜 아래와 같이 푸는 방식이랑 무엇인 다른지 잘 모르겠습니다. SELECT A.name AS Employee FROM Employee AS A INNER JOIN Employee AS B ON A.id = B.managerid WHERE A.salary > B.salary

  • sql
anstmdcks12 댓글 1 좋아요 0 조회수 269

getFavoriteFoods() 질문

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

11분 10초 정도에 getFavoriteFoods()를 어떻게 할 수 있는건가요 get이라는건 값이 있는걸 가져오는 것 같은데 강의를 보면 set도 안해줬는데 어떻게 getFavoriteFoods를 할 수 있는지 궁금합니다.

  • JPA
  • java
코딩코딩코딩코 댓글 1 좋아요 0 조회수 291

DFS Connected Component 사이즈 계산방법

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

안녕하세요 큰돌님 DFS Connected Component 사이즈 계산시 1번째 큰돌님 코드소스처럼 return값에 += dfs를 호출하면서 방법 http://boj.kr/e94fb8e43b714794a0950505c0091594 2번째 전역변수 int cnt; 이후 cnt++;하는방법 3번째 dfs 매개변수에 cnt를 추가후 dfs(y, x, cnt) 처음에 dfs(y, x, 0) 으로 호출후 방문 & 내부조건확인후 cnt = dfs(ny, nx, cnt + 1) 이런식으로 재귀적 호출하다가 return cnt 하는방법 질문 혹시 위에 3가지 방법에서 어떤 방법이 좋다고 생각하시나요??? 저는 큰돌님 강의 듣기전에는 딱히 이유는 없고 그냥 3번째 방법으로 매개변수를 추가하는 방식으로 문제를 풀었었거든요

  • C++
  • 코테 준비 같이 해요!
BH J 댓글 1 좋아요 0 조회수 293

console.log("status code:", result.status);에서

미해결

비전공자를 위한 진짜 입문 올인원 개발 부트캠프

console.log("status code:", result.status); 에서 :가 "status code:" 안에 들어가는 이유가 뭔가요?

  • tensorflow
  • express
  • react-native
  • react
  • 머신러닝 배워볼래요?
  • nodejs
  • javascript
  • HTML/CSS
Han Lee 댓글 1 좋아요 1 조회수 249

PCIe 통신

미해결

설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)

안녕하세요. 강의 잘 듣고 있습니다. 강의에서는 zybo보드 위의 PS를 사용하고 있는데, 제가 사용하고 있는 보드에는 PS가 없습니다. PCIe를 이용해 통신을 해야하는 것으로 보이고, vivado IP block을 찾아보니 UltraScale+Integrated Block for PCI Express라는 block이 있는 것으로 보입니다. 하지만 이 Block의 자세한 동작 원리가 파악이 잘 안되고 있습니다. 혹시 PC와 board간의 PCIe 통신을 어떻게 하는지에 대한 documentation이 있다면 추천 가능하실까요? 또한 강의 실습들에서 clock을 PS에서 생성하도록 하였는데, PC에서의 clock을 받아오는 경우에 대한 설명이 있다면 소개 부탁드리겠습니다. Xilinx documentation에 모든 설명이 나와있을 거라고 생각하지만, 제가 이 분야가 처음이고, documentation들이 워낙 방대한지라 도움을 요청합니다. 감사합니다.

  • fpga
  • 임베디드
박정환 댓글 1 좋아요 1 조회수 1096

프록시 캐시의 역할에 대해 질문드립니다.

미해결

모든 개발자를 위한 HTTP 웹 기본 지식

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 프록시 캐시에 대한 수업을 듣고, 제가 잘 이해했는지 확인차 질문드립니다. 알파벳(A,B,C)는 데이터를 의미하고, 아래와 같은 상황에서 클라이언트가 데이터를 요청합니다. 클라이언트(A), 프록시캐시(B), Origin서버(C) a) no-cache인 경우 1. 클라이언트->프록시캐시 : 데이터 검증 요청 2. 프록시캐시->Origin서버 : 데이터 검증 요청 3. Origin서버-> 프록시캐시 : 데이터(C) 전송 4. 프록시캐시 데이터 최신화 (B->C) 5. 프록시캐시->클라이언트 : 데이터(C) 전송 6. 클라이언트 데이터 최신화 (A->C) b) no-cache가 아닌 경우 1. 클라이언트->프록시캐시 : 데이터 검증 요청 2. 프록시캐시->클라이언트 : 데이터(B) 전송 3. 클라이언트 데이터 최신화(A->B) a)의 경우 클라이언트는 Origin서버로부터 데이터를 전송받고, b)의 경우 프록시캐시로부터 데이터를 전송받는다고 이해하였습니다. 올바르게 이해한걸까요?

  • network
호춘 댓글 1 좋아요 0 조회수 296

jpa에서는 같은 영속성 컨텍스트 레벨안에서 ==(instance of) 가 true가 나와야 하는 이유가 궁금합니다

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

(프록시 강의 26분~) 안녕하세요 영한님께서 jpa에서는 같은 영속성 컨텍스트 레벨 안에서 ==가 항상 true를 보장한다고 하셨는데, 이 부분이 잘 이해가 되지 않습니다. em.find( = m1) 후 em.getReference( = m2) em.find하면 영속성 컨텍스트에 실제 member가 저장되니까 em.getReference를 하면, 껍데기를 만들고, 영속성 컨텍스트에 실제 entity값을 DB에서 가져다 달라고 요청하려 하는데, 이미 1차 캐시에 entity가 존재해서 em.getReference를 해도 m1 == m2가 성립하는 것으로 이해했습니다. em.getReference 후 em.getReference em.getReference => 프록시 객체 반환 이때 프록시 객체를 초기화하는 과정에서 영속성 컨텍스트에 실제 entity를 저장할텐데, 다시 em.getReference를 하면 1차 캐시에 있는 entity를 사용하면 될텐데, 왜 껍데기를 만들면서 프록시를 유지하는지 궁금합니다. em.getReference 후 em.find em.getReference => 프록시 객체 반환 em.getReference에서 프록시를 초기화하는 과정에서 위와 같이 1차 캐시에 entity가 저장될텐데, 왜 껍데기를 만들면서 프록시를 유지하는지 궁금합니다. 위의 3가지 예제를 보니, 여러 과정들을 거쳐 결국 jpa는 같은 영속성 컨텍스트 안에서 ==가 항상 true를 보장되는지, 아니면 true를 먼저 보장하기 위해서 다른 과정들을 끼워 맞추는지 궁금합니다. 여러 과정 => 결국에 모두다 ==가 보장됨 or 모두 다 ==를 보장해야함 => ==가 true가 나오도록 끼워 맞추자. 마지막으로 jpa가 같은 영속성 컨텍스트 레벨에서 어떻게 ==를 true로 보장해주는지도 궁금합니다.

  • java
  • JPA
이수찬 댓글 1 좋아요 1 조회수 211

절대경로 상대경로

미해결

리눅스 입문 - 개념으로 탄탄히!!

firstscript 를 상대경로,절대경로말고 환경변수에 설정해서 pwd 처럼 바로 실행하고싶은데 이건 어떻게 해야하나요 ?

  • linux
H K 댓글 1 좋아요 0 조회수 563

개인정의 질문

미해결

HAL, CubeMX, TrueSTUDIO를 이용한 STM32F4 무료 강좌

안녕하세요 선생님 오늘처음 HAL에 대해 공부하는 학생입니다! SPL에서는 예를들어 main.h에 #define test 't'를 정의하고 main.c에 case문을 이용하여 불러올때 case 't': //이런식으로 불러올 수 있는데 HAL 에서도 동일하게 가능한가요?

  • c
  • iot
  • 드론-개발
백승호 댓글 1 좋아요 0 조회수 388

@BeforeEach 사용해서 테스트

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

안녕하세요! 선생님이 알려주신 테스트 방법에 @BeforeEach 어노테이션을 사용해서 작성 중입니다. 그런데 테스트를 개별로 돌리면 문제 없지만 통합으로 한번에 돌리면 java.util.NoSuchElementException: No value present 이 발생하는데 어떤 부분이 문제일까요? 밑줄 그어진 부분이 오류 뜨는 부분인데 코드를 봐도 잘 모르겠습니다.. 확인 한번 해주실 수 있으실까요? BusinessMarkServiceTest @SpringBootTest @Transactional public class BusinessMarkServiceTest { @Autowired BusinessMarkService businessMarkService; @Autowired MemberService memberService; @Autowired BusinessService businessService; @Autowired LoginService loginService; @BeforeEach public void before() { Member member = new Member(); member.setNickname("testMember"); member.setMail("testMember@test.com"); member.setPassword("test1234!"); member.setMember_type("B"); member.setMember_status("J"); member.setHint_password("hint_01"); member.setAnswer_password("answer"); member.setUpdated_at(now()); member.setCreated_at(now()); memberService.join(member); Member member2 = new Member(); member2.setNickname("testMember2"); member2.setMail("testMember2@test.com"); member2.setPassword("test1234!"); member2.setMember_type("B"); member2.setMember_status("J"); member2.setHint_password("hint_01"); member2.setAnswer_password("answer"); member2.setUpdated_at(now()); member2.setCreated_at(now()); memberService.join(member2); Business business = new Business(); business.setBusinessName("테스트밥집"); business.setHomepage("test.com"); business.setPhone("010-1234-5678"); business.setAddress("제주특별자치도 제주시 첨단로 242"); business.setLng((float) 33.450701); business.setLat((float) 126.570667); business.setCreated_at(now()); business.setUpdated_at(now()); businessService.join(business); Business business2 = new Business(); business2.setBusinessName("테스트밥집2"); business2.setHomepage("test2.com"); business2.setPhone("010-1234-5678"); business2.setAddress("제주특별자치도 제주시 첨단로 242"); business2.setLng((float) 33.450701); business2.setLat((float) 126.570667); business2.setCreated_at(now()); business2.setUpdated_at(now()); businessService.join(business2); } @Test public void 좋아요_체크() throws Exception{ //given Member loginMember = loginService.login("testMember2@test.com", "test1234!"); Business findBusiness = businessService.findOne(1L); //when BusinessMarkDto businessMarkDto = new BusinessMarkDto(loginMember,findBusiness.getId()); businessMarkService.pushBusinessMark(businessMarkDto); //then assertEquals(1, businessMarkService.getBusinessLikeInfo(businessMarkDto).getBusinessLikeNum()); } @Test public void 좋아요_해제() throws Exception{ //given Member loginMember = loginService.login("testMember@test.com", "test1234!"); Member loginMember2 = loginService.login("testMember2@test.com", "test1234!"); Business findBusiness = businessService.findOne(1L); //좋아요 표시하기 BusinessMarkDto businessMarkDto = new BusinessMarkDto(loginMember,findBusiness.getId()); businessMarkService.pushBusinessMark(businessMarkDto); BusinessMarkDto businessMarkDto2 = new BusinessMarkDto(loginMember2,findBusiness.getId()); businessMarkService.pushBusinessMark(businessMarkDto2); //when //businessMarkDto2가 한번 더 좋아요 눌러서 해제 시키기 businessMarkService.pushBusinessMark(businessMarkDto2); //then assertEquals(1, businessMarkService.getBusinessLikeInfo(businessMarkDto).getBusinessLikeNum()); } @Test public void 좋아요_개수() throws Exception{ //given Member loginMember = loginService.login("testMember@test.com", "test1234!"); Member loginMember2 = loginService.login("testMember2@test.com", "test1234!"); Business findBusiness = businessService.findOne(1L); //좋아요 표시하기 BusinessMarkDto businessMarkDto = new BusinessMarkDto(loginMember,findBusiness.getId()); businessMarkService.pushBusinessMark(businessMarkDto); BusinessMarkDto businessMarkDto2 = new BusinessMarkDto(loginMember2,findBusiness.getId()); businessMarkService.pushBusinessMark(businessMarkDto2); //when long businessMarkNum = businessMarkService.getBusinessLikeInfo(businessMarkDto2).getBusinessLikeNum(); //then assertEquals(2, businessMarkNum); } @Test public void 좋아요_여부() throws Exception{ //given Member loginMember = loginService.login("testMember@test.com", "test1234!"); Business findBusiness = businessService.findOne(1L); //when BusinessMarkDto businessMarkDto = new BusinessMarkDto(loginMember,findBusiness.getId()); businessMarkService.pushBusinessMark(businessMarkDto); Boolean check = businessMarkService.getBusinessLikeInfo(businessMarkDto).getCheck(); //then assertEquals(true, check); } } BusinessMarkService @Slf4j @Service @Transactional @RequiredArgsConstructor public class BusinessMarkService { private final BusinessMarkRepository businessMarkRepository; private final BusinessRepository businessRepository; //좋아요 및 취소 public Boolean pushBusinessMark(BusinessMarkDto businessMarkDto) { businessMarkRepository.BusinessMarkSearch(businessMarkDto.getMember().getMail(), businessMarkDto.getBusinessId()) .ifPresentOrElse(businessMark -> businessMarkRepository.deleteById(businessMark.getId()), ()-> { Business business = getBusiness(businessMarkDto); businessMarkRepository.save(new BusinessMark(businessMarkDto.getMember(), business)); }); return true; } //업체 게시글 찾기 @Transactional(readOnly = true) public Business getBusiness(BusinessMarkDto businessMarkDto) { return businessRepository.findById(businessMarkDto.getBusinessId()) .orElseThrow(() -> new IllegalArgumentException("해당 게시글은 존재하지 않습니다.")); } // 좋아요 개수 @Transactional(readOnly = true) public BusinessMarkResponseDto getBusinessLikeInfo(BusinessMarkDto businessMarkDto) { long businessLikeNum = getBusinessLikeNum(businessMarkDto); boolean check = checkPushedLike(businessMarkDto); return new BusinessMarkResponseDto(businessLikeNum, check); } @Transactional(readOnly = true) public Boolean checkPushedLike(BusinessMarkDto businessMarkDto) { return businessMarkRepository.BusinessMarkSearch(businessMarkDto.getMember().getMail(), businessMarkDto.getBusinessId()) .isPresent(); /*Optional<BusinessMark> businessMark = businessMarkRepository.BusinessMarkSearch(businessMarkDto.getMember().getMail(), businessMarkDto.getBusinessId()); if(businessMark != null){ return true; } return false;*/ } @Transactional(readOnly = true) public long getBusinessLikeNum(BusinessMarkDto businessMarkDto) { return businessMarkRepository.BusinessMark(businessMarkDto.getBusinessId()); } } MemberService @Slf4j @Service @Transactional(readOnly = true) @RequiredArgsConstructor public class MemberService { @Autowired private final MemberRepository memberRepository; @Autowired private PasswordEncoder passwordEncoder; /** 회원가입 **/ @Transactional public String join(Member member){ //비밀번호 암호화 후 레포지토리에 넘기기 String encodedPassword = passwordEncoder.encode(member.getPassword()); member.setPassword(encodedPassword); validateDuplicateMember(member);//중복회원검증 memberRepository.save(member); return member.getMail(); } /** 중복회원검증 **/ private void validateDuplicateMember(Member member) { List<Member> findMembers = memberRepository.findByMail(member.getMail()); if (!findMembers.isEmpty()){ throw new IllegalStateException("이미 존재하는 회원입니다"); } } private void validateDuplicateNickname(Member member) { Member findMembers = memberRepository.findOndByMail(member.getMail()); if (!findMembers.getNickname().equals(member.getNickname())){ throw new IllegalStateException("이미 존재하는 회원입니다"); } } /** 회원전체조회 **/ public List<Member> findMembers(){ return memberRepository.findAll(); } public Member findOne(String mail) { return memberRepository.findOndByMail(mail); } /** 회원 수정 **/ @Transactional public void update(String mail, String nickname, String answer_password){ Member member = memberRepository.findOndByMail(mail); if(nickname.equals(member.getNickname())) { validateDuplicateNickname(member); } member.setNickname(nickname); member.setAnswer_password(answer_password); member.setUpdated_at(now()); } /** 회원 탈퇴 **/ @Transactional public String delete(String mail, String password){ Member findUser = memberRepository.findOndByMail(mail); if(!passwordEncoder.matches(password,findUser.getPassword())){ //throw new IllegalStateException("비밀번호가 맞지 않습니다."); System.out.println("암호 실패"); return null; } findUser.setUpdated_at(now()); findUser.setMember_status("D"); return findUser.getPassword(); } } BusinessService @Slf4j @Service @Transactional(readOnly = true) @RequiredArgsConstructor public class BusinessService { @Autowired private final BusinessRepository businessRepository; @Autowired private final MemberRepository memberRepository; @Autowired private PasswordEncoder passwordEncoder; /** 중복업체검증 **/ private void validateDuplicateBusiness(Business business) { List<Business> findBusiness = businessRepository.findByBusinessName(business.getBusinessName()); if (!findBusiness.isEmpty()){ throw new IllegalStateException("이미 존재하는 업체명입니다"); } } /** 업체생성 **/ @Transactional public String join(Business business){ validateDuplicateBusiness(business);//중복회원검증 log.info("business {}", business); businessRepository.save(business); return business.getBusinessName(); } /** 업체 수정 **/ /** @Transactional public void saveBusiness(Business business){ businessRepository.save(business); } **/ @Transactional public void update(Long id, String BusinessName, String homepage, String phone, String address, float lat, float lng, String etc){ Business business = businessRepository.findById(id).orElseThrow(); if(!BusinessName.equals(business.getBusinessName())) { validateDuplicateBusiness(business); //중복 업체명 검증 } business.setBusinessName(BusinessName); business.setHomepage(homepage); business.setPhone(phone); business.setAddress(address); business.setLat(lat); business.setLng(lng); business.setEtc(etc); business.setUpdated_at(now()); } /** 업체 삭제 **/ @Transactional public String delete(Member member, Long id){ Member findUser = memberRepository.findOndByMail(member.getMail()); //Business business = businessRepository.findById(id).get(); Business business = businessRepository.findById(id).orElseThrow(); if(!passwordEncoder.matches(member.getPassword(),findUser.getPassword())){ //throw new IllegalStateException("비밀번호가 맞지 않습니다."); System.out.println("암호 실패"); return null; } business.setStatus("D"); business.setUpdated_at(now()); return findUser.getPassword(); } /** 업체 찾기 **/ public Business findOne(Long id) { Business business = businessRepository.findById(id).orElseThrow(); return business; } } LoginService @Service @Transactional(readOnly = true) @RequiredArgsConstructor public class LoginService { @Autowired private final MemberRepository memberRepository; @Autowired private PasswordEncoder passwordEncoder; public Member findOne(String mail){ return memberRepository.findOndByMail(mail);} /** 로그인 **/ @Transactional //public String login(Member member){ public Member login(String mail, String password){ List<Member> findMember = memberRepository.findByMail(mail); Member findUser = memberRepository.findOndByMail(mail); if (findMember==null){ //throw new IllegalStateException("해당 이메일의 유저가 존재하지 않습니다."); //System.out.println("이메일 실패"); return null; } if(!passwordEncoder.matches(password,findUser.getPassword())){ //throw new IllegalStateException("비밀번호가 맞지 않습니다."); return null; } System.out.println("로그인 완료 :"+findUser.getNickname()); //세션 표시를 위해 닉네임값 넘기기 return findUser; } /** 비밀번호 매치 **/ @Transactional public String passwordMatches(Member member){ Member findUser = memberRepository.findOndByMail(member.getMail()); if(!passwordEncoder.matches(member.getPassword(),findUser.getPassword())){ //throw new IllegalStateException("비밀번호가 맞지 않습니다."); System.out.println("암호 실패"); return null; } return findUser.getPassword(); } /** 비밀번호 변경 **/ @Transactional public void updatePassword(String mail, String editPassword){ Member member = memberRepository.findOndByMail(mail); if (editPassword.equals(member.getPassword())) { throw new IllegalStateException("이전 비밀번호와 동일합니다."); } member.setPassword(editPassword); member.setUpdated_at(now()); } }

  • JPA
  • spring
  • java
  • 웹앱
  • spring-boot
김도연 댓글 1 좋아요 0 조회수 270

json 직렬화

미해결

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part9: MMO 컨텐츠 구현 (DB연동 + 대형 구조 + 라이브 준비)

제가 작업을 하다가 키 값이 프론트 코드에 그대로 남는게 조금 그렇기도 하고 보안을 강화하고 싶어서 키 값을 json 파일로 보관하고 유니티에서 로드해서 읽어오는 방식(이게 직렬화 맞죠?ㅎ)으로 변경한 후에 빌드를 했습니다. azure를 이용한 key vault 라는 서비스가 있다는 걸 알게됐지만 이정도만 해도 어느정도 보안성이 있을까요?? 이렇게 하면 장점이랑 단점은 뭘까요 답변을 드릴만한 분이 없으셔서 여쭤봅니다 루키스님!

  • MMORPG
자르트 댓글 1 좋아요 1 조회수 316

내용없음

미해결

함수형 프로그래밍과 JavaScript ES6+ 응용편

내용없음

  • 함수형-프로그래밍
  • javascript
심재화 댓글 1 좋아요 0 조회수 261

19강 인피니티 스크롤 IntersectionObserver 코드 위치 수정이 필요합니다.

미해결

React 기반 Gatsby로 기술 블로그 개발하기

gatsby develop 시에는 문제가 안되지만, gatsby build 시에 문제가 되는 부분입니다. 참고한 사이트는 아래와 같습니다. https://stackoverflow.com/questions/59424347/gatsby-intersectionobserver-is-not-defined 마지막 코드 observer 부분은 하기 내용과 같은데 const observer: IntersectionObserver = new IntersectionObserver( (entries, observer) => { if (!entries[0].isIntersecting) return; setCount(value => value + 1); observer.disconnect(); }, ) useEffect(() => setCount(1), [selectedCategory]) useEffect(() => { if ( NUMBER_OF_ITEMS_PER_PAGE * count >= postListByCategory.length || containerRef.current === null || containerRef.current.children.length === 0 ) return observer.observe( containerRef.current.children[containerRef.current.children.length - 1], ) }, [count, selectedCategory]) IntersectionObserver 구문을 useEffect 안으로 넣어야 할 것 같습니다. useEffect(() => setCount(1), [selectedCategory]) useEffect(() => { const observer: IntersectionObserver = new IntersectionObserver( (entries, observer) => { if (!entries[0].isIntersecting) return; setCount(value => value + 1); observer.disconnect(); } ) if ( NUMBER_OF_ITEMS_PER_PAGE * count >= postListByCategory.length || containerRef.current === null || containerRef.current.children.length === 0 ) return observer.observe( containerRef.current.children[containerRef.current.children.length - 1] ) }, [count, selectedCategory])

  • Gatsby
  • blog
kjeonghoon065 댓글 1 좋아요 1 조회수 430

공통요소를 include하는 load 메서드

미해결

면접과 취업을 부르는 '퍼블리셔 개인 포트폴리오 홈페이지' 제작

안녕하세요! 코딩미션 다섯번째 강의 참고해서 홈페이지를 만들고 있는데요, 루트폴더가 이렇게 되어있는 경우에도 $('.header-include').load('header.html'); 이렇게 똑같이 제이쿼리 구문 작성하면 되나요? html과 같이 css루트도 css/common/header.css 이렇게 되어있는데 이런경우 header.css는 header.html에 링크하면 되나요? 아니면 index.html에 링크하면 되나요?

  • HTML/CSS
  • jquery
  • 포트폴리오
최민지 댓글 1 좋아요 1 조회수 631

변수명 일괄변경

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

변수명 일괄 변경을 위해 shift+enter , shift+f6 둘다 아무 반응이 없습니다...ㅠㅠㅠㅠㅠㅠ...맥북입니다

  • MVC
  • java
  • spring-boot
  • spring
jin 댓글 1 좋아요 0 조회수 583

EAGER와 LAZY 질문

미해결

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

JPA를 사용할때 path에서 EAGER을 사용하는 경우는 거의 없나요?

  • lazy
  • spring-boot
  • JPA
  • spring
  • java
엄재정 댓글 1 좋아요 1 조회수 418

k8s 추가질문

미해결

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

https://www.inflearn.com/questions/670959 해당 글의 추가 질문 드립니다. 우선 local과 docker에서는 정상 작동하는 것을 확인했습니다. 혹시 apigateway에 - Path=/customer-svc/customers 이런식으로 경로가 설정되어 있다면 각 각의 서비스들이 다른 pod에 배포되어 있을 경우 정상적으로 경로를 찾아 갈 수 있는 건가요?? 각 pod 들에는 ClusterIP로 서비스를 연결해 준 상태입니다. 자세히 말하자면 강의에서 docker 배포 목적으로 spring cloud apigateway를 이미지로 만들었던 것을 yaml을 이용하여 쿠버네티스(192.168.1.10)에 배포하였고 이를 nodeport(30502)로 노출 시켰습니다. 그리고 각 각의 서비스들도 마찬가지로 yaml로 배포하였고 ClusterIp로 노출시켜놨습니다. 이렇게 되면 192.168.1.10:30502/customer-svc/customers로 계정 생성 서비스(POST)가 정상적으로 동작하나요?? 아니면 단지 apigateway를 이미지 형태로 배포한 것으로 독립된 pod에 있는 customer-svc를 찾아가는 것이 안 되는 건가요..? 그렇기 때문에 500에러가 발생하고요. apigateway POD의 에러 메세지는 다음과 같습니다 빨간 박스 내용 2022-10-19 19:22:35.106 INFO 1 --- [trap-executor-0] c.n.d.s.r.aws.ConfigClusterResolver : Resolving eureka endpoints via configuration 2022-10-19 19:27:35.106 INFO 1 --- [trap-executor-0] c.n.d.s.r.aws.ConfigClusterResolver : Resolving eureka endpoints via configuration 2022-10-19 19:29:55.347 INFO 1 --- [or-http-epoll-1] c.p.a.filter.GlobalFilter : Global Filter baseMessage: Spring Cloud Gateway Global Filter 2022-10-19 19:29:55.348 INFO 1 --- [or-http-epoll-1] c.p.a.filter.GlobalFilter : Global Filter Start: request id -> f6eabebe-14 2022-10-19 19:29:59.358 ERROR 1 --- [or-http-epoll-2] a.w.r.e.AbstractErrorWebExceptionHandler : [f6eabebe-14] 500 Server Error for HTTP POST "/customer-svc/customers" java.net.UnknownHostException: Failed to resolve 'customer-deployment-5bf5fbc484-wxmlh' after 2 queries at io.netty.resolver.dns.DnsResolveContext.finishResolve(DnsResolveContext.java:1047) ~[netty-resolver-dns-4.1.82.Final.jar!/:4.1.82.Final] Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: Error has been observed at the following site(s): *__checkpoint ⇢ org.springframework.boot.actuate.web.trace.reactive.HttpTraceWebFilter [DefaultWebFilterChain] *__checkpoint ⇢ org.springframework.cloud.gateway.filter.WeightCalculatorWebFilter [DefaultWebFilterChain] *__checkpoint ⇢ org.springframework.boot.actuate.metrics.web.reactive.server.MetricsWebFilter [DefaultWebFilterChain] *__checkpoint ⇢ HTTP POST "/customer-svc/customers" [ExceptionHandlingWebHandler] 해당 내용으로 봤을 때, 쿼리가 간다는 것은 통신은 정상적으로 이루어지는 것 같은데 어떤 문제가 있을까요??

  • JPA
  • spring-cloud
  • architecture
  • spring-boot
  • Kafka
  • msa
김영진 댓글 1 좋아요 1 조회수 567

MemoryMemberRepository class에서 setId와 getId가 적용이 안됩니다.

해결됨

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

값을 찾을 수 없다고 나와서 질문드립니다 여러번 확인 해 봤는데 원인을 찾을 수 없어 질문을 올립니다. 감사합니다. 학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요.

  • MVC
  • spring
  • java
  • spring-boot
황상익 댓글 1 좋아요 1 조회수 445

Postgresql에서 polygon을 사용하려고 Spring에서 List<Polygon>을 작성해봤는데 실행이 안 됩니다.

미해결

Postgresql에서 polygon을 사용하려고 Spring에서 List<Point>을 작성해봤는데 실행이 안 됩니다. Entity는 이렇게 작성하였습니다. package com.example.sia.project.main; import lombok.Getter; import lombok.NoArgsConstructor; import org.hibernate.annotations.Type; import org.hibernate.annotations.TypeDef; import com.vladmihalcea.hibernate.type.array.ListArrayType; import javax.persistence.*; import java.awt.*; import java.util.List; @Entity @Getter @TypeDef(name = "list-array", typeClass = ListArrayType.class) @NoArgsConstructor public class AdministrativeArea { @Id @Column(name = "administrative_area_id") @GeneratedValue(strategy = GenerationType.IDENTITY) private Long administrativeAreaId; @Column(name = "administrative_area_name") private String name; @Type(type = "list-array", parameters = @org.hibernate.annotations.Parameter(name = "sql_array_type", value = "polygon")) @Column(name = "administrative_area_area", columnDefinition = "integer[]") private List<Polygon> area; public AdministrativeArea(String name, List<Polygon> area) { this.name = name; this.area = area; } public AdministrativeArea(Long administrativeAreaId) { this.administrativeAreaId = administrativeAreaId; } } 오류 메세지입니다. 2022-10-19 20:29:07.350 WARN 26976 --- [io-8080-exec-10] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Unexpected character ('}' (code 125)): was expecting double-quote to start field name; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Unexpected character ('}' (code 125)): was expecting double-quote to start field name<EOL> at [Source: (org.springframework.util.StreamUtils$NonClosingInputStream); line: 6, column: 10] (through reference chain: com.example.sia.project.main.AdministrativeAreaRequestDto["area"]->java.util.ArrayList[0])] 2022-10-19 20:29:11.115 WARN 26976 --- [nio-8080-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 0, SQLState: 42804 2022-10-19 20:29:11.115 ERROR 26976 --- [nio-8080-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper : 오류: 열 "administrative_area_area"은(는) polygon 자료형인데 표현식은 polygon[] 자료형입니다. Hint: 다시 정의하거나 형변화자를 사용해보십시오 Position: 94 2022-10-19 20:29:11.116 ERROR 26976 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute statement; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not execute statement] with root cause org.postgresql.util.PSQLException: 오류: 열 "administrative_area_area"은(는) polygon 자료형인데 표현식은 polygon[] 자료형입니다. Hint: 다시 정의하거나 형변화자를 사용해보십시오 Position: 94 at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse( QueryExecutorImpl.java:2675 ) ~[postgresql-42.3.7.jar:42.3.7] at org.postgresql.core.v3.QueryExecutorImpl.processResults( QueryExecutorImpl.java:2365 ) ~[postgresql-42.3.7.jar:42.3.7] at org.postgresql.core.v3.QueryExecutorImpl.execute( QueryExecutorImpl.java:355 ) ~[postgresql-42.3.7.jar:42.3.7] at org.postgresql.jdbc.PgStatement.executeInternal( PgStatement.java:490 ) ~[postgresql-42.3.7.jar:42.3.7] at org.postgresql.jdbc.PgStatement.execute( PgStatement.java:408 ) ~[postgresql-42.3.7.jar:42.3.7] at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags( PgPreparedStatement.java:167 ) ~[postgresql-42.3.7.jar:42.3.7] at org.postgresql.jdbc.PgPreparedStatement.executeUpdate( PgPreparedStatement.java:135 ) ~[postgresql-42.3.7.jar:42.3.7] 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.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate( ResultSetReturnImpl.java:197 ) ~[ hibernate-core-5.6.11.Final .jar: 5.6.11.Final ] at org.hibernate.dialect.identity.GetGeneratedKeysDelegate.executeAndExtract( GetGeneratedKeysDelegate.java:58 ) ~[ hibernate-core-5.6.11.Final .jar: 5.6.11.Final ] at org.hibernate.id .insert.AbstractReturningDelegate.performInsert( AbstractReturningDelegate.java:43 ) ~[ hibernate-core-5.6.11.Final .jar: 5.6.11.Final ] at org.hibernate.persister.entity.AbstractEntityPersister.insert( AbstractEntityPersister.java:3279 ) ~[ hibernate-core-5.6.11.Final .jar: 5.6.11.Final ] at org.hibernate.persister.entity.AbstractEntityPersister.insert( AbstractEntityPersister.java:3885 ) ~[ hibernate-core-5.6.11.Final .jar: 5.6.11.Final ] at org.hibernate.action.internal.EntityIdentityInsertAction.execute( EntityIdentityInsertAction.java:84 ) ~[ hibernate-core-5.6.11.Final .jar: 5.6.11.Final ] at org.hibernate.engine.spi.ActionQueue.execute( ActionQueue.java:645 ) ~[ hibernate-core-5.6.11.Final .jar: 5.6.11.Final ] at org.hibernate.engine.spi.ActionQueue.addResolvedEntityInsertAction( ActionQueue.java:282 ) ~[ hibernate-core-5.6.11.Final .jar: 5.6.11.Final ] at org.hibernate.engine.spi.ActionQueue.addInsertAction( ActionQueue.java:263 ) ~[ hibernate-core-5.6.11.Final .jar: 5.6.11.Final ] at org.hibernate.engine.spi.ActionQueue.addAction( ActionQueue.java:317 ) ~[ hibernate-core-5.6.11.Final .jar: 5.6.11.Final ] at org.hibernate.event.internal.AbstractSaveEventListener.addInsertAction( AbstractSaveEventListener.java:330 ) ~[ hibernate-core-5.6.11.Final .jar: 5.6.11.Final ] at org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate( AbstractSaveEventListener.java:287 ) ~[ hibernate-core-5.6.11.Final .jar: 5.6.11.Final ] at org.hibernate.event.internal.AbstractSaveEventListener.performSave( AbstractSaveEventListener.java:193 ) ~[ hibernate-core-5.6.11.Final .jar: 5.6.11.Final ] at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId( AbstractSaveEventListener.java:123 ) ~[ hibernate-core-5.6.11.Final .jar: 5.6.11.Final ] at org.hibernate.event.internal.DefaultPersistEventListener.entityIsTransient( DefaultPersistEventListener.java:185 ) ~[ hibernate-core-5.6.11.Final .jar: 5.6.11.Final ] at org.hibernate.event.internal.DefaultPersistEventListener.onPersist( DefaultPersistEventListener.java:128 ) ~[ hibernate-core-5.6.11.Final .jar: 5.6.11.Final ] at org.hibernate.event.internal.DefaultPersistEventListener.onPersist( DefaultPersistEventListener.java:55 ) ~[ hibernate-core-5.6.11.Final .jar: 5.6.11.Final ] at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener( EventListenerGroupImpl.java:107 ) ~[ hibernate-core-5.6.11.Final .jar: 5.6.11.Final ] at org.hibernate.internal.SessionImpl.firePersist( SessionImpl.java:756 ) ~[ hibernate-core-5.6.11.Final .jar: 5.6.11.Final ] at org.hibernate.internal.SessionImpl.persist( SessionImpl.java:742 ) ~[ hibernate-core-5.6.11.Final .jar: 5.6.11.Final ] 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.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke( ExtendedEntityManagerCreator.java:362 ) ~[spring-orm-5.3.23.jar:5.3.23] at com.sun.proxy.$Proxy97.persist(Unknown Source) ~[na: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.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke( SharedEntityManagerCreator.java:311 ) ~[spring-orm-5.3.23.jar:5.3.23] at com.sun.proxy.$Proxy97.persist(Unknown Source) ~[na:na] at org.springframework.data.jpa.repository.support.SimpleJpaRepository.save ( SimpleJpaRepository.java:666 ) ~[spring-data-jpa-2.7.3.jar:2.7.3] 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.data.repository.core.support .RepositoryMethodInvoker$RepositoryFragmentMethodInvoker.lambda$new$0( RepositoryMethodInvoker.java:289 ) ~[spring-data-commons-2.7.3.jar:2.7.3] at org.springframework.data.repository.core.support .RepositoryMethodInvoker.doInvoke( RepositoryMethodInvoker.java:137 ) ~[spring-data-commons-2.7.3.jar:2.7.3] at org.springframework.data.repository.core.support .RepositoryMethodInvoker.invoke( RepositoryMethodInvoker.java:121 ) ~[spring-data-commons-2.7.3.jar:2.7.3] at org.springframework.data.repository.core.support .RepositoryComposition$RepositoryFragments.invoke( RepositoryComposition.java:530 ) ~[spring-data-commons-2.7.3.jar:2.7.3] at org.springframework.data.repository.core.support .RepositoryComposition.invoke( RepositoryComposition.java:286 ) ~[spring-data-commons-2.7.3.jar:2.7.3] at org.springframework.data.repository.core.support .RepositoryFactorySupport$ImplementationMethodExecutionInterceptor.invoke( RepositoryFactorySupport.java:640 ) ~[spring-data-commons-2.7.3.jar:2.7.3] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed( ReflectiveMethodInvocation.java:186 ) ~[spring-aop-5.3.23.jar:5.3.23] at org.springframework.data.repository.core.support .QueryExecutorMethodInterceptor.doInvoke( QueryExecutorMethodInterceptor.java:164 ) ~[spring-data-commons-2.7.3.jar:2.7.3] at org.springframework.data.repository.core.support .QueryExecutorMethodInterceptor.invoke( QueryExecutorMethodInterceptor.java:139 ) ~[spring-data-commons-2.7.3.jar:2.7.3] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed( ReflectiveMethodInvocation.java:186 ) ~[spring-aop-5.3.23.jar:5.3.23] at org.springframework.data .projection.DefaultMethodInvokingMethodInterceptor.invoke( DefaultMethodInvokingMethodInterceptor.java:81 ) ~[spring-data-commons-2.7.3.jar:2.7.3] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed( ReflectiveMethodInvocation.java:186 ) ~[spring-aop-5.3.23.jar:5.3.23] at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation( TransactionInterceptor.java:123 ) ~[spring-tx-5.3.23.jar:5.3.23] at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction( TransactionAspectSupport.java:388 ) ~[spring-tx-5.3.23.jar:5.3.23] at org.springframework.transaction.interceptor.TransactionInterceptor.invoke( TransactionInterceptor.java:119 ) ~[spring-tx-5.3.23.jar:5.3.23] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed( ReflectiveMethodInvocation.java:186 ) ~[spring-aop-5.3.23.jar:5.3.23] at org.springframework.dao.support .PersistenceExceptionTranslationInterceptor.invoke( PersistenceExceptionTranslationInterceptor.java:137 ) ~[spring-tx-5.3.23.jar:5.3.23] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed( ReflectiveMethodInvocation.java:186 ) ~[spring-aop-5.3.23.jar:5.3.23] at org.springframework.data.jpa.repository.support .CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke( CrudMethodMetadataPostProcessor.java:174 ) ~[spring-data-jpa-2.7.3.jar:2.7.3] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed( ReflectiveMethodInvocation.java:186 ) ~[spring-aop-5.3.23.jar:5.3.23] at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke( ExposeInvocationInterceptor.java:97 ) ~[spring-aop-5.3.23.jar:5.3.23] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed( ReflectiveMethodInvocation.java:186 ) ~[spring-aop-5.3.23.jar:5.3.23] at org.springframework.aop.framework.JdkDynamicAopProxy.invoke( JdkDynamicAopProxy.java:215 ) ~[spring-aop-5.3.23.jar:5.3.23] at com.sun.proxy.$Proxy100.save(Unknown Source) ~[na:na] at com.example.sia.project.main.AdministrativeAreaService.createAdministrativeArea( AdministrativeAreaService.java:15 ) ~[main/:na] at com.example.sia.project.main.AdministrativeAreaService$$FastClassBySpringCGLIB$$8a674bce.invoke(<generated>) ~[main/:na] at org.springframework.cglib.proxy.MethodProxy.invoke( MethodProxy.java:218 ) ~[spring-core-5.3.23.jar:5.3.23] at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint( CglibAopProxy.java:793 ) ~[spring-aop-5.3.23.jar:5.3.23] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed( ReflectiveMethodInvocation.java:163 ) ~[spring-aop-5.3.23.jar:5.3.23] at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed( CglibAopProxy.java:763 ) ~[spring-aop-5.3.23.jar:5.3.23] at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation( TransactionInterceptor.java:123 ) ~[spring-tx-5.3.23.jar:5.3.23] at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction( TransactionAspectSupport.java:388 ) ~[spring-tx-5.3.23.jar:5.3.23] at org.springframework.transaction.interceptor.TransactionInterceptor.invoke( TransactionInterceptor.java:119 ) ~[spring-tx-5.3.23.jar:5.3.23] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed( ReflectiveMethodInvocation.java:186 ) ~[spring-aop-5.3.23.jar:5.3.23] at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed( CglibAopProxy.java:763 ) ~[spring-aop-5.3.23.jar:5.3.23] at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept( CglibAopProxy.java:708 ) ~[spring-aop-5.3.23.jar:5.3.23] at com.example.sia.project.main.AdministrativeAreaService$$EnhancerBySpringCGLIB$$2945ace9.createAdministrativeArea(<generated>) ~[main/:na] at com.example.sia.project.main.AdministrativeAreaController.createAdministrativeArea( AdministrativeAreaController.java:16 ) ~[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.23.jar:5.3.23] at org.springframework.web.method.support .InvocableHandlerMethod.invokeForRequest( InvocableHandlerMethod.java:150 ) ~[spring-web-5.3.23.jar:5.3.23] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle( ServletInvocableHandlerMethod.java:117 ) ~[spring-webmvc-5.3.23.jar:5.3.23] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod( RequestMappingHandlerAdapter.java:895 ) ~[spring-webmvc-5.3.23.jar:5.3.23] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal( RequestMappingHandlerAdapter.java:808 ) ~[spring-webmvc-5.3.23.jar:5.3.23] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle( AbstractHandlerMethodAdapter.java:87 ) ~[spring-webmvc-5.3.23.jar:5.3.23] at org.springframework.web.servlet.DispatcherServlet.doDispatch( DispatcherServlet.java:1071 ) ~[spring-webmvc-5.3.23.jar:5.3.23] at org.springframework.web.servlet.DispatcherServlet.doService( DispatcherServlet.java:964 ) ~[spring-webmvc-5.3.23.jar:5.3.23] at org.springframework.web.servlet.FrameworkServlet.processRequest( FrameworkServlet.java:1006 ) ~[spring-webmvc-5.3.23.jar:5.3.23] at org.springframework.web.servlet.FrameworkServlet.doPost( FrameworkServlet.java:909 ) ~[spring-webmvc-5.3.23.jar:5.3.23] at javax.servlet.http.HttpServlet.service( HttpServlet.java:681 ) ~[tomcat-embed-core-9.0.65.jar: 4.0.FR ] at org.springframework.web.servlet.FrameworkServlet.service( FrameworkServlet.java:883 ) ~[spring-webmvc-5.3.23.jar:5.3.23] at javax.servlet.http.HttpServlet.service( HttpServlet.java:764 ) ~[tomcat-embed-core-9.0.65.jar: 4.0.FR ] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:227 ) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:162 ) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.tomcat.websocket.server.WsFilter.doFilter( WsFilter.java:53 ) ~[tomcat-embed-websocket-9.0.65.jar:9.0.65] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:189 ) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:162 ) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.springframework.web.filter.RequestContextFilter.doFilterInternal( RequestContextFilter.java:100 ) ~[spring-web-5.3.23.jar:5.3.23] at org.springframework.web.filter.OncePerRequestFilter.doFilter( OncePerRequestFilter.java:117 ) ~[spring-web-5.3.23.jar:5.3.23] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:189 ) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:162 ) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.springframework.web.filter.FormContentFilter.doFilterInternal( FormContentFilter.java:93 ) ~[spring-web-5.3.23.jar:5.3.23] at org.springframework.web.filter.OncePerRequestFilter.doFilter( OncePerRequestFilter.java:117 ) ~[spring-web-5.3.23.jar:5.3.23] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:189 ) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:162 ) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal( CharacterEncodingFilter.java:201 ) ~[spring-web-5.3.23.jar:5.3.23] at org.springframework.web.filter.OncePerRequestFilter.doFilter( OncePerRequestFilter.java:117 ) ~[spring-web-5.3.23.jar:5.3.23] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:189 ) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:162 ) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.core.StandardWrapperValve.invoke( StandardWrapperValve.java:197 ) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.core.StandardContextValve.invoke( StandardContextValve.java:97 ) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.authenticator.AuthenticatorBase.invoke( AuthenticatorBase.java:541 ) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.core.StandardHostValve.invoke( StandardHostValve.java:135 ) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.valves.ErrorReportValve.invoke( ErrorReportValve.java:92 ) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.core.StandardEngineValve.invoke( StandardEngineValve.java:78 ) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.connector.CoyoteAdapter.service( CoyoteAdapter.java:360 ) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.coyote.http11.Http11Processor.service( Http11Processor.java:399 ) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.coyote.AbstractProcessorLight.process( AbstractProcessorLight.java:65 ) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process( AbstractProtocol.java:890 ) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.tomcat.util.net .NioEndpoint$SocketProcessor.doRun( NioEndpoint.java:1789 ) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.tomcat.util.net.SocketProcessorBase.run ( SocketProcessorBase.java:49 ) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker( ThreadPoolExecutor.java:1191 ) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run( ThreadPoolExecutor.java:659 ) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run( TaskThread.java:61 ) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at java.base/java.lang.Thread.run( Thread.java:829 ) ~[na:na]

박종익 댓글 0 좋아요 1 조회수 322

인기 태그

인프런 TOP Writers

주간 인기글