웹찢남

Spring - Spring Core 본문

BACK_END/Spring 공부

Spring - Spring Core

harry595 2021. 2. 13. 18:54

Spring Framework란

- 엔터프라이즈 급 APP을 구축할 수 있는 가벼운 솔루션

- 원하는 부분만 가져다 사용할 수 있도록 모듈화가 잘됨

- MVC Framework를 제공

- AOP 지원, IoC 컨테이너

- 약 20개의 모듈로 구성

 

컨테이너란?

- 인스턴스의 생명주기 관리

- 생성된 인스턴스들에게 추가적인 기능 제공

 

IoC(Inversion of Control)란?

- 흐름의 제어를 개발자가 하는 것이 아니라 다른 프로그램이 그 흐름을 제어

 

DI(Dependency Injection)란?

- 의존성 주입

- 클래스 사이의 의존 관계를 빈 설정 정보를 바탕으로 컨테이너가 자동으로 연결


BeanFactory: Ioc/DI에 대한 기본 기능을 가지고 있음

ApplicationContext: BeanFactory의 모든 기능을 포함 + 트랜잭션 처리, AOP 처리 가능

 

 

pom.xml에서 Properties 부분은 상수를 선언하는데에 사용함

<!--상수 선언-->
<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <spring.version> 4.3.14.RELEASE</spring.version>
</properties>
  
  
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-context</artifactId>
  <version>${spring.version}</version> <!-- 상수 사용 -->
</dependency>

 

Annotation

- jdk5 부터 지원되기 시작

- 특수한 의미를 부여하는 역할

- conpile 혹은 runtime 시에 해석

 

@Configuration

  • 스프링 설정 클래스를 선언하는 어노테이션

@Bean

  • bean을 정의하는 어노테이션

@ComponentScan

  • @Controller, @Service, @Repository, @Component 어노테이션이 붙은 클래스를 찾아 컨테이너에 등록

@Component

  • 컴포넌트 스캔의 대상이 되는 애노테이션 중 하나로써 주로 유틸, 기타 지원 클래스에 붙이는 어노테이션

@Autowired

  • 주입 대상이되는 bean을 컨테이너에 찾아 주입하는 어노테이션

Component scan만하면 Bean을 쓸모가 없는데 쓰는 이유

- Component scan은 약속된 annotation이 붙은거만 읽어옴

- 다른 라이브러리가 가진 객체를 쓰려면 거기에 annotation을 붙일 수 없으니 bean 사용

 

@Bean 사용법

package kr.or.connect.diexam01;

import org.springframework.context.annotation.*;

@Configuration
public class ApplicationConfig {
	@Bean
	public Car car(Engine e) {
		Car c=new Car();
		c.setEngine(e);
		return c;
	}
	
	@Bean
	public Engine engine() {
		return new Engine();
	}
}

 

 

@Component 사용법

package kr.or.connect.diexam01;

import org.springframework.context.annotation.*;

@Configuration
@ComponentScan("kr.or.connect.diexam01")
public class ApplicationConfig2 {

}
package kr.or.connect.diexam01;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.*;

@Component
public class Car {
	@Autowired
	private Engine v8;

	public Car() {
		System.out.println("Car 생성자");
	}

	public void run() {
		System.out.println("엔진을 이용하여 달립니다.");
		v8.exec();
	}

}

 

'BACK_END > Spring 공부' 카테고리의 다른 글

Spring - MVC  (0) 2021.02.17
Spring - JDBC  (0) 2021.02.15
Spring - JSTL  (0) 2021.02.03
Spring - EL (Expression Language)  (0) 2021.02.02
Spring - Scope  (0) 2021.02.02
Comments