Spring/Spring boot

스프링부트 개념정리

원2 2022. 7. 26. 13:52
728x90
반응형

class - 설계도 (의자 설계도)

 

abstract class - 추상적 설계도 (가구 설계)

 

interface - 실체화가 된 것 (의자)

 

ioc - 제어의 역전 (주도권이 스프링에 있음)

 

  • IoC 컨테이너 - 제어의 역전
    누누 클래스를 만들었는데 다른곳에서 누누를 쓰고 싶을때 ?
    스프링이 객체를 스캔해서 heap 메모리에 저장해둔다 
    스프링이 객체를 관리 누누를 하나만 만들어서 가져가서 씀

 

  • DI
    dependency injectsion 의존성 주입
    IOC 에서 스캔해준 하나의 object를 가져가서 씀
    heap 메모리에 A라는 [이름을 가진] 클래스가 없다면 해당 변수에는 null 이 아니고
    해당 type를 heap 에서 찾아서 값을 넣어준다. 그것이 DI 


  • 많은 필터를 가지고 있다
    web.xml 은 필터의 기능을 한다 (톰켓)
    스프링에서 필터의 기능을 하는것 = 인터셉터(AOP)



  • 많은 어노테이션
    컴파일체킹
    리플렉션 (분석하는 기법 -> 런타임시 분석)
    스프링에서 어노테이션은 주로 객체를 생성한다

    @Component -> 클래스 메모리에 로딩 (heap에) IoC
    @Autowired -> 로딩된 객체를 해당 변수에 넣음

    리플렉션 (메서드, 필드, 어노테이션을 체킹) : 어떤 class 안에 어떤 것이 있는지 분석하는 기법
    -> 있다면 무엇을 실행해라 가능
    ex)리플렉션시 @Autowired 가 있다면 해당 변수에 읽어들인 객체를 주입함
    -> A라는 객체를 찾아서 넣음, 만약 A라는 이름의 객체가 없다면 같은 type 를 찾아서 넣음


  • MessageConverter (기본 값 JSON)

    스프링 라이브러리로 존재 (jackson)

    ex) java 언어 -> json -> python 언어
    python 언어 -> json -> java 언어
    중간언어의 역할을 하는것이 json

  • BufferedWrite & BufferedReader 를 쉽게 사용할 수 있다


    1byte : 통신 단위 = 8bit = 256

    유니코드 UTF-8 : 3byte 통신

    통신을 보낼 때( Byte Stream) : 1Byte : 8bit

    자바에서는 InputStream 으로 읽는다 (단위 byte)

    InputStreamReder -> 바이트를 문자를 받음 (배열로 :: 단점 크기가 정해져있다) (이거 안씀)

    ★BufferdReader -> 가변길이의 문자를 받을수 있다 (class임)

    (Jsp 에서는 request getReader = BufferedReader)
    (Jsp 내장객체 : out = Bufferedwrite)
    ★BufferdWriter -> 가변길이의 문자를 전송 (내려쓰기 기능이 X) (class임)
    java 에서는 Printwriter 를 사용 (print(), println() 을 포함함, Bufferedwrite와 똑같지만 이걸 많이씀)

    @ResponseBody -> BufferedWrite
    @RequsetBody -> BufferedReader


  • JPA

    Java Persistence API (DBMS에 기록할수 있도록 하기 위해 존재하는 API, 그런 환경을 조성함)
    Persistence(영속성) : 데이터를 생성한 프로그램의 실행이 종료되어도 사라지지 않는 데이터의 특성
    RAM => 휘발성 데이터 저장가능 => 컴터가 꺼지면 사라짐
    Persistence는 하드디스크에 저장하듯이 기록되어 있는것

    API 애플리케이션 프로그래밍 인터페이스

    프로토콜(동등한 관계 www는 interface 로 만든게 아님) / 인터페이스 (상하 관계가 존재하는 약속)
    약속 : 약속 을 의미

    ::: Java Persistence Application Programing interface



  • JPA는 ORM 기술
    Object Relational Mapping (오브젝트를 DBMS에 등록하는 방법론 같은것)
    ORM -> 나의 하인같은 느낌
    모델링 : 추상적인 개념을 현실세계에 뽑아내는것 (DB 테이블을 자바에서 모델링)
    DB
    NUM int
    NAME varchar
    ADDRESS varchar

    class A {
     int num;
     String name;
     String address
    }

    원래순서 DB (1) class (2) TRM
    but JPA ORM 순서 class(1) DB(2) ORM


  • 반복적인 CRUD 작업을 생략해줌
    자바 커넥션 요청 > DB 세션오픈 > 자바 Connection 을 가짐 > 2번째 자바요청 쿼리전송가능
    > DB 쿼리를 통해 작업수행 Data 전송 > Java 해당 데이터 Java Object로 변경  > DB 세션 끊음 > 작업후 Connection 끊음

    이런 반복적인 작업을 함수 하나로 해결 ()



  • 영속성 컨텍스트를 가지고 있다
    영속성 : 데이터 -> 영구적으로 저장 (DB)
    context : 해당 대상의 모든정보

    DB와 OOP의 불일치성을 해결하기 위한 수단 제공
    원래는 테이블에 맞춘 클래스를 만들어야하나
    ORM 을 하게되면 java 가 주도권을 맞춘 모델을 만들수 있다
    >>> JPA 가 자동으로 데이터를 맞춰서 넣어준다 DB나 등등

 

  • JPA 는 OOP 관점에서 모델링을 해준다

    상속, 콤포지션, extends

    방언 처리가 용이하여 유지보수에 좋다
728x90
반응형

'Spring > Spring boot' 카테고리의 다른 글

시간 측정하는 간단한 aop  (0) 2022.12.22
JPA 로 데이터 액세스  (0) 2022.08.17
mariadb로 데이터 액세스  (0) 2022.08.16
Restful 웹 서비스 구축  (0) 2022.08.16
스프링부트 개념정리 2  (0) 2022.07.27