목록공부공부/Spring Boot (12)
이숭간 공부기록
1. 멀티스레드에 대해 알고있는가? ( 왜 멀티스레드에서 스레드마다 '스택'만 따로 할당받는지, 공유되는 영역(힙,코드, 데이터)은 어디인지 ) 2. 스프링의 싱글톤에 대해 알고있는가? ( Bean에 대해 알고있는지, Bean의 Default 스코프에 대해 알고있는지 ) 3. JVM의 메모리 영역에 대해 알고있는가? ( Method Area, Heap, Stack, PCRegister, Native Method Stack) JVM의 Method Area : static키워드 , 클래스에 대한 메타데이터 정보 위와 같은 내용을 알고 있다면 글을 이해하는데 더 도움이 될것이라고 생각한다. 우리가 보통 스레드간 공유를 생각하면 가장먼저 동기화를 떠올린다. 운영체제에서 주구장창 배운것이 동기화,, lock 이기..
DataSource란? DB와 관계된 커넥션 정보를 담고있으며 빈으로 등록하여 인자로 넘겨준다. → 이 과정을 통해 Spring은 DataSource로 DB와의 연결을 획득한다. DB 서버와의 연결을 해준다. DB Connetion pooling기능 종류 : JDBC Driver vendor(MySQL, Oracle)별로 여러가지가 존재한다. DataSource를 설정하고 빈에등록, 주입하는 방법 DB와의 연결을 위해 **DB서버 정보(Property)**를 설정한다. (하드코딩을 피하기위해 파일로 설정 → 이곳에서만 수정하면 다른 모든부분에 변경내용이 적용되므로 이렇게 하는것이 좋다.) 설정한 property file을 통해 DataSource를 빈으로 등록한다. Spring JDBC를 이용하려면 DB..
Bean에 대한 개념적 설명은 아래글을 참고해주세요! https://esoongan.tistory.com/85?category=915638 [Spring] 스프링 빈(Bean)이란? atoz-develop.tistory.com/entry/Spring-%EC%8A%A4%ED%94%84%EB%A7%81-%EB%B9%88Bean%EC%9D%98-%EA%B0%9C%EB%85%90%EA%B3%BC-%EC%83%9D%EC%84%B1-%EC%9B%90%EB%A6%AC [Spring] 스프링 빈(Bean)의 개념과 생성 원리.. esoongan.tistory.com @Component @ComponentScan의 대상이 되는 어노테이션으로, 스프링 컨테이너의 관리대상이되고 빈으로 등록된다. @Service, @Cont..
Class ResponseEnitty 응답자체의 독립된 값이나 표현형태로, 사용자의 HttpRequest에 대한 응답 데이터를 포함하는 클래스이다. 따라서 HttpStatus, HttpHeaders, HttpBody를 포함한다. Spring Framework에서 제공하는 클래스인 HttpEnityt를 상속받으며, RestTemplate(서버와 서버간 통신을 쉽게해줌) 및 @Controller메서드에 사용하고 있다. RestTemplate에서의 사용예 getForEntity()와 exchange() 메서드의 응답객체로도 사용한다. ResponseEntity entity = template.getForEntity("https://example.com", String.class); String body = e..
스프링에서 컨트롤러 테스트하기 Controller테스트는 Service/Repository 테스트에 비해 상대적으로 테스트하기가 까다롭다. 컨트롤러는 사용자의 HTTP Request를 처리하고 HTTP Response를 반환하는 객체이기 때문에 이를 테스트하기 위해서는 웹서버가 동작해야하고 요청과 반환을 담당하는 HttpServeletRequest/HttpServletResponse를 직접 구현해야한다. 하지만 이제는 스프링에서 지원하는 MockMvc를 이용하면 아주 간단하게 URL요청을 GET,POST,PUT, DELETE와 같은 REST형태로 요청을 테스트할수 있다. MockMvc를 주입받는 2가지 방법 1. @SpringBootTest + @AutoConfigureMockMvc 애노테이션 붙이기 @..
Spring프레임워크의 3가지 핵심 프로그래밍 모델중 하나로, 외부에서 두 객체간의 관계를 결정해주는 디자인패턴으로 인터페이스를 사이에 두고 클래스 레벨에서는 의존관계가 고정되지 않도록 하고 런타임시에 관계를 동적으로 주입하여 결합도를 낮출수 있게 하는 기법이다. DI (Dependency Injection) 의존성 주입은 IoC(Invesoin of Control, 의존성 역전) 원칙하에 객체간의 결합을 약하게해주고 유지보수가좋은 코드를 만들어준다. 즉, 외부에서 생성된 객체를 이용하는 것이다. 한 객체가 어떤 객체에 의존할것인지는 별도의 관심사이다. DI컨테이너를 통해 서로 강하게 결합되어있는 두 클래스를 분리하고, 두 객체간 관계를 결정해줌으로서 결합도를 낮추고 유연성을 확보하고자 한다. (이때 다..