전체 글 102

[Spring Boot] HTTP 통신 방식 과 REST의 개념

1. HTTP 통신 방식 1) GET Method - 주소창에 파라미터가 노출된다 - ex) www.localhost:8080/search?id=account&password=1234 - 브라우저에서 주소에 대한 캐시가 이루어지므로, 정보를 얻을 때 사용한다 2) POST Method - 주소 창에 파라미터가 노출되지 않는다. - ex) www.localhost:8080/search - 주소 창에 사용자의 요청 사항이 노출되지 않는다 - GET방식에서는 주소 길이 제한이 있지만 POST는 그보다 길게 사용 가능(제한 존재) - 브라우저가 주소 캐시를 하지 못하는 특성이 있다 - 주로 HTML, Ajax 통신할 때 사용 - @RequestBody와 자주 사용된다. (http통신의 post body에 dat..

Spring Boot 2020.07.04

[Spring] Socket통신과 Http통신의 초간단 설명

1. Socket 통신 접속을 계속 유지하여, 데이터를 전달 서버의 자원에 따라서 연결될 수 있는 클라이언트의 수가 한정 실시간 정보 교환에 사용되며 Http보다 속도가 빠름 2. Http 통신 클라이언트의 요청이 있을 때만 데이터 응답을 전달 불필요한 자원의 점유를 없애 다른 접속을 원활하게 하여 많은 데이터를 처리 데이터 요청 후 응답이 오면 연결이 끊어짐

Spring 2020.07.04

[Spring Boot] 예외를 따로 처리하는 @ControllerAdvice

예외를 처리할 때 아래와 같이 try catch방식이 아니라 public class RestaurantNotFoundException extends RuntimeException { //예외처리 함수 public RestaurantNotFoundException(Long id){ super("Could not find restaurant" + id); } } @GetMapping("/restaurants/{id}") public Restaurant detail(@PathVariable("id") Long id){ try{ Restaurant restaurant = restaurantService.getRestaurant(id); //기본정보 + 메뉴정보 }catch(RestaurantNotFoundExc..

Spring Boot 2020.06.30

[SpringBoot] Lombok ToString 특정 필드 출력 안하는 법

ToString 하였을 때 phoneNumber 필드는 숨기려고한다. 방법은 2가지이다. 1. @ToString(exclude = 필드명) @Entity @Getter @Setter @ToString(exclude = "phoneNumber") public class Person { @Id @GeneratedValue //default 자동 생성 private Long id; private String name; private int age; private String hobby; private String bloodType; private String address; private LocalDate birthday; private String job; private String phoneNumber; ..

Spring Boot 2020.06.17

[Spring Boot] Gradle build daemon disappeared unexpectedly (it may have been killed or may have crashed) 오류 해결방법

./gradlew bootRun 으로 실행시 아래와 같은 오류 발생할 수 있다. FAILURE: Build failed with an exception. * What went wrong: Gradle build daemon disappeared unexpectedly (it may have been killed or may have crashed) * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. 해결 방법 application.properties 에 org.gradle.daem..

Spring Boot 2020.06.16

[Spring] WebApplicationInitializer

공식 API 문서를 보면 알 수 있듯이 Servlet 3.0 환경의 인터페이스로 기존의 web.xml로 설정하는 것을 프로그래밍으로 설정할 수 있도록 한다. 기존에는 web.xml로 Servlet을 설정 했다면 onStartup 메소드를 오버라이드 해주면서 스프링 설정을 해준다. public class MyWebAppInitializer implements WebApplicationInitializer { @Override public void onStartup(ServletContext container) { // Create the 'root' Spring application context AnnotationConfigWebApplicationContext rootContext = new Annot..

Spring 2020.06.14

[Spring] 예제로 보는 Aspect Oriented Programming with Spring

AOP : 관점지향프로그래밍 (aspect- oriented programming) Spring AOP : schema-based approach or @AspectJ 1. AOP Concepts Aspect : before , after , throws , finally 같은 것들을 관리해준다 Transaction management - 실제 비즈니스 로직에서는 트랜잭션 코드를 숨길 수 있다 Join point : Aspect가 동작해야 될 포인트 Advice : Join 포인트가 언제 동작할건지 관리 (before, after , around) pointcut : 조인 포인트를 판단하는것 인데 어떻게 포인트 컷을 걸지 포인트컷 하나에 여러개의 조인 포인트가 생길 수 있다 target object : ..

Spring 2020.06.07

Caused by: java.lang.ClassNotFoundException: org.aspectj.lang.JoinPoint 오류 해결 방법

https://search.maven.org/ The Central Repository Search Engine search.maven.org 1. 위 사이트에 들어가서 aspectj:aspectjrt 의 의존성을 복사하여 pom.xml에 주입하면된다. org.aspectj aspectjrt 1.9.4 2. aspectjweaver의 의존성을 복사하여 pom.xml에 주입하면 된다. org.aspectj aspectjweaver 1.9.5 위와 같이 의존성이 추가되는 것을 확인할 수 있다. 다시 실행해보면 잘 동작!!!

JAVA 2020.06.07