코딩마을방범대
Contoller의 오류 본문
728x90
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
728x90
'💡 백엔드 > Java' 카테고리의 다른 글
MyBatis의 샾(#{})과 달러(${})의 차이 (0) | 2023.05.27 |
---|---|
Log - (1) Log4j (0) | 2023.05.27 |
Java로 메일 가져오기 (0) | 2023.05.26 |
Date 비교 메소드 (0) | 2023.05.26 |
Entity에서 암복호화 & JAVA 비동기 처리(Thread) (0) | 2023.05.26 |