Security, Mustache 환경설정
build.gradle
plugins {
id 'java'
id 'org.springframework.boot' version '3.0.7'
id 'io.spring.dependency-management' version '1.1.0'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-mustache'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
runtimeOnly 'com.mysql:mysql-connector-j'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.security:spring-security-test'
runtimeOnly 'com.h2database:h2'
}
tasks.named('test') {
useJUnitPlatform()
}
application.yml
server:
port: 8080
servlet:
context-path: /
encoding:
charset: UTF-8
enabled: true
force: true
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: <DBurl>
username: <username>
password: <password>
# configurer에서 설정을 해주기 때문에 생략 가능
# mvc:
# view:
# prefix: /templates/
# suffix: .mustache
jpa:
hibernate:
ddl-auto: create #create update none
naming:
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
show-sql: true
controller
package com.example.security1.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller //View를 return
public class IndexController {
//localhost:8080/
//localhost:8080
@GetMapping({"","/"})
public String index() {
// 머스테치 기본폴더 src/main/resources/
// 뷰리졸버 설정 : templates (prefix), .mustache (suffix) 생략가능
return "index"; // src/main/resources/templates/index.mustache
}
}
IndexController를 만들어
@GetMapping 으로
http://localhost:8080/ 또는 http://localhost:8080 일 때
index() 메서드가 호출되어
index.html view가 반환된다.
WebMvcConfig
package com.example.security1.config;
import org.springframework.boot.web.servlet.view.MustacheViewResolver;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
MustacheViewResolver resolver = new MustacheViewResolver();
//view의 인코딩은 UTF-8
resolver.setCharset("UTF-8");
//resolver에 줄 view 형식은 html파일
resolver.setContentType("text/html; charset=UTF-8");
//"classpath"는 해당 프로젝트이다.
resolver.setPrefix("classpath:/templates/");
//suffix는 .html로 변경하여 mustache가 html을 인식하게 된다.
resolver.setSuffix(".html");
//registry에 viewResolver를 등록한다.
registry.viewResolver(resolver);
}
}
IndexController에서
return "index"를 하면
src/main/resources/templates/index.mustache 가 되지만
WebConfig를 만들어 WebMvcConfigurer의 메서드를 오버라이드하여
해당 MustacheViewResolver를 재설정해줄 수 있다.
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>인덱스 페이지</title>
</head>
<bodly>
<h1>인덱스 페이지 입니다.</h1>
</bodly>
</html>
시큐리티 실행
스프링을 실행하면 콘솔 화면에 비밀번호가 뜬다.
username : user
password : 실행 시 콘솔창에 나오는 password
'자바 탐구' 카테고리의 다른 글
스프링) SpringSecurity - 3) Security 회원 가입 (0) | 2023.05.26 |
---|---|
스프링) SpringSecurity - 2) SecurityConfig 설정 (0) | 2023.05.26 |
JPA) Entity의 연관 관계 - @ManyToMany - (0) | 2023.05.03 |
JPA) Entity의 연관 관계 - @OneToMany - (0) | 2023.05.03 |
JPA) Entity의 연관 관계 - @ManyToOne - (0) | 2023.05.03 |