이를 통해 높은 생산성과 코드 품질이 보장된다.
중요한 차이점은 제어의 역전 (Inversion of Controll)이다.
라이브러리 | 프레임워크 | |
---|---|---|
차이 | 제어의 주체: 개발자(호출) 클래스의 집합: 코드 재사용 ↑ | 제어의 주체 : 프레임워크 (IoC) 프레임워크의 구조에 따라 코드 작성하면 프레임워크에서 호출 |
Light weight JavaApplication Framework
POJO 기반의 앤터프라이즈 애플리케이션 개발을 쉽고 편하게 함
@Component
public class PersonService {
private Person person;
@Autowired
public PersonService(Person person) {
this.person = person;
}
public void printPerson() {
System.out.println("Name: " + person.getName() +
", Age: " + person.getAge());
}
}
애플리케이션의 핵심 비즈니스 로직과 공통적으로 필요한 부가 기능(예: 로깅, 보안, 트랜잭션 관리 등)을 분리하여 모듈화하는 프로그래밍 패러다임
public class UserService {
public void addUser(User user) {
// Log information about adding the user
System.out.println("Adding user: " + user.getUsername());
// Add the user to the database
}
}
비즈니스 로직과 로깅 로직 혼재
@Aspect
public class LoggingAspect {
@Before("execution(* kr.ac.hansung.UserService.addUser(..)) && args(user)")
public void logBefore(JoinPoint joinPoint, User user) {
System.out.println("Adding user: " + user.getUsername());
}
}
Aspect (LoggingAspect) 로깅 기능을 별도의 클래스로 분리하여 관리
애플리케이션 코드가 다양한 서비스 제공자와 상호작용할 수 있도록 공통 인터페이스를 제공하는 추상화 계층
+----------------------------------+
| Application Code |
+----------------------------------+
| +-----------+
+---| **PSA** |
+-----------+
| +---------------------+
+-------| Service Provider 1 |
+---------------------+
| +---------------------+
+-------| Service Provider 2 |
+---------------------+
스프링을 통해 Java Enterprise 시스템 개발이 용이