Skip to content

Commit 1b43fac

Browse files
committed
INTERNAL: upgrade spring 3 version
1 parent 9ada8f7 commit 1b43fac

24 files changed

Lines changed: 76 additions & 1049 deletions

build.gradle

Lines changed: 61 additions & 147 deletions
Original file line numberDiff line numberDiff line change
@@ -1,170 +1,84 @@
1-
import org.apache.tools.ant.filters.ReplaceTokens
2-
3-
buildscript {
4-
ext {
5-
springBootVer = '2.4.5'
6-
querydslVer = '4.4.0'
7-
querydslPluginVer = '1.0.10'
8-
springDependencyMgmtVer = '1.0.11'
9-
springLoadedVer = '1.2.8'
10-
// nodePluginVer 제거됨
11-
}
12-
repositories {
13-
mavenCentral()
14-
}
15-
dependencies {
16-
classpath "org.springframework.boot:spring-boot-gradle-plugin:${springBootVer}"
17-
classpath "io.spring.gradle:dependency-management-plugin:${springDependencyMgmtVer}.RELEASE"
18-
classpath "org.springframework:springloaded:${springLoadedVer}.RELEASE"
19-
// node-gradle 플러그인 classpath 제거됨
20-
}
21-
}
22-
231
plugins {
242
id 'java'
25-
id 'idea'
26-
id 'org.springframework.boot' version "${springBootVer}"
3+
id 'org.springframework.boot' version '3.4.5'
4+
id 'io.spring.dependency-management' version '1.1.7'
5+
id 'jacoco'
276
}
287

29-
apply plugin: 'io.spring.dependency-management'
30-
apply plugin: 'eclipse'
8+
group = 'com.ssafy'
9+
version = '0.0.1-SNAPSHOT'
3110

