[ 메이븐 (Maven) ]
why?
Maven(메이븐) = Dependency Management
1. 의존성 관리
2. 어플리케이션이 필요한 많은 라이브러리를 일괄적으로 관리
pom.xml 에서 설정한다
- pom(project object model)
pom.xml 에 필요한 외부라이브러리를 설정하면,
원천사이트에서 원격으로 한번 로컬라이브러리 저장소에 저장하고,
이를 지속적으로 사용할 수 있다
설정 방법
일반프로젝트 → 해당프로젝트에서 오른쪽 마우스 클릭 → configure → convert to maven project 적용
pom.xml에서 필요한 라이브러리를 설정하면 저장소에 저장된다.
위 사이트에서 의존 라이브러리 maven 정보 및 jar 를 다운로드 받을 수 있다.
spring dependencies 정보
예)
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.14.RELEASE</version>
</dependency>
pom.xml 변경시 해당 프로젝트에서 오른쪽 마우스 클릭 Maven-→ Update Project 를 하면 라이브러리가 업데이트 된다.
Spring IOC 개발 단계
1. 기존 시스템 - 망치(Hammer), 삽(Spade)
2. 추상화 (abstraction → Interface) - 망치와 삽을 추상화
3. Maven을 이용해 Spring 라이브러리 확보
4. Spring Config(설정) - 방법 1)xml 2)annotation - 아래 예제에서는 xml으로 설정함
5. Application Context (=Spring Container = IOC Container)
/model
/Tool.java <<interface>>
package model;
public interface Tool {
public void work();
}
/Hammer.java
package model;
public class Hammer implements Tool{
public void work() {
System.out.println("망치 도구로 일하다.");
}
}
/Spade.java
package model;
public class Spade implements Tool{
public void work() {
System.out.println("삽 도구로 일하다.");
}
}
/Poclain.java
package model;
public class Poclain implements Tool{
public void work() {
System.out.println("포크레인 도구로 일하다.");
}
}
/test
- IOC/DL 방식으로 객체를 받아옴
- Spring ioc container는 singleton 방식이 default이다.
/testIOC.java
package test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import model.Tool;
public class TestIOC {
public static void main(String[] args) {
//Spring IOC Container
// : 객체를 생성하여 제어하는 역할
//(singleton 방식으로 운용됨)
ClassPathXmlApplicationContext factory
= new ClassPathXmlApplicationContext("ioc.xml");
//DL : Dependency Loopup -> 스프링 IOC 컨테이너에서
// bean id를 이용해 검색 후 필요로 하는 객체를 확인한다.
Tool tool = (Tool) factory.getBean("tool");
System.out.println(factory.getBean("tool"));
System.out.println(factory.getBean("tool"));
System.out.println(factory.getBean("tool"));
tool.work();
/* 출력값 :
* model.Poclain@7225790e
* model.Poclain@7225790e
* model.Poclain@7225790e
* 포크레인 도구로 일하다.
*
* 객체를 여러번 받아도 동일한 객체가 반환된다.
* : Spring ioc container는 객체를 singleton방식으로 운용한다.
*/
factory.close();
}
}
/pom.xml 에 아래 추가
<dependencies>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.14.RELEASE</version>
</dependency>
</dependencies>
IOC를 사용하면 유지보수성을 향상할 수 있다.
/ioc.xml
1. Poclain 입력할 경우, testIOC.java 에서 실행할 경우 포크레인 도구로 일하다. 가 출력됨
<?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="tool" class="model.Poclain"></bean>
</beans>
2. Hammer 입력할 경우, (Spade 입력할 경우도 동일)
testIOC.java 에서 실행할 경우 망치 도구로 일하다. 가 출력됨
<?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="tool" class="model.Hammer"></bean>
</beans>
'Java Web Programming > 6. Spring | MyBatis' 카테고리의 다른 글
[Spring] 비즈니스 로직 계층 추가 (IOC, DI+DL) (0) | 2020.10.27 |
---|---|
[Spring] 생성자를 통한 DI/DL 적용(constructor-arg) + IOC + maven (0) | 2020.10.27 |
[Spring] DI/DL 적용 + Spring IOC 개발 + maven (0) | 2020.10.27 |
[Framework/Spring] IOC / DI 의 개념과 활용 (0) | 2020.10.26 |
[Framework/Spring] Eclipse 이클립스에서 Spring 스프링 프레임워크 환경 설정 (0) | 2020.10.26 |