abstract public class Champion {
public void skill_Q(){
}
public void skill_W(){
}
}
public class Nunu extends Champion{
@Override
public void skill_Q() {
super.skill_Q();
}
@Override
public void skill_W() {
super.skill_W();
}
}
new 생성자를 통해 오브젝트를 힙 메모리공간에 올리게되면( 실체화) 참조변수가 메모리 주소값을 가리키게 됨
이 인스턴스를 다른곳에서 사용하기 위해서 똑같은 생성자를 통해 생성하더라도 이전에 생성된 인스턴스 새로 생성한 인스턴스 다른메모리 주소를 레퍼런스하고 있는 다른 인스턴스라고 할 수 있음
→ 이러한 인스턴스를 사용하기 위해서 스프링은 컴포넌트로 등록한 오브젝트를 스캔하여 IoC 컨테이너에(메모리 영역) 올려주고, 인스턴스들을 관리함
스프링은 엄청나게 많은 필터를 가지고 있다.
스프링은 많은 어노테이션을 가지고 있다.(리플렉션, 컴파일 체킹)
@Componet
→ 클래스 메모리에 로딩@Autowired
→ 로딩된 객체를 해당 변수에 주입@Component
class AClazz{
}
class BClazz{
@Autowired
private AClazz a;
}
@Autowired
를 체킹하고 IoC 컨테이너로부터 AClazz 인스턴스가 있는지 확인하고 있으면 Bclazz로 주입스프링은 MessageConverter를 가지고 있다. (기본값은 Json)
가령 자바 애플리케이션, 파이썬 애플리케이션이 있다고 하고, 서로 통신을 한다고 하면, 자바의 오브젝트와 파이썬의 오브젝트는 다를것이다. 이때 MessageConverter는 통해 중간데이터인 Json으로 객체를 변환시켜주거나 응답데이터를 자바 오브젝트로 변환하는 역할을 할 것이다. ←
스프링은 BufferedReader와 BufferedWriter를 쉽게 사용할 수 있다.
@RequestBody
→ BufferedReader 동작@ResponstBody
→ BufferedWriter 동작