728x90

Spring에서 Bean의 생성과 Bean들의 관계설정 같은 제어를 담당하는 IoC 오브젝트를 BeanFactory라고 한다.
보통 BeanFactory를 확장한 ApplicationContext를 사용하는데 ApplicationContext는 IoC방식을 따라 만들어진 일종의 BeanFactory라고 생각하면 된다.

BeanFactory의 종류 중 하나 AnnotationConfigApplicationContext
@Configure Annotation을 이용한 Java Code를 설정정보로 사용하려면 AnnotationConfigApplicationContext 를 이용한다.

public class DaoFactory {

   public UserDAO userDAO() {

       return new UserDAO(connectionMaker());

   }

   public ConnectionMaker connectionMaker() {

       return new DConnectionMaker(); // DB 커넥션 오브젝트를 리턴해준다.

   }

}

위와 같은 Factory Class가 있다.
이 Class를 설정정보로 이용하려면 아래와 같은 규칙을 따르면 된다.
- Class 선언 위에 @Configuration 이라는 Annotation을 추가한다.
- 객체(Bean)를 생성해 주는 메소드에는 @Bean이라는 Annotation을 추가한다.

package applicationcontext.factory;


import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;


import applicationcontext.connectionmaker.ConnectionMaker;

import applicationcontext.connectionmaker.DConnectionMaker;

import applicationcontext.dao.UserDAO;


@Configuration

public class DaoFactory {

   @Bean

    public UserDAO userDAO() {

        return new UserDAO(connectionMaker()); // Bean 생성

    }

   @Bean

    public ConnectionMaker connectionMaker() {

        return new DConnectionMaker(); // Bean 생성

    }

}

 
이제 위 DaoFacory 클래스를 AnnotationConfigApplicationContext 클래스를 이용해 읽어들이고 UserDAO Bean을 가져오는 코드를 만들어 보겠다.

package applicationcontext.test;


import org.springframework.context.ApplicationContext;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;


import applicationcontext.dao.UserDAO;

import applicationcontext.factory.DaoFactory;


public class UserDAOTest {

    public static void main(String[] args) {

        ApplicationContext context = new AnnotationConfigApplicationContext(DaoFactory.class);

        UserDAO dao = context.getBean("userDAO", UserDAO.class);

        System.out.println(dao.toString());

    }

}


=====> applicationcontext.dao.UserDAO@d08633 

 
context.getBean의 첫번째 파라미터 userDAO는 DaoFactory 클래스의 userDao라는 메소드의 이름이다. 
두번째 파라미터 UserDAO.class는 userDAO라는 메소드에서 리턴해주는 class 이다.

실행해보면 정상적으로 Bean을 가져오는 것을 확인해 볼 수 있다. 

스프링을 적용하긴 했지만 그냥 DaoFactory를 직접 사용한 것과 기능적으로 다를게 없다.
오히려 번거로운 준비작업과 코드가 필요하다.
그렇다면 굳이 스프링을 사용하지 않고 그냥 DaoFactory와 같은 오브젝트 팩토리를 만들어서 사용하면 되는게 아닐까?
(@Configure 없는 초기 버전의 Factory클래스 같은 클래스들을 오브젝트 팩토리라고 한다.)
스프링은 DaoFactory와 같은 오브젝트 팩토리만으로는 얻을 수 없는 많은 방법과 기능을 제공해 준다. 


출처 : http://babtingdev.tistory.com/288

Posted by 앗뜨거
,
728x90

자바 어플리케이션이든, 웹 어플리케이션이든 메모장이나 TextEditor 를 이용하여 개발하는 것에는 생산성의 한계가 있기 마련입니다. 
코드를 짜고, 컴파일을 한 후 서버를 띄우고, 실행을 해보고...등등 
이런 일련의 과정을 이클립스라는 훌륭한 개발툴의 등장으로 통합적인 개발 환경(IDE)이 제공됨으로써 생산성과 협업에 효율화가 가능해졌습니다. 

