목록스프링 입문 (23)
코딩 기록들

1. 네이버 open api 사이트에서 오픈 api 이용신청 하기 https://developers.naver.com/products/service-api/search/search.md 검색 - SERVICE-API 검색 NAVER Developers - 검색 API 소개 웹, 뉴스, 블로그 등 분야별 네이버 검색 결과를 웹 서비스 또는 모바일 앱에서 바로 보여 줄 수 있습니다. 또한 ’OO역맛집’과 같은 지역 검색을 할 수도 있으 developers.naver.com 설정예시 2. 해당 페이지 참고하여 server 프로젝트에 코드 작성 https://developers.naver.com/docs/serviceapi/search/blog/blog.md#%EB%B8%94%EB%A1%9C%EA%B7%B8 검..

지금까지는 서버 입장에서API를 제공하는 방법에 대해 학습. 이제부터는 우리의 서버가 client가 돼서 새로운 서버에게 요청하는 것에 대한것! (RestTemplate 활용) // 요청을 받아줄 컨트롤러 패키지 만들기 getForEntity vs getForObject 1. getForEntity - 반환의 형태가 response type을 지정해줘야 됨 RestTemplate restTemplate = new RestTemplate(); ResponseEntity result = restTemplate.getForEntity(uri, String.class); System.out.println(result.getStatusCode()); //200 OK System.out.println(result...

Interceptor - Filter와 유사한 형태로 존재 - Spring Context에 등록됨 (Filter - web application에 등록) - AOP와 유사한 기능 제공 - 인증단계 처리, Logging 하는 데 사용 - 이를 선/후처리 하며 Service business logic과 분리시킴 -> 서비스 인증안된것들 걸러내는 용도 예제 public controller : 아무런 권한이 없는 사용자, 즉 모두가 들어올 수 있도록 = openAPI 형태 private controller : 내부사용자, 즉 세션이 인증된 사용자만 넘김 이 둘(public / private)의 권한차이를 주는 방법 : Interceptor에서 메소드/컨트롤러에 @Auth 어노테이션이 붙어있으면 세션을 검사해서,..

Filter - Web Application에서 관리되는 영역 - 가장 앞단에서 client의 요청이 들어오자마자 해당 request body / response body를 기록하는, 보안의 용도로 사용 - Spring Boot Framewor에서 Client로부터 오는 요청/응답에 대해 최조/최종 단계 위치에 존재함 -> 이를통해 요청/응답의 정보를 변경하거나, Spring에의해 데이터가 변환되기전의 순수한 Client의 요청/응답값을 확인할 수 있음 - 유일하게 ServeletRequest, ServeletResponse의 객체를 변환할 수 있음 - 주로 Spring Framework에서 request / response의 Logging용도로 활용하거나, 인증과 관련된 Logic들을 해당Filter에..

Custom Validation 1. AssertTrue / False 와 같은 method지정을 통해 Custom Logic 적용 가능(재사용 불가) 2. CustomValidator를 적용하여 재사용이 가능한 Custom Logic 적용가능 @AssertTrue -> "is" 라는 키워드로 항상 메소드가 시작해야 됨 @AssertTrue(message = "yyyyMM의 형식에 맞지 않습니다.") public booldean isReqYearMonthValidation(){ System.out.println("assert true call"); try{ LocalDate localDate = LocalDate.parse(getReqYearMonth() + "01", DateTimeFormatter.o..
Validation - 자바에서 null값에 대해 접근하려고 할 때 null pointer exception 발생 -> 이러한 부분 방지 위해 미리 검증을 하는 과정을 validation 이라고 함 [ validation이 필요한 이유 ] 1) 검증해야할 값이 많은 경우 코드의 길이가 길어짐 2) 구현에 따라 Service Logic과의 분리가 필요함 3) 흩어져 있는 경우 어디에서 검증하는지 알기 어렵고, 재사용의 한계가 있음 4) 구현에따라 달라질 수 있지만, 검증 로직이 변경되는 경우 테스트코드등 참조하는 클래스에서 로직이 변경되어야하는 부분이 발생할수 있음 자주 사용하는 annotation @size 문자길이 측정 (Int Type 불가) @NotNull null 불가 @NotEmpty null,..

AOP Aspect Oriented Programming 관점지향 프로그래밍 - 스프링 어플리케이션은 특별한경우를 제외하고는 대부분 MVC 웹 어플리케이션에서 web layer, business layer, data layer로 정의 1) web layer : REST API를 제공하며, Clienet 중심의 로직 제공(ex.response 내려주거나 Http statur 바꿔주는 역할) 2) business layer : 내부정책에 따른 logic를 개발하며, 주로 해당 부분을 개발 3) data layer : 데이터베이스 및 외부와의 연동 처리 - 횡단관심 - AOP : 기능 중복되는 메소드들, 특정 구역에 반복되는 로직들을 한곳에 몰아서 코딩할수있게 해줌 (스프링 어플리케이션의 특징) - 주요 An..

IOC Inversion of Control - 스프링에서는 일반적인 자바 객체를 new 로 생성하여 개발자가 관리하는것이아닌, 'Spring Container'에 모두 맡김 (싱글톤의 형태로 관리됨) - 개발자에서 -> 프레임워크로 제어의 객체관리의 권한이 넘어갔음 : "제어의 역전" -> 객체를 사용하기위해서는? : 주입을 받는다! (DI) DI Dependency Injection (장점) - 의존성으로부터 격리시켜 -> 코드테스트에 용이함 - 외부로부터 내가 사용할 객체에 주입을 받음 - DI 통해 불가능한 상황을 안정적으로 테스트 가능(ex. Mock과 같은 기술) - 코드를 확장하거나 변경할 때 영향을 최소화(추상화) - 순환참조를 막을 수 있음 DI 활용 예시 public class Enco..