Spring/Study 2020. 4. 8. 23:01

(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)

 

생성자를 이용한 의존 객체 주입

public StudentRegisterService(StudentDao studentDao) {
    this.studentDao = studentDao;
}
cs

 

<baen id="studentDao" class="ems.member.dao.StudentDao"></bean>
 
<bean id="registerService" class="ems.member.service.StudentRegisterService">
    <constructor-arg ref="studentDao"></constructor-arg>
</bean>
cs

 

setter를 이용한 의존 객체 주입

public void setJdbcUrl(String jdbcUrl) {
    this.jdbcUrl = jdbcUrl;
}
 
public void setUserId(String userId) {
    this.userId = userId;
}
 
public void setUserPw(String userPw) {
    this.userPw = userPw;
}
cs

 

<bean id="dataBaseConnectionInfoDev" class="ems.member.DataBaseConnectionInfo">
    <property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:1521:xe" />
    <property name="userId" value="moomini" />
    <property name="userPw" value="1234" />
</bean>
cs

 

List타입 의존 객체 주입

public void setDevelopers(List<String> developers) {
    this.developers = developsers;
}
cs

 

<property name="developers">
    <list>
        <value>Cheney.</value>
        <value>Eloy.</value>
        <value>Jasper.</value>
        <value>Dillon.</value>
        <value>Kian.</value>
    </list>
</property>
cs

 

Map타입 의존 객체 주입

public void setAdministrators(Map<StringString> administrators) {
    this.administrators = administrators;
}
cs

 

<property name="administrators">

    <map>

        <entry>

            <key>

                <value>Cheney</value>

            </key>

            <value>cheney@springPjt.org</value

        </entry>

        <entry>

            <key>

                <value>Jasper</value>

            </key>

            <value>jasper@springPjt.org</value

        </entry>

    </map>

</property>

Colored by Color Scripter

cs

posted by DevMoomin
:
Spring/Study 2020. 4. 8. 22:35

(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)

 

DI(Dependency Injection)란 의존성 주입이라고도 하며, 객체를 직접 생성하는 것이 아니라 외부에서 객체를 생성한 후 주입하는 방식을 말한다. DI를 이용하면 프로그램을 수정할 때 설정 파일만 바꿔주면 되기 때문에 확장성이 뛰어나고, 유지보수에 용이하다.

 

방법1) 객체 직접 생성

Hello.java

1
2
3
4
5
6
7
package helloSpring;
 
public class Hello {
    public void print() {
        System.out.println("Hello World!");
    }
}
cs

- Line 4 : print() 메소드 선언

- Line 5 : Hello World! 출력

MainClass.java

1
2
3
4
5
6
7
8
package helloSpring;
 
public class MainClass {
    public static void main(String[] args) {
        Hello hello = new Hello();
        hello.print();
    }
}
cs

- Line 5 : new를 이용하여 hello 객체 생성

- Line 6 : print() 메소드 호출

 

방법2) 외부에서 객체를 생성한 후 주입

Hello.java

1
2
3
4
5
6
7
8
package helloSpring;
 
public class Hello {
    public void print() {
        System.out.println("Hello World!");
    }
}
 
cs

- Line 4 : print() 메소드 선언

- Line 5 : Hello World! 출력

applicationContext.java

1
2
3
4
5
6
7
8
9
<?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="hello" class="helloSpring.Hello" />
 
</beans>
cs

- Line 7 : Hello 클래스를 hello라는 ID의 bean으로 등록

MainClass.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package helloSpring;
 
import org.springframework.context.support.GenericXmlApplicationContext;
 
public class MainClass {
    public static void main(String[] args) {
        GenericXmlApplicationContext ctx = new GenericXmlApplicationContext("classpath:applicationContext.xml");
        
        Hello hello = ctx.getBean("hello", Hello.class);
        hello.print();
        
        ctx.close();
    }
}
 
cs

- Line 7 : 스프링 컨테이너가 생성되고, 내부에 bean 객체들이 생성 (XML로부터 객체 설정 정보를 가져옴)

- Line 9 : hello라는 객체를 생성하고, XML에서 ID가 hello인 bean을 가져와서 넣어줌

- Line 10 : hello 객체의 print() 메소드 호출

- Line 12 : 스프링 컨테이너와 bean 객체들이 소멸

'Spring > Study' 카테고리의 다른 글

스프링(Spring) 설정 파일 분리  (0) 2020.04.09
스프링(Spring) 다양한 의존 객체 주입  (0) 2020.04.08
스프링(Spring) Hello World!  (0) 2020.04.07
스프링(Spring) 프로젝트 생성  (0) 2020.04.07
스프링(Spring) 개요  (0) 2020.04.06
posted by DevMoomin
:
Spring/Study 2020. 4. 7. 22:21

(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)

 

스프링(Spring)에서는 자바처럼 new를 이용하여 객체를 직접 생성하지 않고, 스프링 설정파일(XML)을 이용한다. 

 

스프링(Spring) 프로젝트 생성 : https://devmoomini.tistory.com/46

 

Hello.java

1
2
3
4
5
6
7
8
package helloSpring;
 
public class Hello {
    public void print() {
        System.out.println("Hello World!");
    }
}
 
cs

- Line 4 : print() 메소드 선언

- Line 5 : Hello World! 출력

 

applicationContext.xml

1
2
3
4
5
6
7
8
9
<?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="hello" class="helloSpring.Hello" />
 
