본문 바로가기

분류 전체보기120

오픈스택: controller 기본 패키지 설치 가상 인프라 구성도 OS 및 버전 : ubuntu 22.04 LTS server 오픈스택 버전 : zed # controller 172.16.0.4 // netmask=172.16.0.0/24 10.0.0.11 // netmask=10.0.0.0/24 # compute1... 10.0.0.31...32...33 172 영역대는 DHCP로 자동할당 # block 스토리지 (cinder) 10.0.0.41... # object 스토리지 (swift) 10.0.0.51... 네트워크 Self-Service Network로 = Tunnel Network + External Network 구조 오픈스택에는 provider network와 self-service network가 존재 Controller 노드의 기본.. 2023. 4. 6.
스프링 - 의존관계 자동 주입 : 다양한 의존관계 주입 방법 의존관계 주입은 크게 4가지 방법이 있다. 생성자 주입 (최신 트렌드) 수정자 주입 (setter) 필드 주입 일반 메서드 주입 생성자 주입 이름 그대로 생성자를 통해서 의존 관계를 주입 받는 방법이다. 생성자 호출시점에 딱 1번만 호출되는 것이 보장된다. 불변(생성자 초기 세팅), 필수(final) 의존관계에 사용 생성자가 딱 1개만 있으면 @Autowired를 생략해도 자동 주입 된다. 물론 스프링 빈에만 해당한다. @Component public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; .. 2022. 5. 5.
JPA - 값 타입의 비교 값 타입: 인스턴스가 달라도 그 안에 값이 같으면 같은 것으로 봐야한다. int a = 10; int b = 10; a == b // true Address a = new Address(“서울시”) Address b = new Address(“서울시”) a == b // false 동일성(identity) 비교: 인스턴스의 참조 값을 비교, == 사용 동등성(equivalence) 비교: 인스턴스의 값을 비교, equals() 사용 값 타입은 a.equals(b)를 사용해서 동등성 비교를 해야 한다. 값 타입의 equals() 메소드를 적절하게 재정의해주어야 한다. (주로 모든 필드 사용) equals 메서드를 오버라이드 하지 않았을 경우 Address address1 = new Address("city.. 2022. 5. 2.
스프링 - 컴포넌트 스캔 1. 컴포넌트 스캔과 의존관계 자동 주입 지금까지 스프링 빈을 등록할 때는 자바 코드의 @Bean이나 XML의 등을 통해서 설정 정보에 직접 등록할 스프링 빈을 나열했다. 이렇게 등록해야 할 스프링 빈이 수십, 수백개가 되면 일일이 등록하기도 귀찮고, 설정 정보도 커지고, 누락하는 문제도 발생한다. 그래서 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공한다. 또 의존관계도 자동으로 주입하는 @Autowired 라는 기능도 제공한다. @Configuration @ComponentScan( excludeFilters = @Filter(type = FilterType.ANNOTATION, classes = Configuration.class)) public class.. 2022. 4. 29.
스프링 - 싱글톤 1. 웹 애플리케이션과 싱글톤 웹 애플리케이션은 보통 여러 고객이 동시에 요청을 한다. 고객 트래픽이 초당 100이 나오면 초당 100개 객체가 생성되고 소멸된다! 메모리 낭비가 심하다. 해결방안은 해당 객체가 딱 1개만 생성되고, 공유하도록 설계하면 된다. 싱글톤 패턴 참고로 전에 만들었던 스프링 없는 순수한 DI 컨테이너인 AppConfig는 요청을 할 때 마다 객체를 새로 생성한다. public class SingletonTest { @Test @DisplayName("스프링 없는 순수한 DI 컨테이너") public void pureContainer() throws Exception { AppConfig appConfig = new AppConfig(); //1. 조회: 호출할 때 마다 객체를 생.. 2022. 4. 28.