eajni IT 초보사전 💦💦

[Spring] 스프링 기초

2022-11-26

Spring

IoC가 객체의 생명주기를 관리하며 DI(Dependency Injection) 패턴을 제공하여 클라이언트는 비즈니스 로직에 집중할 수 있도록 해줌

POJO 프로그래밍 지향

Plain Old Java Object, 즉 순수 Java만을 통해서 생성한 객체를 의미

IoC, Inversion of Control

기존의 모든 제어를 클라이언트의 코드가 가지도록 구현하던 것을 Framwork가 제어를 나누어 가져가 의존 관계의 방향이 달라지게 되는 것을 말함

  • 결합도 $\downarrow$
  • 컨트롤 제어권이 사용자가 아닌 프레임워크에 있어, 필요에 따라 스프링이 사용자의 코드를 호출
  • 객체의 생성과 의존관계를 컨테이너가 자동으로 관리

AOP, Aspect-Oriented Programming

  • 응집도$\uparrow$
  • 트랜잭션이나 로깅, 보안 등 여러 모듈에서 공통으로 사용하는 기능을 분리하여 관리
  • 문제 해결을 위한 핵심 관심 사항과 전체에 적용되는 공통 관심 사항을 분리해 관심을 기준으로 모듈화

PSA, Portable Service Abstraction

  • 환경의 변화와 관계없이 일관된 방식의 기술로의 접근 환경을 제공하는 추상화 구조 (interface) 다형성
  • JDBC라는 표준 스펙이 존재하기 때문에 DB 종류에 관계 없이 공통된 방식으로 코드 작성 가능

스프링 프레임워크

Framework 애플리케이션의 기본 아키텍처를 제공하여, 비즈니스 로직 구현 환경 제공

컨테이너

객체의 생성과 관리를 담당하며 객체 운용에 필요한 다양한 기능을 제공

BeanFactory

Bean 객체 생성, 관리

ApplicationContext

BeanFactory의 기능 이외에 트랜잭션 관리, 메시지 기반의 다구거 처리 등 다양한 기능D 지원

의존성 주입(DI, Dependency Injection)

💡 의존 관계 = 객체간 결합 관계 다른 객체에 대해 객체를 생성하고 생성된 객체의 레퍼런스 정보를 알면 다른 객체의 변수나 메소드 이용 가능 (주입 방법 : 필드 or setter or 생성자)

빈등록1. 컴포넌트 스캔

  • 신속하게 활용 가능하나 Bean 관리 정보가 분산됨

  • @Component를 포함해 자동 객체 생성

어노테이션 기능
@Controller 클라이언트 요청 제어
@Service 비즈니스 로직 처리
@Repository DB 연동 제어 (Data Access Object)
  • 클래스 선언부에 @Component 작성 후 변수 등에 직접 어노테이선 적용
어노테이션 기능
@Autowired 생성자, 메소드, 변수 등에 대해 해당 타입의 객체에 자동으로 할당
@Inject java(JSR)에서 지원, 타입에 맞춰 연결
@Qualifier 특정 객체의 이름을 이용, 동일 타입 객체 두 개 이상에 할당 불가
@Resource java(JSR)에서 지원, 이름으로 연결

빈등록2. JavaConfig

  • @Configuration 클래스에서 @Bean 설정
  • 설정 정보를 클래스에 바로 구현할 수 있음

빈등록3. XML

  • 한 곳에서 Bean 관리 가능, 최근 사용빈도 낮음

JDBC, Java Database Conectivity

자바에서 DB를 연결하고, 그 안에 있는 데이터를 가져오기 위해서 사용하는 API DBMS에 상관없이 사용 가능

영속성(Persistence)

데이터를 생성한 프로그램이 종료되더라도 사라지지 않는 데이터의 특성 (메모리 ⇒ DB 영구 저장)

계층 위치 역할
Presentation Layer Controller 요청 확인, 전달
Business Layer Service 비즈니스 로직
Persistence Layer Repository 영속성 부여, DB와 연결
Database Layer Entity RDBMS의 테이블 객체

Persistance Framework

데이터베이스 연동 시스템 개발 지원

  • ORM, Object-Relational Mapping 관계형 데이터베이스의 ‘관계’를 Object에 반영하는 것이 목적
    • JPA, Java Persistence API 객체 중심 설계로 패러다임 전환
      • 메서드이름만으로 조회 기능 기본 제공
      • CRUD (CrudRepository 상속)
      • 페이징 기능 기본 제공(PagingAndSortingRepository 상속)
    • H2
    • Hibernate
  • SQL Mapper 단순히 필드를 매핑시키는 것이 목적, SQL 직접 작성해야 함
    • MyBatis
    • Jdbc Templetes

주요 클래스 및 인터페이스

  • DriverManager : JDBC 드라이버(DBMS에 따라 다르게 적용) 로드
  • Connectoin : DB와 연결하기 위한 인터페이스
  • Statement : SQL을 보내기 위한 통로
    • Statement : SQl을 보내기 위한 통로. 인자가 없음.
    • PreparedStatement : Statement와 동일하나 인자값으로 SQL을 받음. 특정한 SQL에 대한 통로
    • CallableStatement : PL/SQL을 호출할 때 사용
  • ResultSet : SQL문의 결과를 저장하는 객체

prev [JAVA] JSP

Comments

Content