</beans>
cs

- Line 7 : Hello 클래스를 hello라는 ID의 bean으로 등록

 

MainClass.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package helloSpring;
 
import org.springframework.context.support.GenericXmlApplicationContext;
 
public class MainClass {
    public static void main(String[] args) {
        GenericXmlApplicationContext ctx = new GenericXmlApplicationContext("classpath:applicationContext.xml");
        
        Hello hello = ctx.getBean("hello", Hello.class);
        hello.print();
        
        ctx.close();
    }
}
 
cs

- Line 7 : 스프링 컨테이너가 생성되고, 내부에 bean 객체들이 생성 (XML로부터 객체 설정 정보를 가져옴)

- Line 9 : hello라는 객체를 생성하고, XML에서 ID가 hello인 bean을 가져와서 넣어줌

- Line 10 : hello 객체의 print() 메소드 호출

- Line 12 : 스프링 컨테이너와 bean 객체들이 소멸

 

실행결과

posted by DevMoomin
:
Spring/Study 2020. 4. 7. 20:03

(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)

 

스프링(Spring) 프로젝트를 생성하기 위해서는 JDK와 이클립스(Eclipse)가 필요하다. 만약 설치가 되어있지 않다면, 아래의 URL을 참고해서 먼저 설치 후 진행하도록 하자.

 

JDK 설치 : https://devmoomini.tistory.com/39

JAVA 환경변수 설정 : https://devmoomini.tistory.com/40

이클립스(Eclipse) 설치 : https://devmoomini.tistory.com/41

 

1. Eclipse 실행 후 Project Explorer 영역에서 마우스 우클릭 - New - Project 클릭

2. maven을 검색해서 Maven Project 선택 후 Next 클릭

※ Maven : 프로젝트 생성, 테스트 빌드, 배포 등의 작업을 위한 빌드 도구

3. Create a simple project (skip archetype selection) 체크 후 Next 클릭

4. Group IdArtifact Id를 입력하고, Finish 클릭

※ Group Id : 프로젝트의 그룹명(ex. 지하철 노선 개발 프로젝트)

    Artifact Id : Group Id에 속하는 프로젝트 이름(ex. 1호선, 2호선)

5. pom.xml에 아래 그림과 같이 입력 후 저장한다.

※ pom.xml : Maven 설정 파일로, 프로젝트에 import 되는 jar 파일의 정보와 버전 정보를 가지는 파일

    dependencies : 의존성을 정의하는 부분으로, 라이브러리를 불러옴

    build : 빌드할 때 사용할 플러그인 목록을 저장

6. Eclipse 하단부의 Markers을 보면 에러가 발생한 것을 확인할 수 있는데, 프로젝트의 JRE 라이브러리 버전이 메이븐 설정 파일의 버전과 일치하지 않아서 발생하는 에러

7. 프로젝트 폴더 마우스 우클릭 - Maven - Update Project...를 클릭

8. OK를 클릭하여 프로젝트 업데이트

9. 에러 없이 정상적으로 동작하고, pom.xml에서 입력한 라이브러리가 Maven Dependencies에 자동으로 다운받아진 것 확인

※ src/main/java : .java 파일을 관리하는 곳

    src/main/resources : 스프링 설정 파일(XML), 프로퍼티 파일 등 자원 파일을 관리하는 곳

'Spring > Study' 카테고리의 다른 글

스프링(Spring) 설정 파일 분리  (0) 2020.04.09
스프링(Spring) 다양한 의존 객체 주입  (0) 2020.04.08
스프링(Spring) DI(Dependency Injection)  (0) 2020.04.08
스프링(Spring) Hello World!  (0) 2020.04.07
스프링(Spring) 개요  (0) 2020.04.06
posted by DevMoomin
:
Spring/Study 2020. 4. 6. 23:30

(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)

 

스프링 프레임워크

- 스프링 프레임워크란 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크이다. 스프링은 모듈로 구성되어있으며, 주요 기능으로 DI, AOP, MVC, JDBC 등을 제공한다.

  ※ 프레임워크(Framework) : 개발 시 기본이 되는 뼈대나 틀

- DI(Dependency Injection) : 클래스 간의 의존관계를 컨테이너가 자동으로 연결
- AOP(Aspect Oriented Programming) : 공통 기능을 분리시켜 별도로 처리하고, 필요한 시점에 적용
- MVC(Model-View-Controller) : Model, View, Controller로 구조화시키는 디자인 패턴
- JDBC(Java Database Connectivity) : 자바에서 DB에 접속할 수 있도록 하는 자바 API

 

스프링 프레임워크 모듈

- spring-core : 스프링의 핵심인 DI(Dependency Injection)와 IoC(Inversion of Control)를 제공

  ※ IOC(Inversion of Control) : 인스턴스의 생성부터 소멸까지의 객체 생명주기를 스프링(컨테이너)이 관리
- spring-aop : AOP 구현 기능 제공
- spring-jdbc : 데이터베이스를 쉽게 다룰 수 있는 기능 제공
- spring-tx : 트랜잭션 관련 기능 제공
- spring-webmvc : 스프링에서 독립적으로 Model, View, Controller를 지원하기 위한 기능 제공

 

스프링 컨테이너(IOC)

- 스프링에서 객체를 생성하고 조립하는 컨테이너로, 컨테이너를 통해 생성된 객체를 빈(Bean)이라고 부른다.

posted by DevMoomin
: