Contoller의 오류

단비·2023년 5월 4일
0

학습

목록 보기
33/66

Controller가 제대로 동작하지 않을 경우 확인해야하는 사항


1. 컨트롤러 클럐스의 최상단에 @Controller 어노테이션을 넣었는지

2. 컨트롤러가 메인 클래스(~Application.java)가 위치한 패키지 하위에 위치해있는지

  • 메인 클래스에 붙어있는 @SpringBootApplication 어노테이션은
    @Configuration, @EnableAutoConfiguration, @ComponentScan 3가지를 합친 것

    • @Configuration: 해당 클래스가 설정 파일임을 알려주는 용도
    • @EnableAutoConfiguration: 스프링의 다양한 설정이 자동으로 구성되고 완료됨
    • @ComponentScan: 자동으로 컴포넌트 클래스를 검색하여 컴포넌트와 빈 클래스를 Spring Application Context에 등록함
      (단, 메인 클래스가 위치한 패키지부터 이하 모든 클래스를 검색하여 Bean으로 등록)
  • 하위 클래스가 아닌 방법으로 위치시키고 싶을 경우 @ComponentScan 어노테이션 추가

@SpringBootApplication
@ComponentScan(basePackages = {"메인클래스가 있는 패키지 위치", "추가할 패키지 위치"})
public class TestApplication {





Controller에서 html 파일을 인식 못할 경우

1. html파일이 resources/static 에 위치하지 않은 경우

  • Spring web의 기본 설정은 static 폴더로 설정되어 있기 때문에 변경이 필요함
  • 변경이 번거로울 경우 타임리프 의존성을 추가해주면 자동으로 templates 폴더도 인식 가능함
spring:
  resources:
    static-locations: classpath: /변경할 폴더명/

위 방법으로 안되는 경우엔 Configuration 추가

@Configuration
public class MvcConfiguration implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**")
                .addResourceLocations("classpath:/templates/", "classpath:/static/")
                .setCacheControl(CacheControl.maxAge(10, TimeUnit.MINUTES));
    }
}

2. mvc String 반환으로 html 파일을 불러올 때 .html이 없어서 인식이 안되는 경우

  • yml에 하기 코드 추가
spring:
  mvc:
    view:
      suffix: .html
profile
tistory로 이전! https://sweet-rain-kim.tistory.com/

0개의 댓글