@Autowired 어노테이션을 붙이면 스프링이 자동으로 해당 타입의 빈을 주입.@Autowired는 생략 가능.@Controller
public class MyController {
private final MyService myService;
@Autowired
public MyController(MyService myService) {
this.myService = myService;
}
}
@Configuration: 설정 클래스로, 스프링 설정 정보가 담긴 클래스임을 명시.@ComponentScan: 특정 패키지 범위 내에서 @Component가 붙은 클래스를 스캔하여 스프링 컨테이너에 빈으로 등록.@Configuration
@ComponentScan(basePackages = "com.spring.core.chap02_3")
public class MyModelConfig {}
FeedController: REST API 엔드포인트 처리
FeedService: 비즈니스 로직 담당
FeedRepository: 데이터 저장소 역할 (메모리 기반)
DTO 클래스들
FeedCreateRequest): 클라이언트 입력을 객체로 받아옴FeedListResponse, FeedDetailResponse): 필요한 정보만 클라이언트에게 응답Feed: 실제 피드 데이터 (Entity)
| 메서드 | 경로 | 설명 |
|---|---|---|
GET | /api/v5-5/feeds | 전체 피드 목록 조회 |
POST | /api/v5-5/feeds | 피드 생성 |
DELETE | /api/v5-5/feeds/{id} | 피드 삭제 |
GET | /api/v5-5/feeds/{id} | 피드 개별 조회 |
@Autowired
public StudentController(@Qualifier("smr") StudentRepository repository) {
this.repository = repository;
}
@Getter, @Setter, @ToString, @Builder, @NoArgsConstructor, @AllArgsConstructor, @EqualsAndHashCode@Getter
@Setter
@ToString
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class Feed {
private Long feedId;
private String content;
private String writer;
private LocalDateTime createdAt;
private int viewCount;
}
@Component, @Controller, @Service, @Repository는 빈 등록용 어노테이션.@Configuration + @ComponentScan 으로 빈 자동 등록 가능.@Qualifier로 동일 타입 빈 중 원하는 빈을 지정 가능.