✅ 1. "기본 패키지(default package)"란?
아무 package선언이 없다면, Java는 그 클래스를 "기본 패키지"에 속한 것으로 간주
즉, 그냥 src 폴더에 파일이 바로 들어있을 경우를 말함
// 패키지 선언 없음
public class MyClass {
...
}
✅ 2. 왜 기본 패키지를 쓰면 안 될까?
Spring Boot는 애플리케이션을 실행할 때 다음과 같은 스캔 작업을 한다:
- @ComponentScan: 빈(bean)으로 등록할 클래스 찾기
- @EntityScan: JPA 엔티티 클래스 찾기
- @ConfigurationPropertiesScan: 프로퍼티 바인딩 대상 클래스 찾기
이 스캔들은 지정된 패키지부터 하위 패키지를 모두 찾도록 동작하는데,
**기본 패키지는 "패키지가 없다"**는 뜻이라 스캔 대상에서 누락될 수 있다.
✅ 3. 어떤 문제가 생기냐면?
- @Component, @Service, @Repository → 스프링이 스캔 못 함 → 빈 등록 안 됨
- @Entity → JPA가 인식 못 함 → DB 테이블 매핑 안 됨
- @ConfigurationProperties → 설정 파일 바인딩 안 됨 → 설정 실패
즉, 클래스가 있어도 스프링이 존재를 모르게 된다.
✅ 4. 결론:
- 항상 패키지를 명시적으로 선언
- src/main/java 아래에 디렉터리를 만들고, 패키지 구조를 만든다.
package com.myapp.service;
@Service
public class MyService {
...
}
'Back-End > SpringBoot' 카테고리의 다른 글
| Spring boot docs - 빌드 시스템 (0) | 2025.08.02 |
|---|---|
| @Autowired 필드 주입 지양해야하는 이유 (2) | 2025.07.31 |
| SSR과 CSR (3) | 2025.07.25 |
| JAVA 빌드 툴 - Maven과 Gradle (1) | 2025.07.25 |
| 기본 crud 만들기2 (1) | 2025.07.22 |