정적인 컨텐츠 vs 동적인 컨텐츠
MVC 패턴 모델1과 모델2
MVC 패턴 : MVC패턴의 최대 장점은 사용자에게 보여지는
프레젠테이션 영역과 비즈니스 로직, 데이터 구조가 서로 완전히 분리되어 있다는 점
MVC - Model 1
MVC - Model 2
모델1: 비즈니스 로직 영역(Controller)에 프레젠테이션 영역(View)을 같이 구현하는 방식
모델2: : 비즈니스 로직 영역과 프레젠테이션 영역이 분리되어 있는 구현 방식
모델1 | 모델2 | |
컨트롤러 & 뷰 분리 여부 | 통합(jsp) | 분리(jsp,servlet) |
장점 | 쉽고 빠른 개발 | 디자이너/개발자 분업 유리 ,유지보수 유리 |
단점 | 유지보수 어려움 | 설계 어려움 , 개발난이도 높음 |
경량
여러 개의 모듈로 구성 : 각 모듈은 하나 이상의 JAR파일로 구성
스프링 프레임워크가 POJO(Plain Old Java Object) 형태의 객체를 관리하기 때문에 가능
POJO란?
특별한 규칙이나 요구 사항 없이 단순하게 정의된 자바 객체
즉 , EJB같은 무거운 프레임워크에 종속되지 않는 , 평범하고 가벼운 자바 클래스
POJO 특징과 장점
무상태 또는 상태를 가질 수 있음
특별한 인터페이스나 클래스 상속이 필요 없음
간단하고 직관적임
유연성과 재사용성 높음
테스트 용이
어떤 특별한 요구 사항이나 규칙 없이 정의된 단순한 자바 객체입니다. 이러한 객체를 POJO라고
예시코드
public class Person {
private String name;
private int age;
// 기본 생성자
public Person() {}
// 매개변수가 있는 생성자
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// Getter 및 Setter 메서드
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
// toString 메서드
@Override
public String toString() {
return "Person{name='" + name + "', age=" + age + '}';
}
}
어떤 특별한 요구 사항이나 규칙 없이 정의된 단순한 자바 객체입니다. 이러한 객체를 POJO라고 한다
제어의 역행(Inversion of Control : IoC): DI지원
자바코드로 하는 것이 아니라 객체 생성을 컨테이너가 대신 처리하기 때문에
소스에 의 존관계가 표시되지 않으므로 결합도가 낮아짐
IoC는 객체의 생성, 구성, 생명 주기 관리 등의 책임을 애플리케이션 코드에서 프레임워크나 컨테이너로 이전하는 개념
애플리케이션은 구체적인 객체 생성 방식이나 의존성 관리에서 벗어나 비즈니스 로직에 집중할 수 있다
스프링 프레임워크에서는 IoC 컨테이너가 이 역할을 담당
의존성 주입은 IoC의 한 형태로, 객체가 필요로 하는 의존성을 외부에서 주입받는 방법
이는 생성자 주입, 세터 주입, 필드 주입 등 다양한 방식으로 이루어질 수 있다
DI를 통해 애플리케이션의 결합도를 낮추고, 코드의 가독성과 테스트 용이성을 높일 수 있다
간단한 예제
public class HelloService {
public String sayHello() {
return "Hello, World!";
}
}
@Configuration
public class AppConfig {
@Bean
public HelloService helloService() {
return new HelloService();
}
}
public class Main {
public static void main(String[] args) {
// 스프링 애플리케이션 컨텍스트를 초기화하고 설정 클래스를 로드
ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
// 스프링 컨텍스트에서 HelloService 빈을 가져옴
HelloService helloService = context.getBean(HelloService.class);
// HelloService의 메서드를 호출하여 결과를 출력
System.out.println(helloService.sayHello());
}
}
HelloService.java: HelloService 클래스는 인사 메시지를 반환하는 단순한 POJO
AppConfig.java: @Configuration 어노테이션으로 설정 클래스를 정의하고,
@Bean 어노테이션을 사용하여 HelloService 빈을 등록
Main.java: AnnotationConfigApplicationContext를 사용하여
스프링 애플리케이션 컨텍스트를 초기화하고, HelloService 빈을 가져와 사용
'TIL' 카테고리의 다른 글
TIL - 2024/05/28 (0) | 2024.05.28 |
---|---|
TIL - 2024/05/27 (0) | 2024.05.27 |
TIL - 2024/05/23 (0) | 2024.05.23 |
TIL - 2024/05/22 (0) | 2024.05.22 |
TIL - 2024/05/21 (0) | 2024.05.21 |