야미의 개발

스프링 부트 / Controller가 제대로 동작하지 않을 때 본문

스프링/웹 개발

스프링 부트 / Controller가 제대로 동작하지 않을 때

채야미 2023. 5. 3. 16:42

개발을 시작하기에 앞서 시험 적으로 index 페이지에 /main url만 잘 연결되는지 확인하려고 하였으나...

/main으로 가지 않고 error 404 페이지가 나왔다...

일반적으로는 component scan이 제대로 안된 경우 발생하는데

이때는


@ComponentScan(basePackages = "com.project.Booktion")
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class, HibernateJpaAutoConfiguration.class})
public class BooktionApplication {

public static void main(String[] args) {
SpringApplication.run(BooktionApplication.class, args);
}

}

잘 모르겠으면 이렇게 아예 @controller와 기타 어노테이션이 붙은 파일들의 폴더를 ComponentScan어노테이션으로 설정하면됨

 

아무런 설정이 없을때

스프링부트는 자동적으로 SpringBootApplication이 있는 폴더에서 부터 컴포넌트 스캔이 이루어짐

따라서 위의 이미지처럼 com.project.Booktion 하위에 있는 폴더들을 component scan 하고싶다면

com.project.Booktion에 바로 BooktionApplocation을 위치시키면 됨

 

 

 

하여간 내 플젝은 그런 이유는 아니었고 3시간 동안 삽질하다가 

정말 오랜 시간 헤맸는데 어처구니 없게 이유를 발견

 


@Controller
@RequiredArgsConstructor
@RequestMapping("/main")
public class MainController {
private final BookService bookService;
public String bookList(Model model){
// List<Book> books = bookService.findAll();
// model.addAttribute("books", books);
log.debug("mainController","worked");
return "main";
}
}

위에서 무언가 기시감이 느껴지지 않는가?
컨트롤러에만 requestMapping을 해주고 정작 메소드에는 해주지 않았음...

 


@Controller
@RequiredArgsConstructor
@RequestMapping("/main")
public class MainController {
private final BookService bookService;
@GetMapping
public String bookList(Model model){
// List<Book> books = bookService.findAll();
// model.addAttribute("books", books);
log.debug("mainController","worked");
return "main";
}
}

중간에 만들어 주고 오류 해결!

Comments