보라코딩
WW27 본문
240701
- 에러 해결에 하루 씀
1. byte를 다 읽지 못하는 에러 발생 (Not all bytes were read from the S3object...)
-> 해결 방안 S3ObjectSummary를 반환하지 않고 List<String>으로 반환하여 자원 해제 후 필요한 adaptor에서 다시 불러 사용
2. 디렉토리명 문제 (윈도우에서 리눅스 서버로 올리면서, FTP 디렉토리 에러..디렉토리가 있어야만 파일 업로드 됨)
-> recursive 사용하여 폴더 생성 (changeWorkingDirectory와 makeDirectory를 반복해서 폴더 생성)
240702
- try with resource 사용 시 catch로 꼭 잡을 필요 없다. throw로 던지는 게 나을수도!
- domain에서 메서드 실행할때 매개변수 받은 것과 도메인에서 작업할 객체 null 체크해서 throw 하게
tmp 파일
확장자가 .tmp라고 되어 있는 파일은 모두 삭제해도 됩니다.
temp 폴더는 temporary로 단어의 뜻 그대로 임시폴더입니다.
윈도우에서는 프로그램을 설치를 할 때나
엑셀이나 워드에서 파일을 불러오다가 그냥 다운될 때..
인터넷에서 프로그램을 이용해서 게임하다가 정전이 됬을때 ..
더 정확하게 말하자면
프로그램이 실행될 때 제대로 메모리에 들어가서 실행이 되야 하는데
이 메모리 주소보다 큰 데이터나 프로세스를 가지고 있을 때 생깁니다.
240703
- 커스텀 어노테이션 만들 수 있다!
https://velog.io/@shining_dr/Annotation%EA%B8%B0%EB%B0%98-%EC%8A%A4%ED%94%84%EB%A7%81-AOP
서블릿 컨테이너란 웹서버 확장 프로그램의 하나이며
이름 그대로 여러 서블릿을 담고 있으면서 실행하거나
HTTP Response 생성하고 스레드, 세션 관리를 도와준다.
대표적으로 Tomcat, Jetty 등이 서블릿 컨테이너라고 불린다.
각각의 서블릿들은 스프링 컨테이너로 빈(Bean)객체를 주입받아 사용할 수 있어
두 컨테이너는 스프링에서 밀접한 관계에 있으며 서로 상호보완적으로 동작한다.
- Servlet? Servlet Container에 의해 동작하는 Servlet은 javax.servlet 패키지안에 정의된 인터페이스이며 HTTP 요청, 응답을 처리하며 웹페이지를 동적으로 생성하는 역할
스프링 컨테이너란 프로그램이 유연하게 작동될 수 있도록
스프링에서 관리하는 객체(Bean)들의 생성, 관리, 의존성 주입(Dependency Injection), 라이프사이클 관리 등을 담당하는 컨테이너이다.
- Spring Container?
위 Servlet Container는 서블릿들을 초기화할 때,
Spring Container는 각각의 서블릿이 제대로 동작하기 위해 필요한 의존성 주입(DI)을 제공한다.
두 컨테이너는 이렇게 밀접한 관계에 있기 때문에 Spring Container에 짚고 넘어갈 필요가 있다.
Spring Container의 역할은 빈(Bean) 객체들을 생성하고,
빈 객체들 간의 의존성을 관리하며 빈 객체들을 필요한 곳에서 주입(Injection)해주는 등의 역할을 맡는다.
빈 객체를 생성하고 생명주기를 관리할 때 스프링 컨테이너가 직접 컨트롤 하기 때문에
Inversion of Control (IoC) 방식이라고 불리며
객체 생성, 관리, 의존성 관련 코드들이 아닌, 서비스에 대한 코드에만 집중할 수 있는 장점이 있다.
때문에 Spring Container는 IoC Container라고도 불린다.
- Spring Container의 종류 : BeanFactory, ApplicationContext
- IoC는 메소드나 객체의 호출작업을 개발자가 결정하는 것이 아니라,
외부에서 결정되는 디자인패턴을 말하는데 이 객체에 대한 제어권을 스프링 컨테이너가 가지고 있기때문에 제어의 역전
ex. @SpringBootApplication 이 어노테이션이 스프링 컨테이너를 생성하고 컴포넌트 스캔을 수행하여 빈 객체를 찾아 의존성을 자동으로 주입 -> @Component, @Service, @Repository, @Controller 등의 어노테이션이 붙은 클래스들이 빈으로 등록될 대상
- IoC의 구현 방식 중 하나인 DI(Dependency Injection)은 IoC를 구현하는 방법 중 하나이다.
IoC가 제어의 역전 개념을 통틀어 말한다면
DI는 이 개념을 구현하기 위해 의존관계를 외부에서 주입(Injection)하는 방식이다.