2016년 3월 1일 화요일

20160301 스프링 타임리프 + 로그 설정 간단하게

스프링은 일단...
pom.xml(메이븐),
src/main/resources,
config 패키지(각종 설정들),
controller 패키지 들을 중점으로 보면 뭔가 실마리가 하나씩 풀리는 것 같습니다.

일단 pom.xml
                <!-- thymeleaf -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>net.sourceforge.nekohtml</groupId>
<artifactId>nekohtml</artifactId>
</dependency>

<!-- logger -->
<dependency>
       <groupId>ch.qos.logback</groupId>
       <artifactId>logback-classic</artifactId>
                </dependency>

resources/logback-test.xml (스프링이 읽는 순서가 있고 logback-test는 2순위입니다.)
<?xml version="1.0" encoding="UTF-8"?>
<configuration>

<!-- Console -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>%d{HH:mm} %-5level %logger{36} - %msg%n</Pattern>
        </layout>
    </appender>

    <logger name="com.jongsam.*" level="DEBUG"/>
    <root level="INFO">
        <appender-ref ref="STDOUT" />
    </root>
</configuration>

config 패키지 ThymeleafConfig.java - 클래스 명은 상관없음
타임리프의 경우 한글 인코딩 문제나 엄격한 XHtml의 문제가 있어 조금 변경했는데
일단은 작동하는 것 같습니다.

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.ViewResolver;
import org.thymeleaf.spring4.SpringTemplateEngine;
import org.thymeleaf.spring4.view.ThymeleafViewResolver;
import org.thymeleaf.templateresolver.ServletContextTemplateResolver;
import org.thymeleaf.templateresolver.TemplateResolver;

import nz.net.ultraq.thymeleaf.LayoutDialect;

@Configuration
public class ThymeleafConfig {

@Bean
public TemplateResolver templateResolver() {
ServletContextTemplateResolver templateResolver = new ServletContextTemplateResolver();
templateResolver.setPrefix("/views/");
templateResolver.setSuffix(".html");
templateResolver.setTemplateMode("LEGACYHTML5"); // HTML5가 기본인데 엄격한
// HTML을 선호하는 타임리프이기
// 때문에 일단 템플릿 모드를
// LEGACYHTML5로 변경
templateResolver.setCacheable(false);
return templateResolver;
}

@Bean
public SpringTemplateEngine templateEngine() {
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.setTemplateResolver(templateResolver());
templateEngine.addDialect(new LayoutDialect()); // setDialect를 사용하면 안됨!
return templateEngine;
}

@Bean
public ViewResolver viewResolver() {
ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
viewResolver.setCharacterEncoding("UTF-8"); // 한글관련 인코딩에서는 ViewResolver의 케릭터 셋을 추가해준다.
viewResolver.setTemplateEngine(templateEngine());
viewResolver.setOrder(1);
return viewResolver;
}

}

마지막으로 로그 쓰는법
자세한 것은 다른 블로그들을 참조하시면 될것 같습니다.
저는 사용법만을 기록 예정입니다.

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

...

private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
...
void test() {
  logger.info("This is Logger - slf4j");
}

이렇게 몇일간의 삽질을 마무리 합니다.
이제 프론트 엔드와 싸우고 난 후 백엔드와 어드민을...ㅠㅠ

웹을 시작하는게 아니었는데...ㅠㅠ

댓글 없음:

댓글 쓰기