1. 클래스와 객체
1) 클래스
- 청사진 / 설계도 / 틀
- 주의사항
// 클래스 정의 - 틀, 설계도
public class Bread {
String name = "모닝빵"; // 빵의 이름
}
// 객체가 없어서 Main에서 오류남
2) 객체
// 클래스 정의 - 틀, 설계도
public class Bread {
String name; // 빵의 이름
int calorie; // 빵의 칼로리
}
- 미완성 > 생성자 필요
3) 생성자
- 클래스로 어떻게 객체를 만들 것인가를 정의한 방법
- 코드 구현
// 클래스 정의 - 틀, 설계도
public class Bread {
String name; // 빵의 이름
int calorie; // 빵의 칼로리
// 생성자 정의 - 어떻게 결과물을 만들 것인가에 대한 방법을 '강제'
public Bread(String name, int calorie) {
this.name = name;
this.calorie = calorie;
}
}
- 객체 생성(new 키워드 사용)
public class Main {
public static void main(String[] args) {
Bread newBread = new Bread("모닝빵", 200);
System.out.println(newBread.name);
}
}
2. 인터페이스
1) 개념
- 표준 규격
2) 생성
- 예시) 마우스
// 마우스 인터페이스 정의
public interface Mouse {
void leftClick(); // 좌클릭
void rightClick(); // 우클릭
void scrollWheel(); // 스크롤휠
}
- 마우스 인터페이스로 여러 마우스 구현(구현체)
더보기
더보기
- LogitechMouse 클래스
public class LogitechMouse implements Mouse {
@Override
public void leftClick() {
// 로지텍 마우스 좌클릭 로직 구현
}
@Override
public void rightClick() {
// 로지텍 마우스 우클릭 로직 구현
}
@Override
public void scrollWheel() {
// 로지텍 마우스 스크롤휠 로직 구현
}
}
- SamsungMouse 클래스
public class SamsungMouse implements Mouse {
@Override
public void leftClick() {
// 삼성 마우스 좌클릭 로직 구현
}
@Override
public void rightClick() {
// 삼성 마우스 좌클릭 로직 구현
}
@Override
public void scrollWheel() {
// 삼성 마우스 좌클릭 로직 구현
}
}
- 다른 기업 마우스든 모두 똑같이 마우스 타입으로 타이핑 가능 > 다형성
3. JSON과 XML
1) JSON
- 클라이언트와 서버가 통신할 때 사용하는 데이터 양식
- Key와 Value로 이루어진 데이터를 정리하는 방식
{ //key value
"이름": "홍길동",
"나이": 30,
"사는곳": "서울",
"개발자인가": true
}
2) XML
- 가독성이 떨어지고, 불필요한 용량을 잡아먹는다는 단점
<root>
<이름>홍길동</이름>
<나이>30</나이>
<사는곳>
<시>서울시</시>
<구>강남구</구>
<동>대치동</동>
</사는곳>
<개발자인가>true</개발자인가>
</root>
4. 라이브러리와 프레임워크
1) 라이브러리
- 애플리케이션 개발에 필요한 클래스, 함수 등을 모아 놓은 코드의 모음
- 장점
- 복잡한 코드를 직접 작성하지 않아서 개발 생산성이 높아짐
- 검증된 라이브러리는 테스트와 커뮤니티 지원을 통해 안정성과 품질이 보장
- 단점
- 라이브러리가 업데이트 되지 않거나 지원이 중단될 경우 문제가 발생
- 버전 호환성 문제로 인해 다른 라이브러리나 기존 코드와 충돌이 발생
- 불필요한 기능을 포함한 라이브러리를 사용하면 비효율적
- 직접 수정하기 어려워, 특정 요구 사항에 맞게 조정하기 힘듬
2) 프레임 워크
- 소프트웨어 개발을 간편하게 만들기 위한 소프트웨어 개발 환경
- 일하기 위한 틀을 제공 / 해당 틀 안에서 개발
- 장점
- 일관된 구조를 제공 > 코드의 일관성과 가독성을 높여주며 팀 협업이 편해짐
- 필요한 기능과 도구를 제공하여 개발자들이 핵심 비즈니스 로직에 집중
- 보안 관련 기능을 기본적으로 제공
- 통합된 테스트 환경과 도구를 제공하여 테스트를 쉽게 작성하고 실행
- 방대한 커뮤니티 지원을 받으며, 다양한 문서를 활용
- 단점
- 처음 익히는 데 시간이 많이 소요
- 새로운 버전이 기존 코드와 호환되지 않을 수 있음
- 정해진 규칙과 구조를 따르게 강제하여 자유롭게 변경하기 어려울 수 있음
3) 정리
- 프레임워크는 라이브러리들의 모음

