- DI(의존관계설정) - Spring : 의존 관계 주입 경량화 컨테이너

  의존성? 어떤 클래스가 자신의 임무를 다하기 위해 필요한 값(필드 값) 이나 사용할 다른 클래스와의 관계를 말한다.

  주입? 어떤 클래스의 인스턴스에 대한 외부로 부터 '의존성'을 설정하는 것을 말한다.


- 컨테이너가 하는 역할

  어떤 클래스가 필요로 하는 값이나 인스턴스를 생성, 취득하고, 그 클래스의 인스턴스에 대해 설정하는 것

  이렇게 하면 필요한 인스턴스를 생성, 취득하는코드를 직접 만들지 않아도 되고, 그 결과 클래스간 관계가 느슨한 결합이 되어

  의존성이 약해진다.


- 스프링을 사용해 Bean을 취득하는 기본적인 절차

  1. Bean 팩토리를 생성한다.

  2. Bean 팩토리로 부터 Bean을 취득한다.

  ex) 

  // Bean 팩토리 생성

  BeanFactory factory = new XmlBeanFactory(new FileSystemResource("beans.xml"));

  - FileSystemResource 클래스의 생성자에는 XML 정의 파일을 지정한다.

    XML 정의 파일(beans.xml)의 정보를 사용하는 BeanFactory 인스턴스 생성

  // Bean 취득

  MessageBean bean = factory.getBean("MessageBean", MessageBean.class); // bean.xml id 값과 일치한 값 등록

  - Bean 을 취득한 후 클래스 내의 메서드 사용




- 설정파일(beans.xml) - 명칭은 임의이므로 신경쓰지 않아도 된다.

  <?xml version="1.0" encoding="UTF-8" ?>


<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:context="http://www.springframework.org/schema/context"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context-3.0.xsd">

    <!-- OneToOne bean -->

    <bean id="messageBeanOneToOne" class="OneToOne.sample3.MessageBeanKr" />

</beans>

  - id : Bean에 고유한 이름을 붙이기 위함.

  - class : id 속성에 의해 설정된 실제의 클래스이름(패키지이름 + 클래스 이름)






- 의존 관계 주입방법의 2가지 ( 생성자 & 메서드 )

  1. 생성자를 통한 주입

     생성자를 사용해 의존 관계를 주이하는 것을 말한다.

     ex)

     Foo.java ----------

     public Class Foo {

         private Bar bar;

         public Foo(Bar bar){

             this.bar = bar;

         }

     }



  2. 설정 메서드를 통한 주입

     Foo.java ----------

     public class Foo {

         private Bar bar;

         public setBar(Bar bar) {

             this.bar = bar;

         }

     } 


Spring (스프링) 이란?

스프링 프레임워크 소개

 


스프링이란 무엇인가?


:스프링(Spring)은 간단히 말하면 엔터프라이즈 어플리케이션에서 

필요로 하는 기능을 제공하는 프레임워크이다.

 스프링은 J2EE가 제공하는 다수의 기능을 지원하고 있기 때문에,

 J2EE를 대체하는 프레임워크로 자리 잡고 있다.

※ 엔터프라이즈 어플리케이션?( 난 모르겟다. 그래서 찾아봐따)

    - 회사에서는 모든 다른 시스템들, 예로 재무, 회계, 생산, 판매 등에서 추출된 정보를 통합하여 일을 처리하는 것이 관건

       이를 위해 여러 전사적 시스템이 개발 되었는데 그 대표적인 시스템들로 ERP, SCM, CRM, KMS 가 있다.

       이렇게 시스템들은 회사의 비지니스 프로세스를 조밀하게 해주어 비지니스를 더욱 더 유연하고 생산적으로 만들어준다.

       이게! 엔터프라이즈 어플리케이션! 쉽게 말해 조직을 강화시키기 위한 하나의 수단 및 프로그램이다.

       이 설명으로는....아 ! 이게 이런 느낌이 안온다... 좀더 찾아봐야지 


  


스프링 프레임워크 특징


- 스프링은 경량 컨테이너이다. 스프링은 자바 객체를 담고 있는 컨테이너이다. 

  스프링은 이들 자바 객체의 생성, 소멸과 같은 라이프 사이클을 관리하며,

  스프링으로부터 필요한 객체를 가져와 사용 할 수 있다.


- 스프링은 DI(Dependency Injection) 패턴을 지원한다. 

  스프링은 설정 파일을 통해서 객체 간의 의존 관계를 설정할 수 있도록 하고 있다.

  따라서 객체는 직접 의존하고 있는 객체를 생성하거나 검색할 필요가 없다.


-스프링은 AOP(Aspect Oriented Programming)를 지원한다. 

 스프링은 자체적으로 AOP를 지원하고 있기 때문에 트랜잭션이나 로깅,

 보안과 같이 여러 모듈에서 공통으로 필요로 하지만 

 실제 모듈의 핵심은 아닌 기능들을 분리해서 각 모듈에 적용할 수 있습니다.


-스프링은 POJO(Plain Old Java Object)를 지원한다. 

 스프링 컨테이너에 저장되는 자바 객체는 특정한 인터페이스를 구현하거나 

 클래스를 상속받지 않아도 된다. 

 따라서 기존에 작성한 코드를 수정할 필요 없이 스프링에서 사용할 수 있다.


-트랙젝션 처리를 위한 일관된 방법을 제공한다.

 JDBC를 사용하든, JTA를 사용하든, 또는 컨테이너가 제공하는 트랙잭션을 사용하든,

 설정 파일을 통해 트랜잭션 관련 정보를 입력하기 때문에 트랙잭션 구현에 상관없이

 동일한 코드를 여러 환경에서 사용 할 수 있다.


-영속성과 관련된 다양한 API를 지원한다. 스프링은 JDBC를 비롯하여 iBATIS, 

  하이버네이트,JPA,JDO등 데이터베이스 처리와 관련하여 널리 사용되는 

  라이브러리와의 연동을 지원하고 있다.


-다양한 API에 대한 연동을 지원한다. 스프링은 JMS, 메일, 스케줄링 등 엔터프라이즈 

  어플리케이션을 개발하는데 필요한 다양한 

  API를 설정 파일을 통해서 손쉽게 사용할 수 있도록 하고 있다


-스프링은 자체적으로 MVC 프레임워크를 제공한다. 따라서 스프링만 사용하더라도 MVC 기반의 웹 어플리케이션을

  어렵지 않게 개발할 수 있다. 또한 스트럿츠, WebWork, JSF 와 같은 프레임워크와의 연동을 지원하고 있기 때문에 이들

  프레임웨크에서 스프링이 제공하는 다향한 기능을 손 쉽게 사용할 수 있다.

+ Recent posts