스프링 프레임워크의 차별점
- 복잡함에 반기를 들어서 만들어진 프레임워크
- 프로젝트 전체 구조를 설계할 때 유용한 프레임워크
- 다른 프레임워크들의 포옹
- 개발 생산성과 개발도구의 지원
주요 특징
- POJO기반의 구성
- 의존성 주입(DI)을 통한 객체간의 관계 구성
- AOP(Aspect-Oriented-Programming) 지원
- 편리한 MVC 구조
- WAS의 종속적이지 않은 개발 환경
커넥션 풀이란?
- 여러명의 사용자를 동시에 처리해야하는 웹 애플리케이션의 경우 DB연결을 이용할 때 사용
- JAVA에서는 DataSource라는 인터페이스를 통해 사용
- 여기서는 HikariCP 사용
MyBatis란?
- SQL 매핑(Mapping) 프레임워크
전통적인 JDBC프로그램과 MyBatis의 차이점
전통적인 JDBC 프로그렘 | MyBatis |
- 직접 Connection을 맺고 마지막에 Close()로 닫아줘야함 - Preparedstatement 직접 생성 및 처리 - SetXXX등을 모두 개발자가 직접 처리 - SELECT의 경우 직접 ResultSet 처리 |
- 자동으로 Connection 처리 - MyBatis 내부적으로 처리 - #{prop}와 같이 속성을 지정하면 내부적으로 자동 처리 - 리턴 타입 지정 시 자동으로 객체 생성 및 ResultSet 처리 |
MyBatis
- 가장 핵심적인 객체(SQLSession, SQLSessionFactory)
- SQLSession : MyBatis에서 SQLSession을 통해서 Connection을 생성하거나 원하는 SQL을 전달하고, 결과를 리턴 받는 구조로 작성
- SQLSessionFactory : 내부적으로 SQLSession을 만들어 내는 존재
Mapper
- SQL과 그에 대한 처리를 지정하는 역할
- XML과 인터페이스 + 어노테이션 형태로 작성
- RootConfig.java 설정에서 @MapperScan 어노테이션을 사용해서 패키지를 인식하는 방식으로 처리
POJO(Plain Old Java Object)
- 다른 프레임워크들과 달리 관계를 구성할 때 별도의 API를 사용하지 않음
- 생산성에 유리, 코드 테스트를 좀 더 유연하게 가능
- 개발자가 특정 라이브러리나 컨테이너 기술에 종속적이지 않음
- 개발자가 특정 라이브러리나 컨테이너 기술에 종속적이지 않음
구조와 DI
- 의존성 주입(DI)
- 'Application Content'에서 존재가 필요한 객체 생성 후 필요한 객체들을 주입하는 역할을 하는 스프링의 구조
- Application Content가 관리하는 객체 -> 빈(Bean)
- 빈과 빈 사이의 의존관계를 처리하는 방식(XML 설정, 어노테이션 설정, Java 설정)
LOMBOK
- 컴파일 시 코드를 작성해 주는 라이브러리
- @Setter
- @Data
@Setter
- Setter 메소드를 생성해주는 역할
- OnMethod 속성 : Setter 메소드를 생성시 추가할 어노테이션 지정
@Data
- Lombok에서 가장 자주 사용되는 어노테이션
- @ToString, @EqualsAndHashCode, @Getter, @Setter, @RequireArgsConstructor를 모두 결합한 형태
// 생성자 선언 및 주입
public class Sample {
private Chef chef;
public Sample(Chef chef) {
this.chef = chef;
}
}
// =============================================================================
// 생성자의 자동 주입
import org.springframework.stereotype.Component;
import lombok.Getter;
import lombok.ToString;
@Component
@ToString
@Getter
@AllArgsConstructor
public class Sample {
private Chef chef;
}
Spring 관련 어노테이션
- @Component
- @Autowired
@Component
- 해당 클래스가 스프링에서 객체로 만들어서 관리하는 대상임을 명시하는 어노테이션
- @Component가 존재하는 클래스들을 객체로 생성해서 빈으로 관리하게 됨
@Autowired
- 스프링 내부에서 자신이 특정한 객체에 의존적이므로 자신에게 해당 타입의 빈을 주입해주라는 표시
-
public class Test{ @Setter(onMehtod_ = { @Autowired } private Sample sample; }
'프로그래밍 > 프로젝트 정리' 카테고리의 다른 글
[오라클 클라우드]프로젝트 호스팅 서버 만들기 (0) | 2022.01.24 |
---|---|
스프링 MVC의 Controller (0) | 2022.01.19 |
스프링 MVC의 기본 구조 (0) | 2022.01.19 |
HikariCP 설정 및 테스트 (0) | 2022.01.18 |
JDBC 테스트 코드 (0) | 2022.01.18 |