일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- initialDelay
- Git
- RFC723x
- org.apache.ibatis.binding.BindingException
- Invalid bound statement (not found)
- 매핑정보가없는필드
- HTTPMESSAGE
- http
- Transaction not successfully started
- @Table
- 네이버 연결된 서비스
- 자바ORM표준프로그래밍
- DB방언
- gitrevert
- ERROR TYPE : org.apache.ibatis.binding.BindingException
- 무상태프로토콜
- SpringBoot
- JPA
- 데이터베이스 방언
- 캐쉬가능
- gitreset
- HTTP3
- 김영한JPA
- KAKAOLOGINAPI
- @Entity
- 네이버로그인API
- fixedDelay
- anyMatch
- hibernate.dialect
- 멱등활용
- Today
- Total
목록IT/SpringBoot (10)
twocowsong
Spring을 가지고 개발을할때 저는 URL에 매핑된 요청이 들어올경우 때에 따라서 값을 확인하거나 권한을 확인 또는 값을 설정할때 Filter, interceptor, Aop를 사용하였습니다. 본글을 설명 전 클라이언트의 요청부터 스프링에서 어떠한 프로세스로 흘러가는지 이미지로 확인해보겠습니다. (이미지는 Gyun's 개발일지 티스토리에서 가져왔으며 글의 주소는 맨밑에 출처를 밝히겠습니다.) 클라이언트에서 요청이 오면 Url 매핑된 Controller에 오기전에 작동되는 여러 작업들이 있습니다. Dispather Servlet - interceptor - Aop - Controller 순서대로 오게됩니다. 본 글에서는 interceptor, Aop 그리고 filter까지 정리하겠습니다. 1. 필터(Fi..
Spring을 사용하다보면 스프링 컨테이너가 의존 관계 주입을 대신 해주기때문에 개발자는 스프링에서 할당된 객체를 손쉽게 사용하며 싱글톤도 보장이 되어 자원에 효율적입니다. 제어 역전은 개발자가 직접 객체를 생성하지않고 스프링에게 권한을 맡기면서 사람이 아닌 스프링에게 권한이 넘어가며 그부분을 제어의 역전이라고합니다. 객체를 사용할때 저희에게 친숙한 어노테이션들이 있습니다. @Autowired 와 Lombok에 @RequiredArgsConstructor 입니다. 의존성 주입 @Autowired : 필드주입 - 상황의 타입에 맞게 IoC컨테이너 안에 존재하는 Bean을 자동으로 주입해주게 됩니다. - 빈을 생성한 후에 주입하려는 빈을 찾아 주입합니다. - 필드를 final로 선언할 수 없습니다. @Req..
프로그램 개발중 만약 각 메소드마다 시작 시간, 종료시간, 걸린시간을 출력하기위해서는 어떻게 해야할까요? 모든 메소드 호출마다 try문으로 감싸서 하는방법도있겠지만.. 시간과 고통이 엄청나겠죠. 이럴때 AOP를 이용하여 공통처리를하게된다면 빠른방법으로 처리할수있습니다. org.springframework spring-aspects 5.3.16 pom.xml에 dependency를 추가합니다. /** * AOP - 시작, 종료 공통 로직 */ @Component @Aspect @Slf4j public class TraceAop { /** * 모든 패키지에 적용되는 시작, 종료 공통 로직 * 시작시간 , 종료시간 출력 */ @Around("execution(* com.twocow.song..*(..))") ..
개발시 상황에따라 로컬, 개발, 운영 환경에맞게 변경하고싶은값들이있습니다. 예를들면 디비정보나, url정보가 있을것같습니다. 상황에 맞게 하드코딩되어진 변수들을 한개씩 수정하다보면 위험이 많이발생하기에 대체로 properties에 환경에 맞게 선언해두고 가져다가 사용을 많이합니다. 인텔리제이에서 Active profiles라는 입력란이있습니다. (인텔리제이 무료버전에서는 없을수 있습니다.) 여기에 자신이 현재 어디를 바라볼지에 대한정보를 입력하면됩니다. 저는 로컬PC에서 개발을 하기에 local이라고 선언하겠습니다. properties파일들을 상황에맞게 사용하기위해 위와 같이 파일을 만들었습니다. application-{Active profiles 값}.properties 으로 이름을 설정해주시면 스프링..
@Slf4j @Controller public class Test1Controller { @GetMapping("/main") public String init() { return "/index"; } } 단순 컨트롤러입니다. @Controller로 해당 클래스를 등록해야지 Url을 맵핑이 원할하게 작동됩니다. 그렇지만 우리는 일반 컨트롤러와 API컨트롤러를 분리하여 작업하기도 합니다. 일반 컨트롤러와 API컨트롤러의 가장 큰차이점은 리턴 방식이 다르다는것! 일반컨트롤러는 viewresolver에 의해 html페이지가 리턴되어버립니다. @Slf4j @RestController public class Test1Controller { @GetMapping("/main") public String init()..
특정 월, 일, 시간에 자동으로 실행되게 하고싶은 경우가 있습니다. (예를들면 DB데이터를 월말 월초에 조회하여 엑셀파일로 만든는경우?) 스프링부트에서는 간편하게 Scheduled를 사용하여 만들수 있습니다. Scheduled를 사용하기 위한 준비 @SpringBootApplication @EnableScheduling public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } @SpringBootApplication이 존재하는 클래스에서 @EnableScheduling를 꼭 추가해주어야 실행이 가능합니다. 지정된 시간만큼 반복 하는 방..
redirect @GetMapping("/init") public void init(Model model, HttpServletResponse response) throws IOException{ response.sendRedirect("/redirect"); } @ResponseBody @GetMapping("/redirect") public String redirect() { return "result : redirect!!!"; } Redirect를 사용하다보면 데이터를 전송하지 못한다는 단점이있습니다. 리다이렉트는 호출 시 클라이언트를 한번 갔다가 호출되기때문에 request에 데이터가 담겨있지않게됩니다. 이때 데이터를 전송시키고싶다! 이럴때 forward를 사용하면 데이터를 전달할수 있습니다. ..
프론트에서 form태그 또는 url로 서버까지 데이터를 전송하고 Controller에서 받은 데이터와 선언된 객체에 데이터맵핑에는 여러가지 편리한 어노테이션 존재합니다. (객체 데이터 맵핑원리가 궁금하면 Argument Resovler를 찾아보시면됩니다.) 컨트롤러에서 객체에 쉽게 데이터를 맵핑할수있는 어노테이션을 설명드리겠습니다. @Getter @Setter public class Car{ private int speed; } 맵핑하기위한 Car객체입니다. @ModelAttribute @ResponseBody @RequestMapping("/test") public String modelAttributeTest(@ModelAttribute Car car) { log.info("car speed : " ..