Spring Boot 파일 구조
my-spring-boot-app
├── src
│ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ └── example
│ │ │ └── myapp
│ │ │ ├── MySpringBootApplication.java
│ │ │ ├── controller
│ │ │ │ └── MyController.java
│ │ │ ├── service
│ │ │ │ └── MyService.java
│ │ │ ├── repository
│ │ │ │ └── MyRepository.java
│ │ │ └── model
│ │ │ └── MyModel.java
│ │ ├── resources
│ │ │ ├── static
│ │ │ ├── templates
│ │ │ ├── application.properties
│ │ │ └── application.yml
│ ├── test
│ │ └── java
│ │ └── com
│ │ └── example
│ │ └── myapp
│ │ ├── MySpringBootApplicationTests.java
│ │ └── controller
│ │ └── MyControllerTests.java
├── .gitignore
├── mvnw
├── mvnw.cmd
├── pom.xml
└── README.md
1.src/main/java
Spring Boot 애플리케이션의 주된 소스 코드를 포함하는 디렉토리
java
└── com
└── example
└── myapp
├── MySpringBootApplication.java
├── controller
│ └── MyController.java
├── service
│ └── MyService.java
├── repository
│ └── MyRepository.java
└── model
└── MyModel.java
1-1.MySpringBootApplication.java
Spring Boot 애플리케이션의 진입점
나의 스프링부트 어플리케이션 이름으로 작성한다.
@SpringBootApplication 어노테이션은@Configuration,@EnableAutoConfiguration,@ComponentScan을 포함
@Configuration:해당 클래스가 Spring의 설정 파일임을 나타냄
@EnableAutoConfiguration:Spring Boot의 자동 설정 기능을 활성화
@ComponentScan:현재 패키지와 하위 패키지에서 스프링 컴포넌트를 스캔하여 자동으로 빈(bean)을 등록
1-2.controller 패키지
클라이언트의 요청을 처리하고 응답을 반환하는 컨트롤러 클래스를 포함
@RestController: RESTful 웹 서비스의 컨트롤러임을 나타냄
@RequestMapping: HTTP 요청
@GetMapping: HTTP 요청
@PostMapping: HTTP 요청
package com.example.myapp.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/api")
public class MyController {
@GetMapping("/hello")
public String hello() {
return "Hello, World!";
}
}
1-3.service 패키지
비즈니스 로직을 구현하는 서비스 클래스를 포함
@Service 어노테이션: 서비스 클래스를 나타냅니다.
비즈니스 로직: 애플리케이션의 주요 비즈니스 로직을 구현
package com.example.myapp.service;
import org.springframework.stereotype.Service;
@Service
public class MyService {
public String performBusinessLogic() {
// 비즈니스 로직을 여기에 구현합니다.
return "Business Logic Result";
}
}
1-4.repository 패키지
데이터베이스에 접근하는 레포지토리 인터페이스를 포함
@Repository 어노테이션: 레포지토리 인터페이스를 나타냄
Spring Data JPA: JpaRepository를 확장하여 CRUD 연산을 제공한다.
package com.example.myapp.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import com.example.myapp.model.MyModel;
@Repository
public interface MyRepository extends JpaRepository<MyModel, Long> {
// 추가적인 쿼리 메서드를 여기에 정의할 수 있습니다.
}
1-5. model 패키지
애플리케이션의 도메인 모델을 포함
JPA 엔티티 클래스: 데이터베이스 테이블과 매핑되는 클래스
@Entity 어노테이션: 이 클래스가 JPA 엔티티임을 나타냄
@Id, @GeneratedValue 등: JPA 어노테이션을 사용하여 필드를 데이터베이스 컬럼과 매핑
package com.example.myapp.model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class MyModel {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
// getters and setters
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
반응형
'BackEnd > SpringBoot' 카테고리의 다른 글
[Spring Boot] Spring Boot 파일 구조2 src/main/resources (0) | 2024.06.19 |
---|---|
[Spring Boot] Vscode에서 Spring Boot 사용하기 (0) | 2024.06.17 |
[Spring Boot] 스프링 부트란? (0) | 2024.06.17 |