메이븐
- 프로젝트 구조와 내용을 기술하는 선언적 접근 방식의 오픈 소스 빌드 툴
- 메이븐을 사용하면 프로젝트 종속 라이브러리들과 그 라이브러리에 의존하는 Dependency 자원까지 관리할 수 있음
- 프로젝트 전반의 리소스 관리와 설정 파일, 그리고 이와 관련된 표준 디렉터리 구조를 처음부터 일관된 형태로 구성하여 관리
- 메이븐을 사용하면 컴파일과 동시에 빌드를 수행할 수 있음
- 관련 라이브러리도 일관성 있게 관리할 수 있어 편리함
- 의존 관계를 자동으로 관리할 수 있음
메이븐 구성 요소
구성 요소 | 설명 |
---|
pom.xml | 프로젝트 정보가 표시되며 스프링에서 사용되는 여러 가지 라이브러리를 설정해 다운로드 할 수 있음 |
src/main/java | 자바 소스 파일이 위치 |
src/main/resources | 프로퍼티 파일이나 XML 파일 등 리소스 파일이 위치 |
src/main/webapp | WEB-INF 등 웹 애플리케이션 리소스가 위치 |
src/test/java | JUnit 등 테스트 파일이 위치 |
src/test/resources | 테스트 시 필요한 resource 파일이 위치 |
pom.xml의 프로젝트 정보 설정 태그 구성 요소
속성 | 설명 |
---|
groupId | 프로젝트 그룹 id를 나타내며 일반적으로 도메인 이름을 사용해 설정 |
artifactId | 프로젝트 아티팩트 id를 설정. 대개는 패키지 이름으로 설정 |
version | 프로젝트 버전 설정 |
packaging | 애플리케이션 배포 시 패키징 타입 설정. war 파일로 패키징 |
< dependencies > 태그 안에서 사용되는 여러 가지 태그들
속성 | 설명 |
---|
dependency | 해당 프로젝트에서 의존하는 다른 라이브러리 정보를 기술 |
groupId | 의존하는 프로젝트 그룹 id |
artifactId | 의존하는 프로젝트의 artifact id |
version | 의존하는 프로젝트 버전 정보 |
alias를 안쓰는 것이 유지보수에는 좋음 -> 'command + 마우스 올림'을 하면 제대로 된 파일이나 경로의 경우에는 밑줄이 뜨고, 클릭이 가능해진다. 하지만 alias는 그런 기능이 없기 때문에 나중을 보았을 때에는 오류 찾기가 더 힘들다.
db.properties
- 전에는 MvcConfig.java에 넣어뒀던 것들을 db.properties 파일로 따로 뺌
- 따로 파일을 빼 주면 유지보수성이 용이해짐
- text파일이기 때문에 다시 build를 할 필요가 없음
- spring boot의 application.property와는 상관이 없음
MvcConfig.java 필드 추가
속성
//db.properties에 있는 속성
@Value("${db.driver}")
private String driver;
@Value("${db.url}")
private String url;
@Value("${db.username}")
private String username;
@Value("${db.password}")
private String password;
HikariCP
@Bean
public HikariDataSource dataSource() {
HikariDataSource dataSource = new HikariDataSource();
dataSource.setDriverClassName(driver);
dataSource.setJdbcUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
return dataSource;
}
properties 설정
설정 파일을 불러올 때에는 static을 써 주어야 호출할 수 있고, 그래야 NullPointerException이 뜨지 않는다.
@Bean
public static PropertyPlaceholderConfigurer properties() {
PropertyPlaceholderConfigurer config = new PropertyPlaceholderConfigurer();
config.setLocation(new ClassPathResource("db.properties"));
return config;
}