λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ–₯️ μ›Ή(Web)/μŠ€ν”„λ§

μŠ€ν”„λ§ λΆ€νŠΈ ν”„λ‘œμ νŠΈ ꡬ쑰

by bekki 2025. 4. 18.

 

πŸ“ μŠ€ν”„λ§ ν”„λ‘œμ νŠΈ κΈ°λ³Έ ꡬ쑰 μ˜ˆμ‹œ

πŸ“¦ my-spring-project/
 ┣ πŸ“ src/
 ┃ ┣ πŸ“ main/
 ┃ ┃ ┣ πŸ“ java/
 ┃ ┃ ┃ β”— πŸ“ com/example/demo/
 ┃ ┃ ┃ ┃ ┣ πŸ“„ DemoApplication.java
 ┃ ┃ ┃ ┃ ┣ πŸ“ controller/
 ┃ ┃ ┃ ┃ ┣ πŸ“ service/
 ┃ ┃ ┃ ┃ ┣ πŸ“ repository/
 ┃ ┃ ┣ πŸ“ resources/
 ┃ ┃ ┃ ┣ πŸ“„ application.properties (or .yml)
 ┃ ┃ ┃ ┣ πŸ“ static/
 ┃ ┃ ┃ ┣ πŸ“ templates/
 ┣ πŸ“ test/
 ┃ ┣ πŸ“ java/
 ┃ ┃ β”— πŸ“ com/example/demo/
 ┃ ┃ ┃ ┣ πŸ“„ DemoApplicationTests.java
 ┣ πŸ“„ build.gradle or pom.xml

 

 

πŸ“‚ μ£Όμš” 폴더/파일 μ„€λͺ…

πŸ“ src/main/java/

  • μ‹€μ œ λΉ„μ¦ˆλ‹ˆμŠ€ 둜직이 λ“€μ–΄κ°€λŠ” μ½”λ“œλ“€μ΄ 이 μ•ˆμ— 있음.
  • 보톡 νŒ¨ν‚€μ§€λ₯Ό κΈ°μ€€μœΌλ‘œ λ‚˜λˆ”: controller, service, repository, domain λ“±.

πŸ“„ DemoApplication.java

  • ν”„λ‘œμ νŠΈμ˜ μ§„μž…μ (Entry Point).
  • @SpringBootApplication이 λΆ™μ–΄ μžˆμ–΄μ„œ μ‹€ν–‰ μ‹œ 이 νŒŒμΌλΆ€ν„° 싀행됨.
@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

 

 

πŸ“ controller/

  • μ‚¬μš©μžμ˜ μš”μ²­(Request)을 λ°›μ•„ μ²˜λ¦¬ν•˜λŠ” μ›Ή 계측.
  • 주둜 @RestController λ˜λŠ” @Controller μ‚¬μš©.
@RestController
public class HelloController {
    @GetMapping("/hello")
    public String sayHello() {
        return "Hello Spring!";
    }
}

 

 

πŸ“ service/

  • λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ μ²˜λ¦¬ν•˜λŠ” 계측.
  • controller와 repository μ‚¬μ΄μ˜ 쀑간 단계 μ—­ν• .
  • @Service μ• λ„ˆν…Œμ΄μ…˜ μ‚¬μš©.
@Service
public class UserService {
    public String getUserName() {
        return "홍길동";
    }
}

 

 

πŸ“ repository/

  • DB와 μ—°κ²°λ˜λŠ” 계측.
  • JPA, MyBatis, JDBC 등을 톡해 DB CRUD μž‘μ—… μˆ˜ν–‰.
  • 보톡 @Repository λ˜λŠ” JpaRepositoryλ₯Ό 상속함.
@Repository
public interface UserRepository extends JpaRepository<User, Long> {}

 

 

πŸ“ resources/

  • μ„€μ • 파일과 정적 파일, ν…œν”Œλ¦Ώ 등이 듀어감.

πŸ“„ application.properties λ˜λŠ” application.yml

  • ν™˜κ²½ μ„€μ • 파일.
  • 포트 번호, DB μ—°κ²° 정보, νƒ€μž„λ¦¬ν”„ μ„€μ • λ“±.
server.port=8081
spring.datasource.url=jdbc:mysql://localhost:3306/mydb

πŸ“ static/

  • 정적 μžμ›μ„ λ‘λŠ” κ³³ (CSS, JS, 이미지 λ“±).
  • 예: /static/style.css → λΈŒλΌμš°μ €μ—μ„œ /style.css둜 μ ‘κ·Ό κ°€λŠ₯.

πŸ“ templates/

  • Thymeleaf λ“±μ˜ ν…œν”Œλ¦Ώ HTML 파일 μœ„μΉ˜.
  • 예: templates/home.html → return "home"; 으둜 λ°˜ν™˜ μ‹œ λ Œλ”λ§λ¨.

πŸ“ src/test/java/

  • ν…ŒμŠ€νŠΈ μ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ” 곡간.
  • JUnit, Mockito 등을 ν™œμš©ν•΄μ„œ κΈ°λŠ₯을 검증.

 

 

πŸ“„ build.gradle λ˜λŠ” pom.xml

  • λΉŒλ“œ 도ꡬ μ„€μ • 파일.
  • μ–΄λ–€ 라이브러리λ₯Ό μ‚¬μš©ν• μ§€, μ–΄λ–€ ν”ŒλŸ¬κ·ΈμΈμ„ μ“Έμ§€ λͺ…μ‹œ.

 

전체적인 흐름 정리

  1. μ‚¬μš©μž μš”μ²­ → controller둜 전달
  2. controller → service ν˜ΈμΆœν•΄μ„œ λΉ„μ¦ˆλ‹ˆμŠ€ 처리
  3. service → repository 톡해 DB μ ‘κ·Ό
  4. κ²°κ³Όλ₯Ό λ‹€μ‹œ 거꾸둜 λ°˜ν™˜ → 응닡
  5. μ›Ή νŽ˜μ΄μ§€κ°€ ν•„μš”ν•˜λ©΄ templatesμ—μ„œ HTML λ Œλ”λ§