your own miracle

반응형

DI는 많은 필터를 지원한다

필터는 일종의 문지기 역할을 한다

  • 스프링이 자체적으로 가지고 있는 필터를 사용할 수 있고, 사용 설정을 따로 하거나 직접 만들 수도 있음
  • 톰캣이 가지고 있는 필터는 필터(filter)라고 부르고, web.xml이 이 역할을 한다
  • 스프링 컨테이너가 가지고 있는 필터는 인터셉터(intercepter) 라고 부르며, 이는 AOP와 연관되어 있다

스프링은 엄청나게 많은 어노테이션이 있다

  • 어노테이션 → 주석의 역할도 하면서 컴파일러가 읽을 수 있는 힌트를 준다 (일반 주석은 컴파일러가 무시함)
// 부모클래스
class Animal() {
		run();
}
// 자식클래스
Dog extends Animal(){
	/*
	상속된 클래스에서 @Override 할 경우 컴파일러가 실행되면서 자연스레 부모 클래스를 체크한다. 
	주석이면서 컴파일러가 동작하는 힌트를 제공하는 셈이다
  */
	@override   
	run();
}
  • 스프링은 어노테이션을 활용해서 주로 객체를 생성한다
// @component - 클래스 메모리에 로딩
// @Autowired - 로딩된 객체를 해당 변수에 적용한다

@component
class A {
	/*컴포넌트 어노테이션이 붙어 있으면 스프링이 해당 클래스를 스캔해서 
	메모리 공간에 A클래스를 로딩함 (=IoC, 스프링이 객체를 생성한다)
	*/
}

  • 분석하는 기법을 리플렉션이라고 함
    • 해당 클래스에 메소드,필드,어노테이션을 체크하고 무엇을 하라고 지시까지 함

 

스프링은 BufferedReader와 BufferedWriter를 쉽게 사용할 수 있다

메세지 컨버터(MessageConverter)

  • 메세지 전송 중간에서(=다른 object 사이에서) 메시지를 이해하기 쉬운 형태로 번역해주는 역할을 한다
  • 기존에는 xml을 많이 사용했는데 JSON을 많이 사용한다 (*기본값은 JSON)
    • 예시) 자바 obj의 메시지를 message converter가 json으로 바꿔서 보내주고(요청), 요청을 받은 파이썬 obj가 다시 json으로 바꿔서 보내준다(응답)
  • spring에 message converter 라이브러리가 있고 그 중에 jackson이 기본설정 되어있음

byte stream, input stream

  • byteStream은 바이트 통신, 즉 8비트를 보내고, inputStream은 바이트 단위로 받아야 한다
  • inputStream으로 받을 경우 → 바이트를 문자(char)로 캐스팅하는 절차가 복잡 → inputStreamReader로 받으면 문자 하나로 받는다.
  • 하지만 inputStreamReader로는 배열로 여러개의 문자를 받을 수도 있다 → 배열은 크기가 정해져 있음 → 미리 배열 크기를 크게 설정해두면 데이터 낭비 심함 → 그래서 안쓰고 BufferedReader 사용함. 이는 가변길이의 문자를 받을 수 있음

BufferedReader, BufferedWriter

상대방이 요청 시 데이터를 보내면 받는 쪽에서는 BufferedReader로 받는다 (JSP에서는 request.getReader로 받음)

상대방에게 응답 시 데이터를 보낼 때 BufferedWriter를 써야하는데, 내려쓰기 기능이 없어서 똑같은 기능인 printWriter를 쓴다

<aside> 💡 printWriter에는 print(),println() 이라는 함수가 있다

</aside>

@responsebody → BufferedWriter 동작함
@requestbody → BufferedReader 동작함

 

728x90
반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band