목록전체 글 (155)
Rootable의 개발일기
📌 싱글톤 패턴이 왜 필요한가 일반적으로 웹 애플리케이션에서 초당 많은 고객의 요청이 발생한다. 만약 코어 기능을 수행하는 서비스나 컨트롤러가 요청이 올 때마다 new를 통해 객체를 생성된다면 JVM 메모리가 Fulled 될 것이고, GC의 부담이 가중될 것이다. 이를 방지하기 위해 해당 객체가 딱 1개만 생성되어 공유되도록 하자는 아이디어에서 탄생하게 되었다. 📌 Java 코드를 통해 싱글톤 패턴 구현 static 변수를 선언하고, 메서드를 통해서만 객체를 얻도록 한다. 그리고 생성자는 private 으로 선언하여 new를 통해 객체를 얻지 못하도록 한다. public class SingletonService { private static final SingletonService instance = n..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/uireL/btsdYwq4VxZ/S2WV1RKkfgMw99tENa4PC0/img.png)
📌 DI 컨테이너에 등록된 모든 빈 조회 - getBeanDefinitionNames() : 스프링에 등록된 모든 빈 이름 조회 - getBean(이름, 타입) or getBean(타입) : Bean 이름으로 Bean 객체(인스턴스) 조회 @Test @DisplayName("모든 빈 출력하기") public void findAllBean() throws Exception { String[] beanDefinitionNames = ac.getBeanDefinitionNames(); for (String beanDefinitionName : beanDefinitionNames) { Object bean = ac.getBean(beanDefinitionName); System.out.println("name=..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/xEokc/btsdWCZTjZq/jleroB7O9pQqbZkdXssKA0/img.png)
1. 스프링 컨테이너를 생성한다. 스프링 컨테이너를 생성할 때는 @Configuration 애노테이션을 붙인 설정(구성) 파일을 지정해야 한다. - key: 빈 이름 - value: 빈 객체 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); 2. 스프링 빈 등록 스프링 컨테이너는 파라미터로 넘어 온 설정 클래스 정보를 사용해서 스프링 빈을 등록한다. - 메서드 명 : Bean 이름 (직접 부여 가능 -> @Bean(name = "memberService2")) - 반환 객체: Bean 객체 스프링 컨테이너는 설정 파일에 대해 자바, XML 형식을 모두 지원한다. 이것은 BeanDef..
SRP : 단일 책임 원칙(Single Responsibility Principle) 하나의 클래스는 하나의 책임만 가져야 한다. 이것은 변경이 있을 때 파급 효과를 줄이기 위함 OCP : 개방 폐쇄 원칙(Open-Close Principle) 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다. 역할과 구현의 분리를 의미하고 다형성의 개념 하지만 다형성만으로는 OCP 를 지킬 수 없다. LSP : 리스코프 치환 원칙(Liskov Substitution Principle) 프로그램의 객체는 프로그램의 정확성을 깨지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다. 이것은 객체 지향의 상속 개념 ISP : 인터페이스 분리 원칙(Interface Segregation Principle) ..