BOM (Bill Of Materials)
- Bill Of Materials 의 약자
- 일종의 특별한 POM 파일
- 프로젝트에서 사용하는 Dependency들을 한 곳에서 관리하고 싶을 때 사용한다.
- 섹션을 사용함
POM
- 프로젝트의 정보 및 설정을 담고 있는 XML 파일
- 프로젝트를 빌드하기 위한 Dependency 를 관리하는데 사용된다.
BOM Sample
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>baeldung</groupId>
<artifactId>Baeldung-BOM</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>BaelDung-BOM</name>
<description>parent pom</description>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>test</groupId>
<artifactId>a</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>test</groupId>
<artifactId>b</artifactId>
<version>1.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>
How to use BOM
▶ CASE 1
<project>
<parent>
<groupId>baeldung</groupId>
<artifactId>Baeldung-BOM</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
</project>
▶ CASE 2
<project>
<parent>
<groupId>baeldung</groupId>
<artifactId>Baeldung-BOM</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
</project>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>baeldung</groupId>
<artifactId>Baeldung-BOM</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
Spring BOM File
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-framework-bom</artifactId>
<version>4.3.8.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
How to Use POM
- POM 에서는 기정의된 Dependency Version이 존재하므로 Version 정보없이 기입가능
- BOM 에 명시된 Version 정보를 가져온다.
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-framework-bom</artifactId>
<version>4.3.8.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<dependencies>
GRADLE 의 Dependency 관리
io.spring.dependency-management
build.properties
buildscript {
dependencies {
classpath 'io.spring.gradle:dependency-management-plugin:$Version'
}
}
configure(allprojects) {
apply plugin: 'io.spring.dependency-management'# MAVEN의 <dependencyManagement> 섹션과 동일한 역할
{
imports {mavenBom 'io.spring.platform:platform-bom:$Version'}
}
}
또 다른 BOM (Byte Order Mark)
- Byte Order Mark 의 약자
- 유니코드 인코딩에 여러가지 방식이 존재하여 생긴 이슈
- 문서 앞에 Signature 바이트를 넣는다.
BOM 정보
인코딩 방식 | Byte Order Mark (Bom) |
---|---|
UTF-8 | EF BB BF |
UTF-16 Big Endian | FE FF |
UTF-16 | Little Endian FF FE |
UTF-32 Big Endian | 00 00 FE FF |
UTF-32 Little Endian | FF FE 00 00 |
BOM의 Side Effect
- Windows 환경에서 작성한 파일을 Linux 환경으로 올렸을 때 Byte 수가 맞지 않는 경우 발생
- Windows 의 NotePad 등은 UTF-8 파일을 생성할때 자동으로 BOM을 넣는다.
- 파일의 크기가 예상과는 다른 상황이 발생할 수 있다.
Reference
'STUDY > 스프링' 카테고리의 다른 글
[스프링부트] 2.4.x 버전에서 내장 톰캣 AJP 프로토콜 띄우기 (secretRequired 이슈) (0) | 2021.03.30 |
---|---|
[Spring] NoUniqueBeanDefinitionException (0) | 2020.06.17 |
댓글