여기서 설명할 STS (Spring Tool Suite)는 Spring의 공식 커뮤니티인 Spring Source(http://www.springsource.org/) 에서 이클립스 기반에 Spring 개발에 필요한 여러 플러그인을 통합한 버전으로 메이븐, ROO, vfabric-tc-server 등이 포함된 Spring 어플리케이션 통합 개발 툴입니다. 

일단, Spring Tool Suite 다운로드 로 접근하여 STS를 다운받아 봅니다. 






간단한 소개와 함께 우측 상단에 DOWNLOAD 버튼이 나옵니다. 
클릭 후 이동하는 화면에서는 회원 정보를 입력하거나 다이렉트 다운로드 링크로 이동하여 STS를 다운로드 받을 수 있습니다. 




다운로드 목록에 각 OS별 STS 버전이 명시되어 있습니다. 여기서는 Window 7 64Bit 환경이므로 아래 이미지와 같이 링크를 클릭하여 다운로드 받습니다. 






현재 3.8 버전과 4.2 버전이 존재하며 인스톨러 방식 혹은 ZIP 압축 형태로 제공되는 것을 확인 할 수 있습니다. 
인스톨러 방식은 JDK 위치등을 지정해주고 여러 설치 옵션들을 조정해줄 수 있지만 가장 쉽게 접근 할 수 있는 ZIP 파일을 받아 압축을 풀고 sts-3.2.0.RELEASE 폴더를 복사하여 개별 프로젝트마다 이클립스를 독립적으로 구동시킬 수 있습니다. 

압축을 풀면 아래와 같습니다. 





sts-3.2.0.RELEASE 폴더를 들어가보면 STS.exe 파일이 존재합니다. 더블 클릭하면 이클립스가 실행됩니다. 
그 전에 로컬의 프로젝트 디렉토리 구조를 아래와 같이 만들어보겠습니다. 






추후 다시 설명하겠지만 C 루트에 1.Project라는 폴더를 만들어서 그곳에 관련 개발 프로그램들을 위치 시킬 것입니다. 
C:\1.Project 하위에는 각각 env, Localhome, tools, workspace 를 생성하였습니다. 

env 폴더는 톰캣이나 디컴파일러 등의 개발 환경에 추가적으로 필요한 것들을 위치시킵니다. 
Localhome 은 추후 Tomcat의 서버 디렉토리 형상을 그대로 로컬에 구성해주기 위해 만든 폴더입니다. 
Tools 밑에는 이클립스와 이클립스 관련 설치 플러그인 들이 위치하게 될 것입니다. (실제 이클립스 폴더 안에 플러그인이 들어가지만 차후 개발 환경을 전체 개발팀과 공유할 때는 설치한 플러그인 목록도 따로 제공하는 것이 보기에 좋습니다.) 
workspace는 개발 프로젝트의 실제 Source Location 이 되는 곳입니다. 

이제 다운받은 위치의 sts-3.2.0.RELEASE 폴더를 프로젝트 디렉토리 Tools 밑에 복사하여 넣고 STS.exe를 실행해봅니다. 






Work Space를 선택하는 화면에서 우리가 생성한 C:\1.Project\workspace를 지정해주면 아래와 같이 초기화면 및 대시보드가 나옴을 확인 할 수 있습니다. 




Open Dashboard 를 선택합니다. 






이것으로 로컬에 기본적인 개발환경인 JDK 설정과 Spring STS의 설치가 완료 되었습니다. 


개발툴 구성 TIP
개발환경을 전체 구성하여 개발팀에게 공유해야 할 때에는 JDK를 이클립스 프로젝트 폴더에 포함하여 배포할 수 있습니다. 

  • env 에 Tomcat 을 배포하듯 JDK 압축 파일을 풀어 JDK1.7 폴더를 그대로 묶어서 env 하위에 위치하고 배포합니다.
  • eclipse.ini 파일을 열어 실행 경로를 조정해 줍니다. (여기서는 sts.ini)
  • -vm 옵션을 주어 env 에 위치시킨 JAVA 실행 파일을 지정합니다.



이밖에 이클립스의 실행속도 및 메모리 활용을 위한 옵션도 지정할 수 있습니다. 
아래 두개의 파일을 통해 원본과 수정 후의 ini 파일을 확인 할 수 있습니다. 






STS 가 설치 된 기본 ini 옵션 값들입니다. 






-vm 옵션으로 javaw 실행 파일을 지정해주었고 -vmargs 옵션을 통해 메모리 관련 설정값들을 조정해주었습니다. 

값은 개발 장비의 사양에 따라 유동적입니다. 

  1. -Xverify:none : 클래스의 유효성을 검사를 생략하는 옵션입니다.
  2. -XX:+UseParallelGC : 병렬 가비지 컬렉션을 사용합니다.
  3. -XX:-UseConcMarkSweepGC : 이클립스 GUI의 응답을 빠르게 합니다. .
  4. -XX:PermSize=128M : Permanent Generation 크기를 설정하니다.
  5. -XX:MaxPermSize=128M : 최대 Permanent Generation 크기를 설정합니다.
  6. -XX:NewSize=128M : New Generation 크기를 설정합니다.
  7. -XX:MaxNewSize=128M : New Generation 의 최대 크기를 설정합니다.
  8. -Xms512m : 이클립스가 사용하는 최소 힙 메모리
  9. -Xmx512m : 이클립스가 사용하는 최대 힙 메모리

힙메모리가 균일하게 설정되어 있으면 메모리 사용률이 거의 변동이 생기지 않는다고 알려져 있으나 확실하진 않습니다. 
4기가 이상의 메모리를 사용하는 환경이라면 768m 나 1024m 를 사용해도 무방할 거 같습니다. 

이로써, 기본적인 이클립스 STS 환경 세팅과 실행 옵션까지 정리가 되었습니다. 

Maven 설정 및 Tomcat 설정등은 다음 강좌에서 정리하도록 하겠습니다. 


출처 : http://www.gliderwiki.org/wiki/102

Posted by 앗뜨거
,