본문 바로가기

프로그래밍/Spring10

[Spring] REST API REST(Represetational State Transfer) 기술이 아닌 약속이다. 요청에 대한 JSON 또는 XML형식으로 자원의 상태 응답 자원(데이터)의 상태를 주고 받는 것 특징 Client, Server 구조 / 클라이언트는 요청하고, 서버는 응답하는 구조 Stateless / 서버에서는 클라이언트의 상태 값을 저장하지 않는다. (인증, 인가에 JWT 사용) HTTP 프로토콜을 이용해서 JSON 데이터를 응답으로 주기 때문에 어플리케이션의 통합과 분리가 용이하다. 규약 자원의 식별 - URL로 자원을 구분, 식별 메세지를 통한 리소스 조작 - HTTP header에 자원의 타입을 명시, 데이터 일부를 메세지로 전달 자기 서술적 메세지 - 요청하는 데이터가 HTTP methods 중 무엇인지.. 2022. 8. 26.
[Spring] interceptor Spring boot 기준 Filter는 Spring 외부에 있지 않다. 톰캣이 내장되어 Filter도 Di가 가능. interceptor는 dispatcher servlet과 controller 사이에서 요청과 응답을 가공, 처리하고자 할 때 사용한다. interceptor와 filter filter는 모든 요청과 공통기능에 적용할 사항 interceptor는 선별한 요청과 응답에 대해 적용할 세부 사항 interceptor 와 AOP interceptor는 URL을 통해 적용할 메서드를 선별 AOP는 포인트컷을 통해 적용할 메서드를 선별 @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.METHOD}) public @interface Login { .. 2022. 8. 15.
[Spring] 스프링 Resources 파일 읽기, 복사 resoruces에 위치한 data.json을 읽어야 한다. { "hello": "123" } data.json의 내용은 다음과 같다. @SpringBootApplication public class RestApIsApplication { public static void main(String[] args) throws IOException { SpringApplication.run(RestApIsApplication.class, args); ClassPathResource resource = new ClassPathResource("data.json"); BufferedReader br = new BufferedReader(new InputStreamReader(resource.getInputStrea.. 2022. 8. 12.
[Spring] server to server, REST API 서버 요청 Rest API 서버에 요청을 해서 해당 값을 Controller에서 사용할 때 RestTemplate를 이용해서 요청을 보낼 수 있다. * 현재는 Spring이 RestTemplate보다는 WebClient를 지원 @GetMapping("/test3") public void test3() { // 요청할 URL 만들기 URI uri = UriComponentsBuilder .fromUriString("http://localhost:8080") .path("/api/test") .build() .toUri(); RestTemplate rt = new RestTemplate(); // HTTP GET, 응답을 객체로 받기. String s1 = rt.getForObject(uri, String.class).. 2022. 8. 11.
스프링 프레임워크 DI, AOP, 환경설정(intellij, gradle, tomcat) JAVA SE 위에서 동작하는 기업형 응용 프로그램 (JAVA EE or SPRING) 현재는 EE가 유료이므로, SPRING을 주로 사용한다. 스프링의 대표 기능 MVC(DI), TRANSACTION(AOP), 인증과 권한(FILTER) DI와 IOC컨테이너 객체를 생성해주고 인터페이스를 통해 조립해준다. bean으로 생성하고, 인터페이스에 맞는 bean을 주입한다. ✔ IOC(inversion of control) 컨테이너라고 하는 이유 (1) 기존 프로그래밍 A -> B -> C -> D A에서 B객체를 생성, B에서 C 객체를 생성, C에서 D객체를 생성 (2) 스프링 컨테이너 D -> C -> B -> A D를 C에 주입, C를 B에 주입, B를 A에 주입 IOC 컨테이너의 사용 Applicat.. 2022. 7. 23.
[Spring] Bean을 싱글톤으로 사용해도 되는 이유 package singletoneTest; public class Object1 { private static Object1 o; // 싱글톤 private static int oNumber; // 상태 저장 public static Object1 getInstance(){ if(o == null) o = new Object1(); return o; } public int func(int n){ try { Thread.sleep(1); } catch (InterruptedException e) { e.printStackTrace(); } return n; } public int sfunc(int n){ oNumber = n; try { Thread.sleep(1); } catch (InterruptedE.. 2022. 7. 18.