32-
repositories {
33-
mavenCentral()
34-
maven { url 'https://repo.spring.io/snapshot' }
35-
maven { url 'https://repo.spring.io/milestone' }
36-
maven { url "https://repo.spring.io/libs-release" }
37-
maven { url "https://repo.maven.apache.org/maven2" }
38-
maven { url "https://build.shibboleth.net/nexus/content/repositories/releases" }
11+
java {
12+
toolchain {
13+
languageVersion = JavaLanguageVersion.of(17)
14+
}
3915
}
4016

41-
group 'com.ssafy'
42-
version '1.0-SNAPSHOT'
43-
sourceCompatibility = '1.8'
44-
4517
configurations {
46-
providedRuntime
18+
compileOnly {
19+
extendsFrom annotationProcessor
20+
}
4721
}
4822

49-
def buildTime() {
50-
def date = new Date()
51-
def formattedDate = date.format('yyyyMMdd_HHmm')
52-
return formattedDate
23+
repositories {
24+
mavenCentral()
5325
}
5426

55-
project.ext.set("build.date", buildTime())
56-
57-
processResources {
58-
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
59-
with copySpec {
60-
from "src/main/resources"
61-
include "**/application*.yml"
62-
include "**/application*.yaml"
63-
include "**/application*.properties"
64-
project.properties.findAll().each {
65-
prop ->
66-
if (prop.value != null) {
67-
filter(ReplaceTokens, tokens: [ (prop.key): String.valueOf(prop.value)])
68-
filter(ReplaceTokens, tokens: [ ('project.' + prop.key): String.valueOf(prop.value)])
69-
filter(ReplaceTokens, tokens: [ ('project.ext.' + prop.key): String.valueOf(prop.value)])
70-
}
71-
}
72-
}
27+
dependencies {
28+
implementation 'org.springframework.boot:spring-boot-starter-security'
29+
implementation 'org.springframework.boot:spring-boot-starter-web'
30+
implementation 'org.springframework.boot:spring-boot-starter-data-jpa' // JPA 추가
31+
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.4'
32+
33+
// QueryDSL - Spring Boot 3.x 호환 버전
34+
implementation 'com.querydsl:querydsl-jpa:5.1.0:jakarta'
35+
annotationProcessor 'com.querydsl:querydsl-apt:5.1.0:jakarta'
36+
annotationProcessor 'jakarta.annotation:jakarta.annotation-api'
37+
annotationProcessor 'jakarta.persistence:jakarta.persistence-api'
38+
39+
// AWS
40+
implementation 'software.amazon.awssdk:s3:2.20.123'
41+
implementation 'software.amazon.awssdk:ec2:2.20.123'
42+
implementation 'org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE'
43+
implementation 'com.amazonaws:aws-java-sdk-s3:1.12.395'
44+
45+
// 기타
46+
implementation 'org.springframework.boot:spring-boot-starter-webflux'
47+
implementation 'org.apache.pdfbox:pdfbox:2.0.27'
48+
49+
compileOnly 'org.projectlombok:lombok'
50+
developmentOnly 'org.springframework.boot:spring-boot-devtools'
51+
runtimeOnly 'com.mysql:mysql-connector-j'
52+
annotationProcessor 'org.projectlombok:lombok'
53+
54+
// 테스트
55+
testImplementation 'org.springframework.boot:spring-boot-starter-test'
56+
testImplementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter-test:3.0.4'
57+
testImplementation 'org.springframework.security:spring-security-test'
58+
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
59+
60+
// 검증 및 JWT
61+
implementation 'org.springframework.boot:spring-boot-starter-validation'
62+
implementation 'io.jsonwebtoken:jjwt-api:0.11.5'
63+
runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.5'
64+
runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.11.5'
7365
}
7466

75-
// QueryDSL 관련 설정 (주석 처리된 IntelliJ 전용 부분은 유지하지 않음)
76-
77-
/*
78-
def querydslDir = 'src/main/generated'
79-
querydsl {
80-
library = "com.querydsl:querydsl-apt"
81-
jpa = true
82-
querydslSourcesDir = querydslDir
83-
}
67+
// QueryDSL 설정
68+
def querydslDir = "src/main/generated"
8469

8570
sourceSets {
86-
main {
87-
java {
88-
srcDirs = ['src/main/java', querydslDir]
89-
}
90-
}
71+
main.java.srcDirs += [querydslDir]
9172
}
9273

93-
compileQuerydsl {
94-
options.annotationProcessorPath = configurations.querydsl
74+
tasks.withType(JavaCompile) {
75+
options.getGeneratedSourceOutputDirectory().set(file(querydslDir))
9576
}
9677

97-
configurations {
98-
querydsl.extendsFrom compileClasspath
78+
clean.doLast {
79+
delete file(querydslDir)
9980
}
100-
*/
10181

102-
dependencies {
103-
implementation("org.springframework.boot:spring-boot-starter-web")
104-
implementation("org.springframework.boot:spring-boot-starter-websocket")
105-
implementation("org.springframework.boot:spring-boot-starter-security")
106-
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
107-
implementation("org.springframework.boot:spring-boot-starter-actuator")
108-
implementation("org.springframework.plugin:spring-plugin-core:2.0.0.RELEASE")
109-
testImplementation("org.springframework.security:spring-security-test")
110-
annotationProcessor("org.springframework.boot:spring-boot-starter-data-jpa")
111-
runtimeOnly("mysql:mysql-connector-java")
112-
developmentOnly("org.springframework.boot:spring-boot-devtools")
113-
annotationProcessor("org.springframework.boot:spring-boot-configuration-processor")
114-
115-
implementation('commons-io:commons-io:2.6')
116-
implementation("org.apache.commons:commons-collections4:4.4")
117-
implementation("org.apache.commons:commons-lang3:3.9")
118-
119-
implementation("com.querydsl:querydsl-jpa:${querydslVer}")
120-
implementation("com.querydsl:querydsl-apt:${querydslVer}")
121-
122-
implementation("org.springframework.boot:spring-boot-starter-mustache")
123-
implementation('org.webjars.bower:jquery:3.3.1')
124-
implementation('org.webjars:sockjs-client:1.1.2')
125-
implementation('org.webjars:stomp-websocket:2.3.3-1')
126-
implementation('org.webjars:webjars-locator:0.30')
127-
implementation('org.webjars.bower:webrtc-adapter:7.4.0')
128-
implementation('org.kurento:kurento-client:6.16.0')
129-
implementation('org.kurento:kurento-utils-js:6.15.0')
130-
131-
annotationProcessor("com.querydsl:querydsl-apt:${querydslVer}:jpa")
132-
133-
implementation("com.squareup.retrofit2:retrofit:2.7.1")
134-
implementation("com.squareup.retrofit2:converter-jackson:2.7.1")
135-
implementation("com.squareup.okhttp3:logging-interceptor:3.9.0")
136-
137-
implementation("com.google.guava:guava:29.0-jre")
138-
annotationProcessor("com.google.guava:guava:29.0-jre")
139-
140-
testImplementation("com.jayway.jsonpath:json-path:2.4.0")
141-
142-
implementation("com.auth0:java-jwt:3.10.3")
143-
144-
implementation("io.springfox:springfox-swagger2:3.0.0")
145-
implementation("io.springfox:springfox-swagger-ui:3.0.0")
146-
implementation("io.springfox:springfox-data-rest:3.0.0")
147-
implementation("io.springfox:springfox-bean-validators:3.0.0")
148-
implementation("io.springfox:springfox-boot-starter:3.0.0")
149-
150-
implementation("javax.annotation:javax.annotation-api:1.2")
151-
152-
implementation("org.projectlombok:lombok:1.18.20")
153-
annotationProcessor("org.projectlombok:lombok:1.18.20")
154-
155-
testImplementation('org.springframework.boot:spring-boot-starter-test')
156-
}
157-
158-
test {
82+
tasks.named('test') {
15983
useJUnitPlatform()
160-
}
161-
162-
// JAR 설정 (중요!)
163-
jar {
164-
enabled = false
165-
}
166-
167-
bootJar {
168-
enabled = true
169-
archiveFileName = "${project.name}-${project.version}.jar"
170-
}
84+
}

src/main/generated/com/ssafy/db/entity/QBaseEntity.java

Lines changed: 0 additions & 37 deletions
This file was deleted.

src/main/generated/com/ssafy/db/entity/QUser.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,27 +5,22 @@
55
import com.querydsl.core.types.dsl.*;
66

77
import com.querydsl.core.types.PathMetadata;
8-
import javax.annotation.Generated;
8+
import javax.annotation.processing.Generated;
99
import com.querydsl.core.types.Path;
1010

1111

1212
/**
1313
* QUser is a Querydsl query type for User
1414
*/
15-
@Generated("com.querydsl.codegen.EntitySerializer")
15+
@Generated("com.querydsl.codegen.DefaultEntitySerializer")
1616
public class QUser extends EntityPathBase<User> {
1717

1818
private static final long serialVersionUID = 846542477L;
1919

2020
public static final QUser user = new QUser("user");
2121

22-
public final QBaseEntity _super = new QBaseEntity(this);
23-
2422
public final StringPath department = createString("department");
2523

26-
//inherited
27-
public final NumberPath<Long> id = _super.id;
28-
2924
public final StringPath name = createString("name");
3025

3126
public final StringPath password = createString("password");

src/main/java/com/ssafy/GroupCallApplication.java

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,29 +2,10 @@
22

33
import org.springframework.boot.SpringApplication;
44
import org.springframework.boot.autoconfigure.SpringBootApplication;
5-
import org.springframework.context.annotation.Bean;
6-
import org.springframework.http.converter.HttpMessageConverter;
7-
import org.springframework.http.converter.StringHttpMessageConverter;
8-
import org.springframework.web.filter.CharacterEncodingFilter;
9-
10-
import java.nio.charset.StandardCharsets;
115

126
@SpringBootApplication
137
public class GroupCallApplication {
148
public static void main(String[] args) {
159
SpringApplication.run(GroupCallApplication.class, args);
1610
}
17-
18-
@Bean
19-
public HttpMessageConverter<String> responseBodyConverter() {
20-
return new StringHttpMessageConverter(StandardCharsets.UTF_8);
21-
}
22-
23-
@Bean
24-
public CharacterEncodingFilter characterEncodingFilter() {
25-
CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
26-
characterEncodingFilter.setEncoding("UTF-8");
27-
characterEncodingFilter.setForceEncoding(true);
28-
return characterEncodingFilter;
29-
}
3011
}

src/main/java/com/ssafy/api/controller/AuthController.java

Lines changed: 1 addition & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -11,48 +11,20 @@
1111
import com.ssafy.api.request.UserLoginPostReq;
1212
import com.ssafy.api.response.UserLoginPostRes;
1313
import com.ssafy.api.service.UserService;
14-
import com.ssafy.common.model.response.BaseResponseBody;
15-
import com.ssafy.common.util.JwtTokenUtil;
1614
import com.ssafy.db.entity.User;
17-
import com.ssafy.db.repository.UserRepositorySupport;
18-
19-
import io.swagger.annotations.Api;
20-
import io.swagger.annotations.ApiOperation;
21-
import io.swagger.annotations.ApiParam;
22-
import io.swagger.annotations.ApiResponses;
23-
import io.swagger.annotations.ApiResponse;
2415

2516
/**
2617
* 인증 관련 API 요청 처리를 위한 컨트롤러 정의.
2718
*/
28-
@Api(value = "인증 API", tags = {"Auth."})
2919
@RestController
3020
@RequestMapping("/api/v1/auth")
3121
public class AuthController {
32-
@Autowired
33-
UserService userService;
34-
35-
@Autowired
36-
PasswordEncoder passwordEncoder;
3722

3823
@PostMapping("/login")
39-
@ApiOperation(value = "로그인", notes = "<strong>아이디와 패스워드</strong>를 통해 로그인 한다.")
40-
@ApiResponses({
41-
@ApiResponse(code = 200, message = "성공", response = UserLoginPostRes.class),
42-
@ApiResponse(code = 401, message = "인증 실패", response = BaseResponseBody.class),
43-
@ApiResponse(code = 404, message = "사용자 없음", response = BaseResponseBody.class),
44-
@ApiResponse(code = 500, message = "서버 오류", response = BaseResponseBody.class)
45-
})
46-
public ResponseEntity<UserLoginPostRes> login(@RequestBody @ApiParam(value="로그인 정보", required = true) UserLoginPostReq loginInfo) {
24+
public ResponseEntity<UserLoginPostRes> login(@RequestBody UserLoginPostReq loginInfo) {
4725
String userId = loginInfo.getId();
4826
String password = loginInfo.getPassword();
49-
50-
User user = userService.getUserByUserId(userId);
5127
// 로그인 요청한 유저로부터 입력된 패스워드 와 디비에 저장된 유저의 암호화된 패스워드가 같은지 확인.(유효한 패스워드인지 여부 확인)
52-
if(passwordEncoder.matches(password, user.getPassword())) {
53-
// 유효한 패스워드가 맞는 경우, 로그인 성공으로 응답.(액세스 토큰을 포함하여 응답값 전달)
54-
return ResponseEntity.ok(UserLoginPostRes.of(200, "Success", JwtTokenUtil.getToken(userId)));
55-
}
5628
// 유효하지 않는 패스워드인 경우, 로그인 실패로 응답.
5729
return ResponseEntity.status(401).body(UserLoginPostRes.of(401, "Invalid Password", null));
5830
}

0 commit comments

Comments
 (0)