Bean객체를 이용하기 위해선 스프링 컨테이너를 생성해준 뒤 getBean을 통해 객체를 가져오는 과정을 거쳐야한다. 이 때 컨테이너와 Bean이 생성되는 시점과 소멸되는 시점에 특정한 작업을 필요한 경우 생명주기를 알아야한다. 컨테이너 생성 = Bean객체 생성 GenericXmlApplicationContext ctx = new GenericXmlApplicationContext("classpath:appCtx.xml"); ctx.close(); 스프링 컨테이너가 초기화되면 xml상에 작성된 Bean 객체 또한 같이 생성된다. 이후 ctx.close()를 이용해 스프링 컨테이너를 메모리에서 해제하게 되면 생성된 Bean 객체 또한 같이 해제되므로, Bean객체의 생성과 소멸시점은 스프링컨테이너와 동일..
의존성 주입을 위해 사용되는 어노테이션은 @Autowired, @Resource, @Inject 가 있는데 이 중 비슷한 @Autowired와 @Inject를 비교해보자. @Autowired vs @Inject @Autowired private InjectionBean injectionBean; @Inject private InjectionBean injectionBean; 두 어노테이션 모두 컨테이너상에서 데이터 타입이 같은 Bean을 찾아 의존성을 주입해주는 방식으로 주입 방식과 역할은 동일하며 2가지 차이점을 제외하면 이 둘은 거의 동일하다고 볼 수 있다. 차이점 1. 스프링 컨테이너에 Bean 객체가 존재하지 않을 경우 예외처리 방식 이럴 경우는 거의 없겠지만, 프로그래머가 컨테이너에 Bean을 ..
@Autowired를 이용하면 컨테이너 상에서 객체 Type이 일치하는 의존객체를 찾아 주입해준다. 그런데 컨테이너 상에 같은 타입의 Bean이 복수개 존재하게 되면, 스프링이 주입대상 객체를 판단하지 못해 Exception이 발생한다. 같은 타입의 Bean이 여러개 존재하는 상황에서, @Autowired를 이용하기 위해선 @Qualifier를 통해 Bean을 구분해주면 된다. @Qualifier 사용 전 ApplicationContext.xml DependencyBean.java public class DependencyBean { @Autowired private InjectionBean injectionBean; } 콘솔에러 일부 org.springframework.beans.factory.Bean..
함수를 사용할 때 괄호() 안에 지정하는 값을 인자라고 부를 때도 있고 매개변수라고 부를 때도 있다. 이 둘은 같아보이지만 상황별로 다르게 사용되는데, 어떤 차이가 있는지 알아보자. 인자 : 메서드를 호출할 때 괄호() 안에 전달하는 값 매개변수 : 인자의 값을 복사해 받아들이는 메서드 선언부에 지정된 변수 코드를 통한 예시를 알아보자. 매개변수 // 메서드의 선언 public static int addNum(int a, int b) { //parameter : a, b return a + b; } int 형 정수 2개를 매개변수로 받아 합을 리턴하는 메서드이다. 여기서 사용되는 a와 b는 전달되는 값을 담는 변수로써 매개변수라고 할 수 있다. 인자 public static void main(String..
스프링설정파일에서 Bean 마다 의존객체를 주입해주게되면 프로그래머가 번거로울 수 있다. 의존객체 주입 방법을 조금 더 편하게 할 수 있는 @Autowired와 @Resource를 통해 의존객체 자동주입을 알아본다. @Autowired와 @Resource의 차이점을 간단히 살펴보면 다음과 같다. @Autowired @Resource DI 방법 객체 타입 객체 이름 적용가능 범위 - 변수 - 생성자 - Setter - 메서드 - 변수 - Setter 자동주입 사용 전 applicationContext.xml 스프링설정파일 상에서 dependencyBean 클래스에 injectionBean 객체의 생성자와 프로퍼티를 주입해준다. DependencyBean.java private InjectionBean in..
IoC 컨테이너에서 생성되는 Bean은 기본적으로 싱글톤 방식이다. 즉 JAVA 코드에서 getBean을 통해 객체를 여러번 가져오더라도 실제로 생성되는 객체는 하나이다. 이러한 싱글톤 패턴은 대규모 트래픽 처리시, 객체의 재사용성을 높이고 객체를 여러번 생성하면서 발생하는 메모리 낭비를 방지할 수 있다. 싱글톤 패턴의 단점 직접 싱글톤 패턴을 구현하게되면 여러가지 단점을 가지게 되는데 대표적으로 가지는 단점은 다음과 같다. private 접근제어자를 통해 생성되기 때문에 상속이 불가능하다. 단위 테스트의 어려움 서버환경에서 동시에 요청이 들어오게되면 하나만 생성됨을 보장하지 못한다. 전역 상태를 가지기 때문에 객체지향적 관점에 바람직하지 못하다 싱글톤 레지스트리 스프링 컨테이너에서 생성하는 Bean 또..
스프링은 스프링설정파일(*.xml)에서 Bean을 생성해주는데 스프링설정파일이 꼭 한 개일 필요는 없다. 스프링 설정파일이 하나일 경우, 여러 개일 경우를 상황별로 나누어 Java 클래스에서 활용하는 방법을 알아보자. 1. 한 개의 스프링설정파일이 있을 때 JAVA 클래스에서 호출 GenericXmlApplicationContext ctx = new GenericXmlApplicationContext("classpath:applicationContext.xml"); 스프링설정파일이 한 개일 때는 위와 같이 Bean을 가져올 수 있다. 2. 여러개의 스프링설정파일 생성 후 호출하는 경우 하나의 xml 파일에 모든 Bean을 명시하다 보면 코드가 길어질 수 있는데 이때, 기능에 따라 구분된 여러 개의 xml..
JVM 자바의 가장 큰 특징 중 하나는 운영체제에 독립적이라는 것이다. 즉, 윈도우에서 만들어진 자바 프로그램은 리눅스, 맥 os 에서도 동작할 수 있다. OS 위에서 이러한 독립성을 제공해주는 것이 JVM(Java Virtual Machine)이며 기본적으로 동작하는 과정은 다음과 같다. 자바 프로그램 실행 과정 사용자가 만든 Java 소스코드는 컴파일러를 거쳐 클래스 파일(바이트코드로 번역)로 만들어진다. 이후 만들어진 바이트 코드를 JVM이 읽어 어떤 운영체제든 실행가능하도록 만들어진다. 이러한 구조를 통해 Java프로그램은 운영체제에 독립적이라고 할 수 있다. 하지만 Java 응용프로그램이 통신하는 JVM은 운영체제(Window, Linux, Mac)에 종속적이다. 즉, 운영체제에 적절한 JVM이..
- Total
- Today
- Yesterday
- 부트스트랩
- 스프링부트
- Java
- CSS
- 네트워크
- 데이터베이스
- HeidiSQL
- 오류
- SQL
- 넥사크로
- C
- 국비교육
- 백준
- Thymeleaf
- 개발용어
- 환경설정
- C++
- 이클립스
- JSP
- 스프링
- 프로그래머스
- 오라클
- CS
- JVM
- 인턴
- svn
- Open API
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |