유저생성, 설정, 스키마 생성
create user 'wogusJWT'@'%' identified by 'wogus1234'; # 사용자 생성
GRANT ALL PRIVILEGES ON *.* TO 'wogusJWT'@'%'; # 생성한 사용자에 권한부여 (모든 데이터베이스의 모든권한)
create database security; # 새로운 스키마(데이터베이스) 생성
use security; # 생성한 데이터베이스을 사용하기 위해 선택
프로젝트 설정
의존성 추가 -> spring web, spring jpa, mysql, lombok, spring security
plugins {
id 'java'
id 'org.springframework.boot' version '3.1.2'
id 'io.spring.dependency-management' version '1.1.2'
}
group = 'com.cos'
version = '0.0.1-SNAPSHOT'
java {
sourceCompatibility = '17'
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
implementation 'org.projectlombok:lombok' // lombok
implementation("org.springframework.boot:spring-boot-starter-data-jpa") // JPA 의존성
testImplementation("org.springframework.boot:spring-boot-starter-test") // 테스트를 위한 의존성
implementation('org.springframework.boot:spring-boot-starter-mustache') // mustache
implementation 'org.springframework.boot:spring-boot-starter-security' // security
implementation 'mysql:mysql-connector-java:8.0.33' // mysql
}
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: jdbc:mysql://localhost:3306/security?serverTimezone=Asia/Seoul
username: wogusJWT
password: wogus1234
# mvc:
# view:
# prefix: /templates/
# suffix: .mustache
# * Mustache의 기본 경로 -> src/main/resources/ (다른 템플릿엔진과 동일)
# * 뷰의 논리이름만 반환하여 뷰 리졸버가 뷰를 찾기 쉽게 하기 위해
# * prefix -> templates, suffix -> .mustache로 설정한다.
# 하지만 mustache를 의존성등록하면 위의 내용이 자동으로 설정되므로 따로 적을 필요없다.
jpa:
hibernate:
ddl-auto: create
naming:
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
show-sql: true
인덱스 컨트롤러
서버 홈페이지에 나타날 인덱스.html를 설정해준다.
@Controller // View를 리턴함.
public class IndexController {
@GetMapping({"","/"})
public String index(){
return "index";
// 이렇게 뷰 이름을 리턴하면 src/main/resources/templates/index.mustache 라는 파일을 찾게된다.
// index.html을 찾아서 뷰를 생성해야하므로 WebMvcConfig라는 파일에서 따로 설정해준다.
}
}
WebMvcConfig
mustache 의존성을 추가하면 자동으로 suffix가 .mustache이다. 하지만
index 파일은 html로 해놨으므로
mustache의 뷰리졸버의 suffix를 html로 바꾸기위해 아래와 같이 설정한다.
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
// mustache의 뷰리졸버를 수정해서 다시 등록해준다.
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
MustacheViewResolver resolver = new MustacheViewResolver();
resolver.setCharset("UTF-8");
resolver.setContentType("text/html; charset=UTF-8");
resolver.setPrefix("classpath:/templates/");
resolver.setSuffix(".html"); // mustache 뷰 리졸버가 html파일을 찾게끔
registry.viewResolver(resolver);
}
}
Spring security를 추가하면
서버주소 요청시 이런화면이 뜨는데
default 아이디는 : user
비밀번호는 서버를 구동시킬때 나오는 비밀번호
결과확인
댓글