스프링 | 스프링 부트

[ Spring Boot ] 프레임워크와 라이브러리

Adose 2025. 1. 17. 04:56

📘 프레임워크와 라이브러리

프레임워크

프레임워크는 프로그램 개발 시 필수적인 코드, 알고리즘, D연동 같은 기능을 위해 기본적은 구조(=뼈대)를 제공한다.

개발자는 이 구조(=뼈대) 위에서 코드를 하고 프로그램을 개발한다.

 

⚒️  예시 : 스프링 부트에서 사용되는 기본 구조 (=뼈대)

 

1️⃣ 자동 설정 (Auto Configuration) : properties, yml 파일에 설정을 추가하는 것만으로 데이터베이스 연결, 서버포트 설정을 할 수 있다.

server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/mydb

 

2️⃣ 데이터베이스 연동 (JPA, Hibernate) : JPA와 Hibernate를 내장, JpaRepositor를 이용해 데이터를 CRUD할 수 있는 기능을 제공한다.

@Entity
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    private String name;
    

}

import org.springframework.data.jpa.repository.JpaRepository;

public interface TestRepository extends JpaRepository<User, Long> {
    // 기본적인 CRUD 메서드 (save, findById, findAll, delete 등)이 자동으로 제공
}

 

 

3️⃣ RESTful API 지원 : 스프링 부트는 @RestCotroller, @RequestMappging을 제공하여 HTTP요청을 처리할 수 있다.

@RestController
@RequestMapping(value = "/test")
public class TestController {    
    @GetMapping("/hi")
    public String TestHi(...) {
        ...
    }
}
// TestHi()는 url : test/hi 로 이용할 수 있다. 
  • 이 외에도 스프링부트에는 프로그램 개발을 위한 다양한 구조(=뼈대) 가 있다 !
  • 프로그램 구조 또한 프레임워크가 제공하는 뼈대의 일종 ㅇㅇ

 

라이브러리

라이브러리는 특정 기능을 제공하는 도구라고 생각하면 된다.

 

 

⚒️  예시 : 스프링부트에서 사용되는 라이브러리

 

1️⃣  java.util.logging (JDK 기본 로깅 라이브러리)

애플리케이션에서 로그를 기록하고 관리할 수 있도록 도와준다. 추가적인 외부 라이브러리 없이 사용 가능 ( 의존성 추가 안해도 됨 ㅇㅇ)

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@RestController
public class HelloSpring {
    private static final Logger logger = LoggerFactory.getLogger(HelloSpring.class);

    @GetMapping("/hello")
    public String hi(){
        logger.info("hi!!!!!!!!!!!!!!!!");
        return "hello Spring";
    }

 

2️⃣ Lombok 라이브러리

Lombk은 자바에서 반복적으로 작성되는 코드를 자동 생성해준다.

import lombok.Getter;
import lombok.Setter;

//getter, setter 메서드 자동 제공 
@Getter 
@Setter
public class User {
    private String name;
    private int age;
}

@AllArgsConstructor //모든 필드를 포함한 생성자 생성
@NoArgsConstructor // 기본 생성자 생성 
public class User {
    private String name;
    private int age;
}
  • 의존성은 아래와 같이 추가하면 되고, 최신버전 사용을 권장한다.
dependencies { implementation 'org.projectlombok:lombok:1.18.28' annotationProcessor 'org.projectlombok:lombok:1.18.28' }
  • 프로그램 생성과 동시에 추가도 가능

 

결론
프레임워크는 프로그램 개발을 위한 큰 틀(=뼈대 ,구조 )를 가지고 있고, 개발자는 그 틀 위에서 코드를 작성한다.
(프레임워크가 흐름을 제어 ⇒ 프레임워크라는 큰 틀 위에서 개발자가 코드를 작성하기 때문)

라이브러리는 개발자의 필요에 따라 라이브러리를 가져다 사용할 수 있다.
(개발자가 흐름을 제어 ⇒ 필요에 따라 사용하기 때문)