자바 개발 도구와 실행 환경
- JDK : 자바 개발 도구
- JRE : 자바 실행 환경
- JVM : 자바의 플랫폼 독립성을 보장해줌 -> 이를 통해 어떤 플랫폼에서든지 실행 가능
자바 소스 코드의 실행과정
- .java소스 파일 → .class 바이트코드파일 → JVM이 정적영역에 메모리 할당
Spring의 특징
1. 제어의 역전 (Inversion of Control) : 객체를 직접생성하지 않고, 객체의 생명주기 관리를 외부(스프링 컨테이너)에 위임하는 것
- 이를 통해 DI, AOP가 가능해짐
- Spring은 xml파일 또는 어노테이션 방식으로 스프링 컨테이너에 Bean(객체)를 등록하기만 하면, 스프링 컨테이너에서 Bean의 생명주기를 전부 관리
- 객체 간 의존 관계를 쉽게 변경하고 재사용성과 유지보수성을 높임
2. 의존성 주입(Dependency Injection) : 스프링 컨테이너가 어떤 객체에게 다른 객체에 의존성을 맺어주는 것
- 의존성을 주입하지 않고, 스스로 만든 경우
public class Soldier {
private Gun gun;
public Soldier() {
gun = new Gun();
}
}
- 스프링 컨테이너에 의해서 의존성을 주입한 경우
public class Soldier {
@Autowired
private Gun gun;
}
-> 의존성 주입을 통해서 코드의 재사용성, 유연성, 확장성, 유지보수성이 높아짐
3. 관점 지향 프로그래밍 AOP(AspectOriented Programming) : 관점을 기준으로 묶어서 개발하는 방식
- 어떤 기능을 구현할 때, 그 기능을 '핵심 기능'과 '부가 기능'으로 구분해 각각을 하나의 관점으로 보는 것
- 반복되는 부가 기능을 하나의 공통 로직으로 처리하도록 모듈화 해 삽입하는 방식 ex) 로그 찍기
-> 모듈화 해서 재사용 가능한 구성을 만들어, 개발자가 비즈니스 로직 구현에만 집중할 수 있도록 도와줌
Spring의 장점
- POJO 기반: 개발자는 JAVA코드를 이용해서 객체를 구현하는 방식 그대로 스프링에서 사용할 수 있음, 개발자가 특정한 라이브러리나 컨테이너 기술에 종속적이지 않음
- 의존성 주입으로 객체 간 결합도를 낮춰 유지보수성과 테스트 용이성, 확장성 높음
Spring의 단점
- Thread Fool이 한정되어있기 때문에 Thread Fool에 있는 Thread를 모두 가져다 쓰면 CPU, 메모리 리소스 임계점 초과로 서버가 다운되어 버림 -> 그렇기에 최대 Thread 수를 잘 설정해 줘야 함
Spring과 Spring boot의 차이
- Spring을 사용하기 위해서 해줘야 할 설정들을 boot에서 자동으로 해줌 -> 개발 생산성 증가
- ex) 톰켓 서버 내장 등
'JAVA' 카테고리의 다른 글
보너스 문제: 가위 바위 보 (0) | 2024.12.17 |
---|---|
Lv3. 단어 맞추기 게임 (2) | 2024.12.16 |
Lv2. 스파르타 자판기 (3) | 2024.12.14 |
Lv1. 랜덤 닉네임 생성기 (0) | 2024.12.14 |
반복문 연습하기 (0) | 2024.12.11 |