4) 스프링 프레임워크
- 자바(Java) 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크 > Spring
- 중요한 이유: 복잡한 엔터프라이즈급 애플리케이션 개발을 보다 쉽고 효율적 > 강력하고 포괄적인 기능을 제공 / 술적인 복잡성은 Spring이 대신 처리
5. HTTP와 API
6. Annotation과 Lombok
1) Annotation
- 자바 코드에 메타 데이터를 추가하여 코드에 특별한 의미를 부여, 컴파일러와 런타임에 특정 동작을 트리거하기 위해 사용
- 예시: @Override
public interface Mouse {
void leftClick();
void rightClick();
void scrollWheel();
}
public class LogitechMouse implements Mouse {
@Override
public void leftClick() {
// 로지텍 좌클릭 로직 구현
}
@Override
public void rightClick() {
// 로지텍 우클릭 로직 구현
}
@Override
public void scrollWheel() {
// 로지텍 스크롤휠 로직 구현
}
}
- @Override가 바로 어노테이션
2) Lombok 라이브러리
- 보일러 플레이트 코드를 줄여주는 라이브러리로 자동으로 보일러 플레이트 코드를 생성하여 코드의 가독성과 유지보수성을 높여줌
- 어노테이션 기반으로 동작하며, 주로 컴파일 시점에 소스 코드를 변환하여 필요한 메서드를 자동으로 생성
- 보일러 플레이트 코드: getter/setter 메서드, 생성자, toString 메서드 등과 같이 반복적으로 작성되는 코드
- Lombok 사용 전후 코드량 비교

3) 주요 Lombok Annotation
-
@Getter, @Setter
@Getter
@Setter
public class User {
private String name;
private int 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
@ToString
public class User {
private String name;
private int age;
}
// 객체를 String으로 변환해주는 역할을 수행함
- @NoArgsConstructor, @AllArgsConstructor, @RequiredArgsConstructor
@NoArgsConstructor
@AllArgsConstructor
public class User {
private String name;
private int age;
}
- @Slf4j
@Slf4j
public class UserService {
public void logMessage() {
log.info("This is a log message");
}
}
7. Servlet 개념
1) 서블릿 개념
- 서버에서 실행되어 클라이언트의 요청을 처리하고, 그 결과를 동적으로 생성하여 응답하는 자바 프로그램
- 정적인 데이터가 아니라, 요청에 따라 다른 결과를 만들어내는 똑똑한 자바 클래스
- 자바 웹 애플리케이션에서 특정 URL 요청에 대한 비즈니스 로직을 실행
2) 서블릿 역할
- 클라이언트가 보낸 데이터(HTTP Request)를 읽고 해석
- 조회, 계산 등 비즈니스 로직을 수행
- 결과를 생성하여 클라이언트에게 보냄
- jakarta.servlet.http.HttpServlet 클래스를 상속받아 구현
3) 서블릿 컨테이너 개념
- 우리가 만든 서블릿 클래스(`.java`)는 스스로 실행 X
- 서블릿을 실행하고 관리하며 웹 서버와 통신하게 해주는 전문적인 환경이 필요
- 대표: 톰캣(Tomcat)
4) 서블릿 컨테이너 역할
- 서블릿의 생명주기(생성, 실행, 소멸) 관리
- HTTP 요청을 받아 서블릿에게 전달
- 서블릿의 응답을 받아 클라이언트에게 전송
- 동시에 여러 요청이 들어와도 문제없이 처리
'🔌 SPARTA > Courses' 카테고리의 다른 글
| 스탠다드반 1회차: MVC & REST API (0) | 2026.02.02 |
|---|---|
| Spring MVC / Data JPA (0) | 2026.01.30 |
| 배열과 컬렉션 (1) | 2026.01.28 |
| 완전 탐색과 그리디 알고리즘 (1) | 2026.01.27 |
| 알고리즘 개념 (1) | 2026.01.27 |