일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 소프트웨어 개발보안 경진대회
- react
- SessionAttribute
- restapi
- webhacking 처음
- Forensic 절차
- PyAmdecoder
- 행정지역 DB
- spring
- reversing.kr
- 인턴 지원
- 소개딩
- JSTL
- Django
- 네이버 인턴
- Database
- Layered Architecture
- DBMS
- EER
- mysql
- riceteacatpanda
- 메모리 포랜식
- 방명록 만들기
- frontend
- jsp
- 3단계 지역 DB
- 동읍면 DB
- 정보보호병 후기
- ㅁㅇㅂ??ㅇㅈㄷ ㅎㅇㅌ...
- 인턴 후기
- Today
- Total
웹찢남
Spring - Spring Core 본문
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 |