티스토리 뷰

spring

 

Framework

틀이 제공되고 그 틀에 맞게 프로젝트를 만들도록 인도해주는것을 framework라고한다

 

오픈 소스

소스가 공개되어있다 그말은 즉 spring의 소스를 우리가 수정할 수 있다는 뜻이된다.

 

Ioc(Inversion of controll)컨테이너 [제어 역전]

class = 설계도

object = 실체화가 가능한 것

instence =  실체화 된 것

 

abstract class 라는 추상클래스가 있고

누누라는 object를 생성하기 위해선 class(설계도)를 참조하여 만들게된다.

근데 이때 object는 모두 추상적이다 무슨말이냐면 누누가 될수도있고 케이틀린이 될 수 있기때문

그리고 만들어진 캐릭터는 instence가 된다.

 

제어 역전이란?

오브젝트를 생성해서 s라는 변수로 heap라는 저장공간에 저장하게 된다 하지만 실행됬을때만 heap에 저장이되게 되는데

이때 다른 데에서 s라는 변수를 사용할려면 공유가 되어야하는데 공유하는 방법이 까다롭다 이를 해결하기 위헤서 스프링에서 제어 역전이란 기능을 제공하는데 각각의 instence를 읽어와 Ioc저장된 것을 읽어와 heap에 올려주게 된다.

 

DI (Dependency Injection)

제어 역전에서 저장된 데이터는 싱글톤 형태로 저장이되게 되고 필요한 곳에 가져가서 사용하는것을 DI라고 한다.

 

많은필터를 가지고 있다.

A나라와 B나라가 있다고 예시 B에서 A의 접근을 막기위해 입구에서 판별 A사람은 들여보내고 B사람은 돌려보내도록 설정 이런것을 필터라고한다

A나라 안에서도 A의 모든사람이 핵심구역은 들어갈 수는 없다 

 

톰캣이 가진 필터는 filter이고 web.xml에 명시된다

핵심구역인 컨테이너는 인터셉터라고하며 AOP를 사용하게된다.

 

많은 어노테이션

어노테이션

주석이지만 컴파일러가 무시하지않고 힌트를 가져간다

ex) Animal에 run()이란 함수가있고 Dog라는 클래스에 Animal을 상속받아 @override하여 run()이란 함수를 가져온다

이때 어노테이션에 @override니까 Animal 부모클래스에서 run()이란 함수를 가져와 사용하게된다.

 

@compont = 클래스 메모리에 로딩

@Autowried = 로딩된 객체 해당 변수에 집어넣어줘

 

class A에 @component라는 어노테이션을 추가하게되면 IoC에 저장되게 되며 어디서든 공유가 가능하게되는데

B 크래스에서 A를 불러올때는 A a 라고 변수를 생성하고 위에 @Autowired라고 적어주면 Ioc가 heap을 쭉 읽어 해당 A의 데이터를 가져와 넣어주게된다 없다면 null이 들어가게됌 이렇게 데이터를 불러오는것을 DI라고 한다

 

리플렉션(분석하는 기법 -> 런타임때 분석)

 

메시지 컨버터

영어를 사용하는사람과 한국어를 사용하는 사람이있다

이때 둘이 의사소통을 하기 위해선 한국어로 영어사용하는사람에게 메시지를 건네면 영어에서 이해를 못한다

이때 중간데이터가 필요하게되는데 중간데이터에서는 영어와 한국어를 모두 이해가 가능하다 중간언어는 xml, json 이 있는데 json을 많이 사용한다

다른 예시로 java와 python이 있는데 두개의 object는 다르게 생겼다 이때 java object를 중간데이터인 json형태로 변경하여

python으로 넘겨주게 된다  흐름은 이러하다 java object - json - python object

 

BufferedWriter과 BufferedReader사용이 편해짐

통신을 하게 될때 영어는 1byte로 가능하지만 한국어는 2byte가되어야하고 중국어는 3byte를 사용해줘야한다 하나의 웹페이지가 존재할때 영어권 사람이 한국페이지를 방문하기도 하고 중국사이트를 방문하기도 하기때문에 모두 수용이 가능한 3byte를 사용하게되며 문자를 주고 받을때 BufferedReader를 사용하게되며 가변형도 잘 처리해주어 문자를 전달하게 됌

BufferedReader을 읽어올때는 BufferedReader를 사용하여 읽어오고  사용할때는 BufferedWriter를 사용하게 된다.

위의 개념을 알고

@ResponseBody를 어노테이션을 달아주게되면 BufferedWriter가 발동되고 

@RequestBody를 어노테이션을 달아주게되면 BufferedReader가 발동된다

 

 

 

 

 

 

 

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함