다음은 기본적인 java application 프로젝트의 구조이다.
├── resources
└── src
└── com
└── company
intelliJ 에서 resources
폴더는 별도로 잡아주었다. ( 그래야 resource 를 읽을 때, NPE가 나지 않음)
gradle init
로 gradle 프로젝트 구조로 초기화한다.(maven 과 트리 구조는 동일)
./gradlew run
을 실행하여 Hello world
가 출력되는 걸 확인한다.
기존 프로젝트는 결합도를 낮추기 위해 Factory 클래스에서 Properties.load() 로 외부 파일을 읽어와서 Class.forName().newInstance()
를 사용하여 인스턴스화하였다.
이번에는 spring ApplicationContext를 적용하여 결합도를 낮춰보기 위해 spring-context
dependency를 추가한다.
# build.gradle
plugins {
id 'java'
id 'application'
}
repositories {
mavenCentral()
}
dependencies {
testImplementation 'junit:junit:4.13'
implementation 'org.springframework:spring-context:5.0.10.RELEASE'
}
application {
mainClass = 'com.company.App'
}
이제 기존에 작성했던 프로젝트를 gradle(maven) 구조에 맞게 소스를 재구성한다.
└── src
├── main
│ ├── java
│ │ └── com
│ │ └── company
│ └── resources
└── test
├── java
│ └── com
│ └── company
└── resources
ApplicationContext ctx = new ClassPathXmlApplicationContext("spring/app-context.xml");
spring-context
가 제대로 동작하는지 확인한다.
완전 찾고 있던건데 감사합니다람쥐~