
관점 지향 프로그래밍(AOP, Aspect Oriented Programming) 애플리케이션에는 매우 많은 기능이 존재한다. AOP 는 애플리케이션의 기능을 핵심 관점과 부가 관점으로 나누고 그 관점을 하나로 묶는 프로그래밍 방법이다. 여기서 핵심 관점은 비즈니스 로직이 될 수 있고, 부가 관점은 DB 연결, 로깅, 보안 등 애플리케이션을 동작하는데 필요한 공통 기능이 될 수 있다. DB 테이블을 조회하는 메소드가 여러 개 있다고 가정해보자. AOP 로 만들어지지 않은 애플리케이션이라면 JDBC 에서 트랜잭션 처리를 하기 위해 사용하는 코드를 메소드별로 추가해야 할 것이다. 만약 트랜잭션 처리 방식을 변경하면 모든 중복 코드를 찾아 일일이 수정해야 한다. 아래 예시에서 사용하는 @Transactiona..
제어의 역전(IoC, Inversion of Control) 일반 자바 프로그램은 객체를 직접 생성하여 메소드를 호출한다. 만약 A object 에서 B object 의 메소드를 사용하고 싶으면, A object 에서 B object 를 직접 생성한 다음 메소드를 호출한다. 하지만 Spring 은 구현한 객체가 아니라 Spring 이 객체의 생명주기를 관리한다. 개발자가 Service 객체의 동작을 구현하더라도 해당 객체가 언제 호출되는지, 메소드를 언제 실행하는지는 Spring 이 관리한다. 프로그램의 제어권이 역전된 것이다. 예를 들어 JUnit 프레임워크에는 유닛 테스트를 도와주는 annotation 이 존재한다. @Test 나 @BeforeEach , @AfterEach 같은 annotation ..

스프링(Spring) 정의 Spring 은 Java 기반의 웹 어플리케이션을 만들 수 있는 프레임워크이다. * 애플리케이션 프레임워크: 애플리케이션을 개발하는 데에 있어 필요한 설계와 구현을 재사용이 가능하게끔 제공하는 뼈대 특징 Spring 의 특징은 크게 세 가지로 꼽을 수 있다. POJO, Plain Old Java Object 제어의 역전(IoC, Inversion of Control) & 의존성 주입(DI, Dependency Injection) AOP, Aspect Oriented Programming 각 특징은 별개의 포스트로 설명하기로 하고, 이번에는 POJO 가 무엇인지 보도록 한다. POJO, Plain Old Java Object Plain Old Java Object 는 순수 Jav..