반응형

문제

문자열 s를 숫자로 변환

"1234" -> 1234

"-1234" -> -1234

 

풀이

String을 int로 변환하면 된다고 생각했다

class Solution {
    public int solution(String s) {
        return Integer.parseInt(s);
    }
}

 

암기

String to Int

Integer.parseInt(String변수);

 

728x90
반응형

문제

String 입력받아서 p와 y의 갯수가 같으면 true 리턴

(대소문자 구분 없음)

 

풀이

p의 갯수, y의 갯수를 담을 변수를 만들고

String 을 쪼개서 하나하나 비교해야겠다는 생각이 들음

 

import java.util.*;
class Solution {
    boolean solution(String s) {
        boolean answer = true;

        int pCount = 0;
        int yCount = 0;
        char[] sArr = s.toCharArray();
        
        for (int i=0 ; i<sArr.length ; i++) {
            if (Character.toUpperCase(sArr[i]) == 'P') {
                pCount ++;
            } else if (Character.toUpperCase(sArr[i]) == 'Y') {
                yCount ++;
            }
        }
        
        return pCount == yCount;
    }
}

 

변수할당하는것을 줄여서 코드를 짧게 만드는 방법도 잇겠지만, 개인적으로는 이 방법이 가독성이 좋을것이라 생각함..!

 

암기

String to Char

String변수명.toCharArray();

 

char 대문자 변환

Character.toUpperCase

 

728x90
반응형

Main 수정

저번 포스팅에서 만들었던 demo-main 모듈의 Main 클래스명을 변경하고 어노테이션을 달아주었다

@SpringBootApplication
public class MainApplication {
    public static void main(String[] args) {
        SpringApplication.run(MainApplication.class, args);
    }
}

 

해당 클래스 위치는 아래와 같다

application.yml 추가

그리고 나는 admin 과 main 모듈을 각각 실행시키고싶어서 port 설정을 추가해야하는 상황이라 application.yml을 추가해주었다

server:
  port: 8080

 

위치는 아래와 같이 resources 폴더를 만들고 그 안에 application.yml 을 추가하였다

 

Controller 생성

간단하게 테스트하기위하여 Restcontroller 로 생성하였다

@RestController
@RequiredArgsConstructor
@RequestMapping("/api/main")
public class MainController {
    @ResponseBody
    @GetMapping("")
    public ResponseEntity index() {
        String result = "SUCCESS!!";

        return ApiResponseEntity
                .data()
                .put("result", result)
                .ok();
    }
}

 

위치는 아래와 같이 위치하면 된다

 

위 코드에 리턴타입이 ApiResponseentity 라고 되어있는데 해당 클래스는 core에 만들었다

 

Core 공통모듈 사용

 

이렇게 core 쪽에 내가 사용하고싶은 클래스를  추가하고 다른 모듈에서 자유롭게 불러서 사용가능하다

 

참고로 root 경로의 build.gradle 의  설정에 따라 타 모듈 -> core 연결이 가능한것이기 때문에

core -> 타 모듈 의 클래스를 import하는것은 불가능하다

728x90
반응형

 

spring boot 프로젝트 생성

 

intellij 에서 하든 spring 에서 하든.. 편한 방법으로 프로젝트를 생성한다

 

혹시 모르는 사람을 위하여 링크를 남겨둠

spring Initializr :  https://start.spring.io/

 

 

프로젝트 구조 수정

우선 root 경로의 src 폴더를 삭제한다

 

그리고 root 폴더 -> 우클릭 -> new -> Module 을 추가해준다

 

이때 내가 원하는 모듈갯수만큼 추가하면 된다

 

module name을 설정해주고

Build System 이 기본적으로 Maven 에 가있을건데 gradle로 해주자

아래 group Id 까지 설정해주면 완료

 

나는 총 3개의 모듈을 생성하였다

demo-main -> 사용자단 api 

demo-admin -> 관리자단 api

demo-core -> 공통 로직

 

 

전부 생성하게 되면 이런식의 구조를 확인할 수 있을것이다.

 

모듈 관계 설정

settings.gradle 설정

root 폴더 경로에 위치한 settings.gradle 에 모듈 설정을 추가해준다

rootProject.name = 'demo'
include 'demo-main', 'demo-admin', 'demo-core'

 

build.gradle 설정

모듈 별 공통 libraries 들을 설정해주고 각 모듈 별 관계성을 정리해주자

 

아래 내가 작업한 코드인데 눈여겨볼점은 project 설정부분이다

plugins {
	id 'java'
	id 'org.springframework.boot' version '3.1.2'
	id 'io.spring.dependency-management' version '1.1.4'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'

java {
	sourceCompatibility = '17'
}

configurations {
	implementation {
		extendsFrom annotationProcessor
	}
}

subprojects {
	apply plugin: 'java'
	apply plugin: 'java-library'
	apply plugin: 'org.springframework.boot'
	apply plugin: 'io.spring.dependency-management'

	configurations {
		compileOnly {
			extendsFrom annotationProcessor
		}
	}

	repositories {
		mavenCentral()
	}

	// 관리하는 모듈의 공통 dependencies
	dependencies {
		implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
		implementation 'org.springframework.boot:spring-boot-starter-web'
		compileOnly 'org.projectlombok:lombok'
		developmentOnly 'org.springframework.boot:spring-boot-devtools'
		implementation "org.mariadb.jdbc:mariadb-java-client:2.1.2"
		implementation 'org.springframework.boot:spring-boot-starter-validation'
		annotationProcessor 'org.projectlombok:lombok'
		testImplementation 'org.springframework.boot:spring-boot-starter-test'

	}

	test {
		useJUnitPlatform()
	}
}

project(':demo-main') {
	jar {
		archivesBaseName = 'demo-main'
	}
	dependencies {
		//컴파일 시 core 로드
		compileOnly project(':demo-core')
	}
}

project(':demo-admin') {
	jar {
		archivesBaseName = 'demo-admin'
	}
	dependencies {
		//컴파일 시 core 로드
		compileOnly project(':demo-core')
	}
}

project(':demo-core') {
	//bootJar로 패키징 할 필요 없음 Main() 메서드 필요없기때문
	bootJar { enabled = false }
	jar { enabled = true }
}

clean {
	delete file('src/main/generated')
}

 

 

configurations 에 compileOnly가 꼭 있어야 멀티모듈 dependencies 의 compileOnly 설정을 사용할 수 있다

subprojects {
	apply plugin: 'java'
	apply plugin: 'java-library'
	apply plugin: 'org.springframework.boot'
	apply plugin: 'io.spring.dependency-management'

	configurations {
		compileOnly {
			extendsFrom annotationProcessor
		}
	}
}

 

 

 

개별 모듈 build.gradle 설정

 

공통로직 모듈을 제외한 다른 모듈의 경우 아래와 같이 작성하면 된다

dependencies 에 core 모듈을 implementation 에 추가한다

plugins {
    id 'java'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'

repositories {
    mavenCentral()
}

dependencies {
    implementation project(':demo-core')

    testImplementation platform('org.junit:junit-bom:5.9.1')
    testImplementation 'org.junit.jupiter:junit-jupiter'
}

test {
    useJUnitPlatform()
}

 

core 모듈은 build.gradle 없애놓고 저장!

 

여기까지하면 모듈간 관계설정 세팅이 완료되었다.

 

다음 포스팅에서 실제로 활용해보자

 

728x90

+ Recent posts