Back-end109 10. Bean 자동 vs 수동 등록 0. 개요 - 이전 포스팅에서 Bean 자동/수동 등록에 대해 기본적인 것들을 알아보았다. - 이번 포스팅에서는 Bean 자동 등록과 수동 등록을 동시에 사용할 때 발생할 수 있는 문제점들에 대해 알아보자. 1. Bean 자동 등록과 수동 등록이란? a) AppConfig를 이용한 Bean 수동 등록 - Bean 수동 등록은 AppConfig 설정 파일에 직접 Bean을 등록하는 방식을 말한다. @Configuration public class AppConfig{ @Bean public TestService testService() { return new TestServiceImpl(testRepository()); } } b) @ComponentScan을 이용한 Bean 자동 등록 - Bean 자동 등.. 2022. 2. 9. 9. @ComponentScan의 동작원리와 옵션 0. 개요 - 이전 포스팅에서 Bean 자동 등록에 대해서 알아보았다. - 이번 포스팅에서는 Bean 자동 등록의 핵심인 Component Scan에 대해서 알아보자. 1. @ComponentScan의 동작원리 a) @ComponentScan의 탐색 위치 설정 - @ComponentScan이 붙은 클래스의 위치를 기반으로 Bean을 찾아 Spring Container에 등록한다. - 여기서 말하는 클래스의 위치란, 클래스를 생성하면 클래스 상단에 자동으로 부여되는 package경로를 의미한다. package hello.spring; public class HelloSpring {} - 이처럼 해당 클래스의 패키지 경로부터 하위 경로까지, 모든 클래스의 Bean을 탐색한다. - 더불어, 옵션을 사용하면 @.. 2022. 2. 8. 8. Bean 자동 등록 0. 개요 - 이전 포스팅에서 AppConfig 설정 파일을 이용하여 객체를 Spring Container에 Bean을 등록시키는 방법을 배웠다. - 이처럼 AppConfig 파일을 사용하여 직접 Spring Bean을 명시하는 방법을 Bean 수동 등록이라고 한다. - 실무에서는 수십, 수백 개의 Bean을 구성하여 프로젝트를 만든다. - 그러므로 수 많은 Bean을 AppConfig에 일일이 작성하고 관리하는 것은 비효율적이다. - 수 백줄의 AppConfig 파일에서 Bean의 역할과 의존관계를 개발자가 한번에 이해하고 수정하기 어렵기 때문이다. - 그래서 현업에서는 AppConfig보다 Spring에서 제공하는 Bean 자동 등록 기능을 중점적으로 사용한다. 1. Bean 자동 등록 - AppCo.. 2022. 2. 7. 7. Singleton Container 0. 개요 - Spring Container의 다른 이름이 Singleton Container이다. - Spring Container가 Bean을 Singleton 방식으로 관리하기 때문에 붙여진 이름이다. - 이번 포스팅에서는 Singleton Container에 대해서 알아보도록 하자. 1. Spring이 Singleton을 사용하는 이유 - Spring 프레임 워크는 기업용 웹 서비스를 지원하기 위해 등장한 기술이다. - 기업용 웹 서비스는 다수의 사용자가 동시적으로 서버에게 요청을 보낸다. - 이러한 다수의 동시 요청을 오류 없이 처리하기 위해 Singleton 방식을 사용한다. a) 다수의 요청을 처리하는 방법 - 고객의 요청마다 객체를 새롭게 생성한다고 가정해보자. - 서비스 트래픽이 초당 1.. 2022. 2. 2. 6. Spring Container의 다형성 0. 개요 - ApplicationContext(= Spring Contianer)는 다양한 형태로 구현이 가능하다. - 이는 ApplicationContext(= Spring Contianer)가 인터페이스이기 때문이다. - 이번 포스팅에서는 ApplicationContext의 다형성에 대해서 알아보자. 1. BeanFactory - BeanFactory는 ApplicationContext의 상위 개념이다. - ApplicationContext는 인터페이스고, BeanFactory라는 인터페이스를 상속받는다. - 그렇다면 BeanFactory는 무엇일까? a) Spring Container의 최상위 개념 - BeanFactory는 Spring Container의 최상위 개념이다. - BeanFacotr.. 2022. 2. 1. 5. Spring Container 0. 복습 - 이전 포스팅에서 Spring을 사용해야 하는 이유에 대해서 알아보았다. - java만으로 객체지향 프로그래밍의 원칙(SOLID)을 온전히 구현할 수 없기에 AppConfig 설정 파일을 사용하여 구현체 간의 의존관계를 설정하고, 이 의존관계를 외부에서 주입(DI)하는 방식을 사용했다. - 그로 인해 프로그램의 전체적인 흐름이 프로그램 내부에 의해 결정되는 것이 아닌, 외부의 설정 파일(AppConfig)에 의해 결정되는 IoC의 특징에 대해 알 수 있었다. - 그렇다면 Spring에서 SOLID, DI, IoC, AppConfig 등의 개념을 어떻게 사용하는지 알아보자. 1. Spring Container - AppConfig의 역할(구현체의 생성, 관리 그리고 의존관계 형성)을 하는 대상.. 2022. 1. 31. Java의 기본 자료형(Primitive) 1. 정수형(short, int, long) a) Java가 숫자 계산을 하는 방법 - Java는 숫자 연산을 int형으로 변환하여 계산한다. 즉, int형 연산을 기본으로 한다. - short 자료형의 변수 2개를 더한다고 하더라도 연산 시 int로 변환하여 계산하고, int형으로 결과를 반환한다. public class MyClass { public static void main(String args[]) { short num1 = 10; short num2 = 10; short num3 = num1 + num2; System.out.print(num3); } } - 이처럼 short 자료형이지만, Java가 연산을 할 때에는 int로 계산이 되기 때문에 위와 같은 에러가 발생한다. - 즉, 작은 자.. 2022. 1. 28. 변수와 리터럴에 대하여 1. 변수(Variable) a) 개념 정의 - 변수는 데이터를 저장하기 위해 할당된 메모리 공간에 붙여지는 이름이다. - 다음 예시를 보자. int num = 1; - 변수를 선언하여 1이라는 숫자는 메모리의 어떤 공간에 저장되었다. - 이 메모리 공간은 16진 수로 된 일련번호를 갖는다. ex) 1b3A1211 - 저장된 데이터(1)를 찾기 위해서 매번 16진수의 메모리 주소 값을 기억하는 것은 무리가 있으며, 가독성이 떨어져 비효율적이다. - 그러므로 이 메모리 공간에 대한 주소값을 대신한 이름을 붙이는데, 이것이 변수다. b) 변수 정의 시 주의사항 - 변수의 이름은 숫자로 시작할 수 없다. - 변수의 이름에는 $와 _(언더바) 외 다른 특수문자는 사용할 수 없다. - 이미 Java에 정의되어 있.. 2022. 1. 27. 4. Spring을 사용하는 이유 0. 개요 - 이전 포스팅에서 좋은 객체지향 프로그래밍을 위한 SOLID 원칙을 배웠다. - 이제 SOLID만 따른다면, Java를 사용해 온전한 객체지향 프로그래밍을 구현할 수 있을까? 1. Java는 SOLID 원칙을 지킬 수 없다. - Java만을 이용해서 SOLID 원칙을 구현하는 것에는 문제가 있다. - 무엇이 문제인지 알아보자. a) OCP와 DIP원칙의 위배 - Java만을 이용하여 객체지향 프로그래밍을 만들다 보면 OCP와 DIP원칙을 위반하게 된다. - 간단한 예제를 살펴보자. public class ServiceImpl implements Service { private final Repository repository = new MemoryRepository(); } - 위의 예시에서.. 2022. 1. 27. 이전 1 ··· 7 8 9 10 11 12 13 다음