Maven Project 생성 과정
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.sample</groupId>
<artifactId>spring-di-auto</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!-- pom.xml 파일에서 사용되는 프로퍼티값(상수값)을 설정한다. -->
<properties>
<!-- 프로젝트의 자바버전을 정의한다. -->
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<!--
로그출력을 지원하는 slf4j 라이브러리 버전 정보를 상수로 정의한다.
<version>${slf4j.version}</version>와 같이 ${} 형식으로 값을 사용할 수 있다.
-->
<slf4j.version>1.7.25</slf4j.version>
</properties>
<!-- 프로젝트의 의존성 라이브러리를 정의한다. -->
<dependencies>
<!--
spring-context 라이브러리 의존성 정의
spring-context 라이브러리 의존성은 spring-core, spring-beans, spring-aop, spring-expression 라이브러리도 포함한다.
* 스프링을 이용해서 객체 생성, 의존성 주입, 관점지향 프로그래밍 실습이 가능하다.
-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.24</version>
</dependency>
<!--
로그 출력을 지원하는 라이브러리 의존성 정의
-->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
<version>${slf4j.version}</version>
</dependency>
</dependencies>
</project>
스프링의 의존성 주입
수동 의존성 주입
1. 애플리케이션 실행에 관여하는 객체를 스프링 컨테이너가 생성하게 한다.
<bean id="userController" class="com.sample.controller.UserController"></bean>
<bean id="orderController" class="com.sample.controller.OrderController"></bean>
<bean id="userDao" class="com.sample.dao.UserOracleDao"></bean>
<bean id="orderDao" class="com.sample.dao.OrderOracleDao"></bean>
public class UserController {
// 멤버변수 정의
private UserOracleDao userOracleDao;
// Setter 메소드 정의
public void setUserOracleDao(UserOracleDao userOracleDao) {
this.userOracleDao = userOracleDao;
}
}
public class OrderController {
// 멤버변수 정의
private UserOracleDao userOracleDao;
private OrderOracleDao orderOracleDao;
// Setter 메소드 정의
public void setUserOracleDao(UserOracleDao userOracleDao) {
this.userOracleDao = userOracleDao;
}
public void setOrderOracleDao(OrderOracleDao orderOracleDao) {
this.orderOracleDao = orderOracleDao;
}
}
3. 스프링 컨테이너가 생성한 객체들을 조립시킨다.
<bean id="userController" class="com.sample.controller.UserController">
<!--
<property /> 태그는 setter 메소드를 이용한 의존성 주입을 수행한다.
name속성 : setter 메소드의 이름을 적는다.
ref속성: 주입할 빈의 id를 적는다.
-->
<property name="userOracleDao" ref="userDao"></property>
context-2.xml
App2.java
![](https://velog.velcdn.com/images/hcw0709/post/2f4daba2-79be-4069-ac56-c0556d6c0a2b/image.png)
![](https://velog.velcdn.com/images/hcw0709/post/73d0e214-8de5-44ae-a587-aa56f9857597/image.png)