분류 전체보기
섹션 5 - 싱글톤 컨테이너
보통 웹 애플리케이션은 여러 고객이 동시에 요청을 한다. public class SingletonTest{ @Test void pureContainer(){ AppConfig appConfig = new AppConfig(); // 1 조회 MemberService memberService1 = appConfig.memberService(); //2 조회 MemberService memberService2 = appConfig.memberService(); // memberService1 != memberService2 assertThat(memberService1).isNotSameAs(memberService2); } } 스프링 아닌 순수한 DI 컨테이너인 AppConfig는 요청을 할 때마다 새로운..
섹션4 - 스프링 컨테이너와 스프링 빈
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); ApplicationContext를 스프링 컨테이너라 한다. ApplicationContext는 인터페이스이다. 컨테이너에 있는 모든 빈을 조회해보자. class ApplicationContextInfoTest{ AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); @Test @DisplayName("모든 빈 출력") void findAllBean(){ String[] beanDefinitionNames = ac.g..
섹션 3. 스프링 핵심 원리 이해2 - 객체 지향 원리 적용
기존의 섹션 2에서 우리는 순수하게 자바 코드로만 할인 정책을 만들어보았다. 고정 금액할인 정책, 즉 fixedPrice로 만들었는데 우리는 이미 이 전부터 이러한 정책이 변경될 것을 어느정도 알고 있었기에 인터페이스로 분리를 해주었다. 인터페이스로 해놓고 만약 정책이 바뀌면 해당 정책을 인터페이스에 구현 객체로 넘겨주면 되니까. 그러면 이걸 애플리케이션에 적용해보자. public class OrderServiceImpl implements OrderService{ // private final DiscountPolicy discountPolicy = new FixDiscountPolicy(); private final Discount policy = discountPolicy = new RateDisc..
백준 1874번 - 스택 수열
https://www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net #include #include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int n; cin >> n; stack s; int cnt = 1; vector v; for (in..
백준 10867번 - 중복 빼고 정렬하기
https://www.acmicpc.net/problem/10867 10867번: 중복 빼고 정렬하기 첫째 줄에 수의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. www.acmicpc.net 풀이를 무려 3가지나 떠올렸다!!! 1번 풀이) 중복을 허용하지 않으면서, 오름차순으로 자동정렬하는 stl은 set이 있다. 그래서 set을 활용해봤다. #include #include #include #include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); set s; int n; c..