spring15 스프링, 바이트코드 조작, Configuration, 다이나믹 프록시 바이트코드 조작, Configuration 스프링에서는 싱글톤을 보장 해준다 어떻게?? 같은 것을 여러번 호출하게 되는데 왜 그렇게 되는거지? 만약 appConfig라는 클래스가 있다면 그것을 Bean으로 등록을 한다, 여기서 @Configuration을 확인해야한다 @Configuration를 넣고 그후에 bean.getClass를 출력해보면 순수한 클래스 이름이 아닌 뒤에 xxxCGLIB가 붙어 있다 이것은 스프링이 바이트코드 조작 라이브러리를 써서, appConfig 클래스를 상속 받는 임의의 다른 클래스를 만들고 그것을 빈으로 등록을 한것이다. 여기서 Configuration를 빼면 Bean 등록이 안되나? 그것은 아니지만 Configuration이 없기에 바이트코드를 조작하지 않아서 싱글톤을 보.. 2021. 12. 29. 빈 lifecycle, PrototypeBean 빈 lifecycle 스프링 빈의 라이플 사이클 스프링 컨테이너 생성 -> 스프링 빈 생성 -> 의존관계 주입 -> 초기화 콜벡 -> 사용 -> 소멸전 콜백 -> 스프링 종료 참고 객체 생성시, 초기화 객체를 생성할 때 생성자에 값을 다 넣으면 되지 않냐? -> No!!! 객체 생성과 초기화를 분리하는 것이 유지보수에 좋다. 초기화는 생성된 값들을 활용해서 외부 커넥션을 연결하는 등 무거운 동작을 수행 BeanLifeCycleTest public class BeanLifeCycleTest { @Test public void lifeCycleTest() { ConfigurableApplicationContext ac = new AnnotationConfigApplicationContext(LifeCycle.. 2021. 12. 29. AOP 핵심 기능, 부가 기능 만약 orderService가 있다면 핵심 기능은 주문 하는 것, 여기서 부가 기능은 해당 기능의 로그를 찍어 볼 수 있다. 로그 추적 기능은 어떤 핵심기능이 호출 되었는지 로그를 남기기 위한 것이다. 이렇게 orderService에 핵심기능과, 부가기능이 같이 있다 일반적으로 부가기능은 여러 클래스에 걸쳐서 실행된다. 여러 어플리케이션 호출을 로깅해야한다면, 부가 기능은 횡단 관심사(여러 클래스에 걸쳐져있다)가 된다, -> 하나의 부가기능을 여러 곳에서 사용하는 것. 횡단 관심사에는 문제가 있다 여러 곳에 적용을 해야해서 노가다 적인 작업 로깅을 수정해야할 경우 이미 있는 부가기능을 다 제거해야한다 (반복적인 작업) - 위의 문제를 해결하기 위해 변경 지점이 하나가 되도록 모듈하.. 2021. 12. 29. dto , mvc layerd architecture, Timestamped dto가 무엇인가? dto는 entity의 값을 들고다니는 것이다. 직접적인 엔터티의 값의 변경을 허용하지 않도록 하기위해서이다. dto를 만들 때 dto클래스명은 명시적으로 지어야한다 만약 요쳥 받는 것이 회원가입이라고 생각한다면, SignupRequrest로 명시하면서 SignupRequrest에 필요한 것들을 맴버로 두면 된다. 밑의 예시를 보자 @Setter @Getter public class SignupRequestDto { private String username; private String password; private String email; private boolean admin = false; private String adminToken = ""; } 이런식으로 dto는 @Get.. 2021. 12. 2. 이전 1 2 3 4 다음