Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
다음과 같이 설치 여부를 확인
관리자 권한 PS C:\Windows\System32> choco Chocolatey v2.4.3 Please run 'choco -?' or 'choco <command> -?' for help menu.
관리자 권한 PS> choco install maven -y
Chocolatey v2.4.3
.
.
Chocolatey installed 1/1 packages.
See the log for details (C:\ProgramData\chocolatey\logs\chocolatey.log).
- 사용자변수 (변수이름: MAVEN_HOME, 변수값: 경로)
- 시스템변수 (Path: %MAVEN_HOME%\bin)
- 파워쉘 다시 시작!
C:\ProgramData\chocolatey\lib\maven\apache-maven-3.9.9\bin
- vscode 파워셀에서도
$env:Path += ";C:\ProgramData\chocolatey\lib\maven\apache-maven-3.9.9\bin" PS C:\DEV\code\win\project-msghub> $env:JAVA_HOME="C:\Program Files\Java\jdk-21" PS C:\DEV\code\win\project-msghub> $env:Path="C:\Program Files\Java\jdk-21\bin;" + $env:Path
project-root/.vscode/settings.json
{
"java.compile.nullAnalysis.mode": "automatic",
"java.configuration.updateBuildConfiguration": "interactive",
"terminal.integrated.env.windows": {
"Path": "C:\\ProgramData\\chocolatey\\lib\\maven\\apache-maven-3.9.9\\bin;C:\\Program Files\\Java\\jdk-21\\bin;$env:Path",
"JAVA_HOME": "C:\\Program Files\\Java\\jdk-21"
}
}
src/main/resources 밑에 spring-config.xml 추가
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="exampleBean" class="java.lang.String">
<constructor-arg value="Hello, Spring XML!"/>
</bean>
</beans>
src/main/java/com/domain/project
├── config # 설정 관련 클래스 (예: SecurityConfig, WebConfig 등)
├── controllers # 컨트롤러 (예: UserController, AuthController 등)
├── enums # 열거형 타입 (예: UserRole, Status 등)
├── models # 엔티티 및 DTO (예: User, Order, UserDTO 등)
├── repositories # JPA Repository 인터페이스 (예: UserRepository 등)
├── services # 서비스 클래스 (예: UserService, EmailService 등)
├── utils # 공통적으로 사용하는 유틸리티 클래스 (예: DateUtil, JwtUtil 등)
└── Application.java # 스프링 부트 메인 클래스
<컴파일해서 실행하는 방법>
PS C:\DEV\code\win\project> mvn clean package
PS C:\DEV\code\win\project> java -jar target/myproject-0.0.1-SNAPSHOT.jar
<한번에 실행하는 방법>
* application.properties
spring.application.name=project-msghub
server.port=53001
server.address=0.0.0.0
* Dockerfile
FROM openjdk:21-jdk-slim
WORKDIR /app
COPY target/project-msghub-0.0.1-SNAPSHOT.jar /app/app.jar
EXPOSE 53001
ENTRYPOINT ["java", "-jar", "app.jar"]
* compose.yaml
version: "3.8"
services:
app:
build: .
ports:
- "53001:53001"
# 1. Spring Boot 앱이 컨테이너 내부에서 53001 포트에서 실행됨.
# 2. Dockerfile의 EXPOSE 53001은 단순히 컨테이너 내부에서 포트를 개방하는 역할 (호스트에서 접근 불가).
# 3. Docker Compose의 ports: - "53001:53001" 설정 덕분에, 호스트의 53001 포트와 컨테이너 내부의 53001 포트가 연결됨.
# 4. 따라서, 호스트(로컬)에서 http://localhost:53001로 접근하면 컨테이너 내부의 Spring Boot 애플리케이션으로 요청이 전달됨.
Log4j2를 사용하려면 기본 로깅 시스템을 exclusion 해야함
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.21.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.21.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j2-impl</artifactId>
<version>2.21.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<!-- : Log4j2를 사용하려면 기본 로깅 시스템을 제외해야 함 -->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- : Log4j2를 사용하려면 기본 로깅 시스템을 제외해야 함 -->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<!-- 한글 지원 처리 -->
<encoding>UTF-8</encoding>
src/main/resources
application.properties -> application.yaml
PS C:\> choco install rabbitmq
.
.
Offline change; changes will take effect at broker restart.
rabbitmq may be able to be automatically uninstalled.
Environment Vars (like PATH) have changed. Close/reopen your shell to
see the changes (or in powershell/cmd.exe just type `refreshenv`).
The install of rabbitmq was successful.
Software installed as 'exe', install location is likely default.
Chocolatey installed 2/2 packages.
See the log for details (C:\ProgramData\chocolatey\logs\chocolatey.log).