심각: 서블릿 [action]을(를) 위해 할당하던 중 예외 발생 java.lang.IllegalArgumentException: Unable to locate method [afterExceptionMethod] on bean [exampleAop] 이런 에러가 나옵니다. package egov.lib.util; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.ProceedingJoinPoint; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class ExampleAop { private static final Logger logger = LoggerFactory.getLogger(ExampleAop.class); public void beforeMethod(JoinPoint joinPoint) throws Exception { logger.info("사용자 요청" + joinPoint.getTarget()); System.out.println("사용자 요청" + joinPoint.getTarget()); } } 영상을 보고 위 코드처럼 이용하면 문제가 생깁니다. 하지만 수업자료에서 제공하는 전체코드를 이용하면 문제가 없습니다. package egov.lib.util; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.ProceedingJoinPoint; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class ExampleAop { private static final Logger logger = LoggerFactory.getLogger(ExampleAop.class); public void beforeMethod(JoinPoint joinPoint) throws Exception { logger.info("사용자 요청" + joinPoint.getTarget()); System.out.println("사용자 요청" + joinPoint.getTarget()); } public void afterExceptionMethod(JoinPoint joinPoint, Exception exception) throws Exception { // 이외에도 예외처리에는 많은 방법이 존재합니다. ErrorController로 제어등.. logger.error("ST에러발생================="); logger.error("" + exception.getMessage()); logger.error("ED에러발생================="); throw exception; } public void afterMethod(JoinPoint joinPoint) throws Exception { logger.info("메소드 종료"); } public Object aroundMethod(ProceedingJoinPoint joinPoint) throws Throwable { long st = System.currentTimeMillis(); // 핵심기능 수행 Object rtn = joinPoint.proceed(); long ed = System.currentTimeMillis(); System.out.println("성능측정 걸린시간:" + (ed - st)); // currentTimeMillis:1/1000 초 return rtn; } } 위의 코드에서는 문제가없는데 9강 강의 마지막 내용대로 진행하면 문제가 생깁니다. 어떤 문제인지 궁금합니다. dispatcher-servlet.xml 파일에 제공되는 코드에서 aop:after-throwing , aop:after , aop:around 코드를 주석처리를 안하고 진행해서 생긴 문제였습니다. 해결했습니다.
섹션3 플러시 부분을 듣다가 궁금증이 생겨 질문을 남깁니다. 3분에 말씀하신 내용에 따르면 try{ Member member = new Member(200L,"member200"); em.persist(member); em.flush(); //영속 System.out.println("===================="); tx.commit(); } catch (Exception e){ tx.rollback(); }finally { em.close(); } emf.close(); em.flush()를 하면 데이터베이스에 쿼리가 나가고 tx.commit()을 통해 트랜잭션 커밋이 된다고 하셨는데 트랜잭션 커밋을 언제 사용하는지?가 궁금합니다. 그냥 플러시를 하기 위해서 쓰이는 것인지 아니면 try catch문으로 되어있어서 try문에서 제대로 동작을 한다면 마지막에 DB에 잘 적용되었다는 느낌으로 commit을 하는것이 맞나요?
안녕하세요 토비님 토비님에 강의 어노테이션 매핑 정보 사용강의 내용 중 GenericWebApplicationContext를 사용해서 @RequestMapping이 스프링 부트 2.7에서는 정상적으로 동작을 하는데요 스프링 3.* 에서는 404가 뜨는 상황입니다. GenericWebApplicationContext가 뭔가 변한걸까요? 로그를 보면 3.* 는 아예 리플래쉬가 안되는것 같은 느낌이 듭니다. 감사합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예 /아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? ( 예 /아니오) [질문 내용] 제대로 이해하고 있는지 궁금합니다 @GetMapping("hello-api") @ResponseBody public Hello helloApi(@RequestParam("name") String name) { Hello hello = new Hello(); hello.setName(name); return hello; } 1. GetMapping은 브라우저에서 쓰이는 주소 ? 를 뜻하는게 맞나요 localhost:8080/hello-api 라는 주소를 입력하면 컨트롤러에서 주소에있는 hello-api와 일치하는 메서드인 Hello helloApi를 연결해서 실행 2. @RequestParam("name")은 http://localhost:8080/hello-api?name=abcd에서 name을 뜻하고 String name 이 abcd를 의미하는건가요 ? abcd라는 값은 setter 메서드로 설정한것은 알고있습니다
[erd로 보는 스토리와 테이블이라는 등장인불] (2:02)워크벤치 사용시, 한글 테이블명, 필드명으로 하니 깨져서 나와서, 혹시 저와 같이 한글이 깨지는 분이 계시면 참고하시라고 올립니다. ㅇ Edit > Modeling > Fonts > Configure Fonts For : Korean 으로 변경, 하단 Location 의 Table Figure Title 의 Font 부분을 더블클릭해서 '맑은 고딕 12' 로 수정 입력 후 저장하고 워크밴치 종료 후 재실행
안녕하세요. 강의 정말 잘 보고 있습니다. 다름이 아니라 섹션9 세번째 강의 jdbc transaction manager 설정 및 테스트 하는 과정에서 마지막 부분에 첫번째 테스트는 통과 하지만 두번째 테스트는 실패합니다라고 설명 해주셨는데요, 아래 실제 콘솔을 보면 두번째 테스트가 성공 하고 첫번째 테스트가 실패 하고 있습니다. 그래서 궁금한 점은 junit에서 각 테스트는 코드상에서 위아래와 무관 하게 각 테스트 메서드가 병렬적으로 동작 하고, 그 과정에서 먼저 디비를 터치하고 트랜잭션을 완료 한 테스트가 먼저 성공 하는 것 인지 궁금 합니다.
안녕하세요 강의 잘 듣고있습니다! 그라파나 대시보드 관련해서 싱크가 안맞는? 문제가 있어서 질문드립니다! 제가 테스트로 nginx 파드를 scale을 통해 2개로 늘렸다가 다시 1개로 변경했는데 여전히 2개의 파드가 그라파나에서 출력됩니다. 대시보드를 지우고 다시 만들어도 동일하게 2개의 파드가 나오는데 어떻게 해결할 수 있을까요? (프로메테우스나 EKS 환경에서 확인해보면 정확히 1개 의 파드만 있는 상황)
CrtDumpMemoryLeaks(); 함수 호출을 통해 메모리 릭을 검사했는데 강사님의 코드에서는 다 잘 지우는 것 같아서 강사님 코드에서의 릭은 아닌것 같습니다 .. 강사님 코드에서 객체 생성을 다 막고 디버깅해도 똑같은 메모리 릭이 남았습니다.. google protobuf 에서의 릭인 것 같은데 .. pb.h pb.cc 는 건들지 못하니 고칠 방법도 없고 해서 이렇게 질문 올립니다. 저 메모리 릭을 해결하는 방법 이 있을 까요..?
[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
안녕하세요 Basic 토큰을 통해 로그인 인증을 하는 강의를 듣고 나서 생긴 의문점이 있어 질문 남깁니다. 현재 강의 내용 중 사용자의 이메일과 비밀번호 그리고 Basic 토큰을 입력 받아서 login 함수를 실행하는 로직이 있는데, 제가 강의를 제대로 들은 것이 맞다면 해당 로그인 로직 상 이메일과 비밀번호를 Basic 토큰으로 변환하는 로직이 없는 것 같습니다. 그렇다면 이 경우 로그인 로직을 검증하면서 Basic 토큰으로 변환을 해야하는 것인지, 아니면 이러한 경우에는 이메일과 비밀번호만 입력받아 데이터베이스에서 검증을 해야하는 것인지 이도 아니라면, 따로 특정 기능이나 로직을 통해 자동으로 검증하는 방법이 있는지 궁금합니다!
Failed to load prefab : BaseMap UnityEngine.Debug:LogError (object) ResourceManager:Instantiate (string,UnityEngine.Transform,bool) (at Assets/@Scripts/Managers/Core/ResourceManager.cs:28) GameScene:Init () (at Assets/@Scripts/Scenes/GameScene.cs:16) InitBase:Awake () (at Assets/@Scripts/Utils/InitBase.cs:20) NullReferenceException: Object reference not set to an instance of an object GameScene.Init () (at Assets/@Scripts/Scenes/GameScene.cs:17) InitBase.Awake () (at Assets/@Scripts/Utils/InitBase.cs:20) 지속적인 오류가나는데 원인을 못찾겠습니다