'자바'에 해당되는 글 12건

  1. 2008/02/12 제9회 한국 자바 개발자 컨퍼런스
  2. 2008/01/22 JDK 5.0 + Tomcat 이클립스 개발환경에서 Struts (1.3.8) 설치 하기
  3. 2007/05/22 MyEclipse에서 Xdoclet을 이용하여 sesstion bean 만들기 For weblogic 8 #2 (7)
  4. 2007/05/12 정적 변수를 선언하는 방법들 (3)
  5. 2007/02/21 자바 예외처리(간단) (1)
  6. 2007/02/14 자바의 접근제한자(한정자) (1)
  7. 2007/02/13 상속 (4)
  8. 2007/02/13 생성자 (3)
  9. 2007/02/09 Spring Framework (2)
  10. 2007/02/09 for문에 날개를 달아 더 빠르게 만들기 (3)
2008/02/12 16:52

제9회 한국 자바 개발자 컨퍼런스

이올린에 북마크하기(0) 이올린에 추천하기(0)
Trackback 0 Comment 0
2008/01/22 12:56

JDK 5.0 + Tomcat 이클립스 개발환경에서 Struts (1.3.8) 설치 하기

JDK 5.0 + Tomcat 이클립스 개발환경에서 Struts (1.3.8) 설치 하기

엄청 오랜만에 글을 쓰게 되었네요~
예전부터 계획했던 스트럿츠와 관련된 내용입니다.
한달동안 훈련소를 갔다가 오고 이것저것 하다 보니 시간이 많이 지나버렸네요!
오랜만에 Struts 홈페이지를 보니 1.3.8로 업그레이드가 되었더군요~
이전에 마지막에 써봤던 버젼이 1.2.9 였는데... 말이죠~
우선 기반은 1.3.8 기반으로 설명 하겠습니다.

우선 JDK와 Tomcat에 깔여 있고 툴은 이클립스 기반으로 하겠습니다.

설치 순서는 다음과 같습니다.

1. Struts 다운로드
2. 필요한 jar 파일 프로젝트의 WEB-INF 밑에 LIB 폴더에 복사(라이브러리 등록)
3. WEB.XML 파일 작성
4. Struts 설정파일(기본: struts-config.xml) 작성

자~ 대략적인 순서는 위에 갔습니다. 저렇게 보니 간단하죠?
머 그냥 해봐도 간단하기는 합니다.
그럼 시작하겠습니다.

1. Struts 다운로드
http://struts.apache.org/download.cgi#struts138

사용자 삽입 이미지

위 주소에서 알맞은 Struts 버젼을 다운 받습니다.
필자는 Full 버젼을 받도록 하겠습니다.
사용자 삽입 이미지

Full 버젼에는 밑에 있는 모든 내용이 포함되어 있습니다.
Libray + Source + Example + Documentation
사용자 삽입 이미지

Documentation 내용에 설치 하는 내용도 포함되어 있습니다.
다 다운 받으셨으면 우선 적당한 곳에 압축을 풀어서 내용을 확인 해 봅니다.

2. 필요한 jar 파일 등록
이제부터는 이클립스에서 프로젝트를 생성하고 그 프로젝트에 라이브러리 등록 하겠습니다.
우선 이클립스를 키시고 프로젝트를 한개 생성합니다.

사용자 삽입 이미지

저는 MyEclipse 6.0.1 버젼에서 동작 시키도록 하겠습니다.
그렇게 크게 차이는 없으며 이클립스를 사용하시던 분이라면 쉽게 따라 올 수 잇다고 생각합니다.
사용자 삽입 이미지

struts 이름의 웹 프로젝트를 만듭니다.

프로젝트가 생성이 되었으며 내용을 보면 기본적이 라이브러리들이 등록되어 있으며 프로젝트의 최 상위 디렉토리가 되는 WebRoot라는 디렉토리가 있으면 그 밑에 몇개의 폴더와 폴더가 있는 것이 보일 것입니다.

사용자 삽입 이미지

이제 라이브러리(jar) 파일을 복사 시키겠습니다.
아까 압축을 푼 곳을 보면 lib 폴더안에 여러 jar 파일들이 있을 것입니다.
commons 라이브러리와 core 라이브러리 타일즈 프레임워크, EL 등 여러가지 있을 것입니다.
사용자 삽입 이미지

우선 여기 있는 jar 파일을 전부 복사 하겠습니다. 원래는 필요한 것만 복사하셔서 사용하여도 되지만 여기서 하나하나 전부 설명을 할 수 없고 설치에 대한 설명을 위한 부분이기 때문에 모두 다 설치 하겠습니다.

전체를 프로젝트의 WebRoot\WEB-INF\LIB 디렉토리에 복사를 합니다.
해당 디렉토리에 복사를 하면 자동으로 Referenced Libraies에 등록이 될것입니다.

사용자 삽입 이미지

이클립스를 버젼과 설정에 따라 등록이 안될 수도 있습니다. 등록이 안될경우 프로젝트의 속성에 들어가셔서 직접 등록을 해 주시면 됩니다.

등록이 완료 되었으면 다음으로 넘어가도록 하겠습니다.

3. WEB-INF 밑에 web.xml 설정
Struts는 Servlet입니다. Servlet 등록을 위하여 web.xml파일을 열어서 편집을 하여야 합니다.

사용자 삽입 이미지

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
 xmlns="http://java.sun.com/xml/ns/j2ee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
 http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
 
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
 
   <!-- Action Servlet Configuration -->
    <servlet>
        <servlet-name>action</servlet-name>
        <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
        <init-param>
            <param-name>application</param-name>
            <param-value>
                org.apache.struts.webapp.el.exercise.ApplicationResources</param-value>
        </init-param>
        <init-param>
            <param-name>config</param-name>
            <param-value>/WEB-INF/struts-config.xml</param-value>
        </init-param>
        <init-param>
            <param-name>debug</param-name>
            <param-value>2</param-value>
        </init-param>
        <init-param>
            <param-name>detail</param-name>
            <param-value>2</param-value>
        </init-param>
        <load-on-startup>2</load-on-startup>
    </servlet>


    <!-- Action Servlet Mapping -->
    <servlet-mapping>
        <servlet-name>action</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
   
</web-app>

web.xml

필자가 추가한 내용을 <Servlet>과 <servlet-mapping> 부분입니다. Struts를 사용하기 전에 Servlet에 대하여 모르시는 분은 Servlet부터 공부를 하고 오시는 것이 더 효율적으로 공부를 하실 수 있을 것 같습니다.

<Servlet>부분을 살펴보면 이것저것 설정 정보가 있다는것을 볼 수 있습니다. 서블릿의 이름과 파리미터를 보시면 대강 이해를 하실수 있을 것입니다. struts-config 파일의 정보라든지 debug 정보 출력 정도라는지...
<Servlet-mapping>부분을 보면 요청이 어떻게 들어왔을 때 Struts로 처리를 할 것인지 적혀 있는 부분입니다.
xxx.do 로 호출 될 경우에만 Struts로 처리 한다는 이야기 입니다.

4. Struts-Config 파일 설정
web.xml 파일 설정이 끝나으면 이제 struts-config 파일을 만들어야 합니다.

사용자 삽입 이미지

설정 정보 파일은 web.xml에서 지정한 위치와 파일이름으로 생성해 주시면 됩니다.
struts-config.xml파일을 생성하시고 내용을 다음과 같이 입력 하시면 Struts 설치는 끝이 납니다.

사용자 삽입 이미지

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
          "http://struts.apache.org/dtds/struts-config_1_3.dtd">

<struts-config>
    <form-beans />
    <global-forwards />
    <action-mappings />
</struts-config>

struts-config.xml
Struts 설치는 여기까지 이며~ 이 다음에 Struts 설치 한것을 테스트 해 보도록 하겠습니다.


 

이올린에 북마크하기(0) 이올린에 추천하기(0)
Trackback 0 Comment 0
2007/05/22 21:51

MyEclipse에서 Xdoclet을 이용하여 sesstion bean 만들기 For weblogic 8 #2

MyEclipse에서 Xdoclet을 이용하여 sesstion bean 만들기
For weblogic 8 #2

http://www.definejava.net/ @ ALT

MyEclipse에서 Xdoclet을 이용하여 sesstion bean 만들기 For weblogic 8 #1에서 Xdoclet을 이용하여 배포에 필요한 xml과 class 파일을 생성하였습니다.
이제 실제로 Weblogic Server에 Application을 배포하여 이것이 잘 돌아가는지 확인 해 보겠습니다.
우선 MyEclipse에 Weblogic 서버 설정이 되어있어야 합니다.
설정 하는 방법은 우선 따로 정리하지 않고 나중에 다시 강좌를 한개 더 쓰겠습니다.
설정이 되어있다는 가장하에 진행하도록 하겠습니다.

  • Server정보에 WebLogic 8 이 있는지 확인하고 마우스 오른쪽 버튼을 누르고 Manage Deployment를 선택합니다.
    Server Deployments 폼이 나타나면 add를 클릭한 뒤 Project에서 HelloEJB를 선택 한 뒤 Finish를 누릅니다.

사용자 삽입 이미지

  • Deploy가 완료 되면 OK 버튼을 누르고 Weblogic 8 왼쪽에 + 버튼을 눌러 helloEJB Application이 등록되었는지 확인합니다.

사용자 삽입 이미지

  • Deploy된 helloEJB 밑에 helloEJBEJB 프로젝트와 helloEJBWEB 프로젝트가 있음을 알 수 있습니다.
  • Weblogic 관리자 화면에도 배포가 잘 되었는지 확인 해 봅니다.

사용자 삽입 이미지


이제 JSP 또는 JAVA 파일을 만들어서 방금 만든 EJB를 사용 해 보겠습니다.
Web Project를 미리 만들었기 떄문에 JSP에서 EJB를 확인 해 보겠습니다.

helloEJBWeb 프로젝트에서 helloEJB01.jsp 파일과 helloEJB02.jsp 파일을 만듭니다.
01파일은 로컬에서 EJB를 사용할 때 그리고 02는 원격지에서 EJB를 사용할 때의 예제 입니다.

helloEJB01.jsp와 helloEJB02.jsp에 다음과 같이 입력합니다.
helloEJB01.jsp

helloEJB01.jsp 시작


helloEJB02.jsp

helloEJB02.jsp 시작


이제 브라우져를 확인 하겠습니다. debug 모드로 서버를 시작하셨다면 따로 deploy를 다시 안해 주셔도 자동으로 jsp파일을 deploy 할 것입니다.

브라우져 주소창에 http://localhost:7001/helloEJBWeb/helloEJB01.jsphttp://localhost:7001/helloEJBWeb/helloEJB02.jsp 입력 하시고 Hello World가 뜨면 성공한 것 입니다.


이올린에 북마크하기(0) 이올린에 추천하기(0)
Trackback 0 Comment 7
2007/05/12 10:57

정적 변수를 선언하는 방법들

정적 변수를 선언하는 방법


static을 이용하여 정적 변수를 선언할 떄 대부분 어떻게 사용하는가?

public class StaticTest
{
 private static int SIZE= 10;
 private static int[] myStatic = new int[SIZE];
}

대부분 이렇게 사용할 것이다.

myStatic이라는 배열을 만들었다. 그렇다면 이 myStatic에 값을 할 당할때 어떻게들 사용하는가?
myStatic은 배열이다. 배열에 값을 할당 할때 과연 어떻게 할 수 있을까?(반복문을 이용하는 방법중)
생성자를 만드는 방법도 있을것이고 메인메소드나 기타메소드에서 값을 할당 받는경우도 있다.
가장 쉽게 생각한 방법이 다음과 같은 두가지 방법일 것이다.

ex1)

more..

ex2)

more..



ex1같은 경우 main 메소드 같은 곳에서 처음 한번만 초기화 값을 넣는 방법과 ex2처럼 생성자를 만들어 객체를 생성하게 하여 사용하는 방법이 있을 것이다.
(필자는 두가지 방법밖에 몰랐었다. 하긴 지금은 몇가지를 더 알고 있으니깐 이글을 쓰는거겠지만...;;)

ex1 같은 경우를 보자! 일반 Application에서는 main메소드를 호출 하기 때문에 단 1번만 호출되면서 값이 활당된다. 그렇다면 웹어플리케이션에서는 어떨까?
당연히 힘들다.(불가능 한것은 아니다. init가 있기 때문에) web.xml을 수정하여하고 이래저래 복잡하다.
ex2 같은경우를 보자! 이와 같은 방법은 객체를 생성하여야 한다. 객체 생성으로 그만큼의 공간을 잡아 먹는 샘이다. 불필요한 공간을 계속 잡고 있을 테니 조금 문제가 될수있다.

두가지의 문제점을 해결 할 수 있는 방법이 필자가 소개할려고 하는 ex3 이다.
아는 사람도 많이 있겠지만 모르는 사람도 많을 것 같다.

바로 static block을 이용하는 방법이다. ex3을 보도록 하자!
ex3)

more..


ex3을 보면 static 블럭에 의해서 값들이 초기화 된다. 즉 객체 생성도 필요없고 특정 메소드에서 호출 할 필요도 없다는것이다.
이해가 잘 안된다면 static의 생성자 개념이라고 생각하면 될것이다. 물론 생성자는 아니다. 그냥 생각만 그렇게 하라는것이다.

오랜만에 강좌를 쓰다보니 앞뒤가 하나도 안 맞게 되었다. 다음에는 더 좋은 내용을 적어보도록해야겠다^ㅡ^


 

이올린에 북마크하기(0) 이올린에 추천하기(0)

'Define Java > J2SDK' 카테고리의 다른 글

정적 변수를 선언하는 방법들  (3) 2007/05/12
클래스? 인스턴스? 속성? 메소드? 객체?  (0) 2007/02/21
자바 예외처리(간단)  (1) 2007/02/21
자바의 접근제한자(한정자)  (1) 2007/02/14
상속  (4) 2007/02/13
생성자  (3) 2007/02/13
Trackback 1 Comment 3
2007/02/21 09:17

자바 예외처리(간단)

예외처리

의도한대로 프로그램이 진행되지 않고 다른 상황으로 흐름이 진행되는 상황을 말한다.

이런 예외가 발생했을 때 적절한 조취를 취해줄 수 있는 절차를 구현하도록 문법을 정해놓은 것이 예외처리이다.

에러의 종류

1. 문법에러(Syntax Error)

컴파일시 자바 컴파일러가 체크하기 때문에 쉽게 수정 할 수 있다.

2. 실행에러(Runtime Error)

1) 논리에러

개발자가 프로그램을 작성을 잘못하여 다른 결과가 나오는 것을 말한다.

2) 시스템에러

개발자의 의지와는 상관 없는 에러 수정을 할 수 없다. (Server Down)

3) 예외사항

예외사항은 정상적으로 프로그램이 동작하는 과정에서 만날 수 있는 에러를

말한다. 예를 들어 파일을 찾아서 열어야 하는데 없는 경우 같은 것이

속한다.

자바에서의 예외처리 클래스 (Handle Or Declare)

자바에서 예외 처리의 최상위 클래스는 java.lang.Throwable 클래스이다.

자바에서 예외를 직접 처리 하는 방법(Handle)과 예외 처리를 자신을 호출한 다른 곳으로 던지는 방법(Declare = Call Stack Mechanism) 있다.

직접 처리 방식은 try / catch / finally 구문을 사용하고 호출한 곳으로 던지는 방법은 throw / throws 구문을 사용한다.

throws

throws는 메소드나 생성자를 수행할 때 발생하는 exception을 선언할 때 사용하는 keywrod

throw

throw 는 실제로 exception을 낼 때 할 때 사용하는 keyword

이올린에 북마크하기(0) 이올린에 추천하기(0)

'Define Java > J2SDK' 카테고리의 다른 글

정적 변수를 선언하는 방법들  (3) 2007/05/12
클래스? 인스턴스? 속성? 메소드? 객체?  (0) 2007/02/21
자바 예외처리(간단)  (1) 2007/02/21
자바의 접근제한자(한정자)  (1) 2007/02/14
상속  (4) 2007/02/13
생성자  (3) 2007/02/13
Trackback 51 Comment 1
2007/02/14 13:25

자바의 접근제한자(한정자)

Public

같은 클래스, 하위클래스, 또는 같은 패키지 내에 있는 어떤 클래스에서도 접근할 수 있습니다. 이 접근 권한은 클래스 또는 객체의 외부 인터페이스를 제공해 줄 때 주로 사용합니다.

Private

같은 클래스 내에서만 접근가능 합니다. 다시 말해서, 이 접근 권한으로 지정된 변수 또는 메소드를 다른 객체에서 참조하거나 사용하는 것이 불가능하고, 자신의 클래스 내에 있는 메소드에서만 참조하거나 사용할 수 있습니다. 클래스가 제공하는 기능을 내부적으로 구현할 때 주로 사용하고, 이렇게 함으로써 완벽한 정보은닉이 가능합니다.

Protected

자바에서 정의된 클래스들은 기본적으로 하나의 그룹 단위 또는 묶음단위로써 유지되는데, 이를 패키지라 합니다. 다시 말해서 패키지는 클래스들의 그룹이라 볼 수 있습니다. protected 접근지정자를 이용하면 같은 클래스, 하위클래스, 또는 같은 패키지 내의 모든 클래스에서 접근가능 합니다.

생략(Default)

같은 클래스 또는 같은 패키지 내에 있는 모든 클래스 내에서 접근가능 합니다. protected 접근지정자와는 달리 하위클래스에서는 접근할 수 없습니다.

Static

객체를 new 연산자를 이용하여 생성했을 때 비로소 메서드니 멤버 변수들이 메모리를 확보하게 됩니다. 따라서 new 연산자로 객체를 생성하지 않고서는 객체의 메서드니 멤버 변수들을 사용할 수 없지만 이러한 절차를 거치지 않고 멤버변수나 메서드를 사용할 수 있게 해줍니다.

Final

final는 상수의 의미를 가지고 있는 키워드로서 클래스와 메서드, 변수에 사용될 수 있으나 각각 의미는 다릅니다.

사용범위

의미

형식

클래스에 사용될 경우

상속 불가

final class 클래스이름 { }

메서드에 사용될 경우

오버라이딩 불가

접근제한자 final 반환형 메소드명() { }

변수에 사용되는 경우

상수

final 데이터형 변수명;

이올린에 북마크하기(0) 이올린에 추천하기(0)

'Define Java > J2SDK' 카테고리의 다른 글

클래스? 인스턴스? 속성? 메소드? 객체?  (0) 2007/02/21
자바 예외처리(간단)  (1) 2007/02/21
자바의 접근제한자(한정자)  (1) 2007/02/14
상속  (4) 2007/02/13
생성자  (3) 2007/02/13
java.lang.Object  (3) 2007/02/13
Trackback 67 Comment 1
2007/02/13 16:56

상속

상속

객체지향 개념은 클래스를 이용하여 새로운 클래스를 생성 또는 정의할 수 있도록 하고 있습니다. 예를 들어, 자동차가 갖는 일반적인 상태와 행동들을 자동차 클래스로 정의해 놓고, 이 자동차 클래스를 확장하여 버스만이 갖는 상태와 행동을 추가하여 버스 클래스를 정의하고, 트럭이 갖는 상태와 행동을 추가하여 트럭 클래스를 정의하고, 그리고 자가용이 갖는 상태와 행동들을 추가하여 자가용 클래스를 정의 할 수 있겠지요. 이 때, 자동차 클래스를 상위클래스(superclass)라 하고 버스 클래스, 트럭 클래스, 자가용 클래스 등을 하위클래스(subclass)라 하며, 이들 간의 관계에 대해 얘기할 때 “하위클래스는 상위클래스를 상속한다(inherit)”라고 합니다. 다시 말해서, 하위클래스는 상위클래스가 갖고 있는 모든 특성들을 상속하여 사용할 수 있다는 것입니다. 이러한 상속 관계를 트리로 나타낼 수 있고, 이 상속관계 트리를 클래스 계층도(class hierarchy)라 합니다.

자바에서의 모든 클래스들은 반드시 어떤 클래스로부터 파생되어야 하는데, 클래스 계층 구조의 최상위 클래스는 바로 java.lang이라는 패키지에 있는 Object라는 클래스입니다. 따라서, 자바에서 정의된 모든 클래스는 기본적으로 Object클래스로부터 파생된 클래스가 되며, 자바 개발자가 만든 클래스가 그 어떤 클래스도 상속하지 않도록 정의하였다면, 자바는 내부적으로 이 사용자 클래스가 Object 클래스를 상속하도록 코드를 추가하여 줍니다. 그러므로, 자바에서 생성된 모든 클래스는 Object 클래스가 가지고 있는 변수와 메소드를 상속하여 그대로 사용할 수 있습니다.

상위클래스와 하위클래스

자바에서 “B 클래스가 A 클래스를 상속한다”고 할 때, 상속관계에 있는 두 클래스의 관계를 정의해 보면, A 클래스를 상위클래스(superclass)라 하고, B 클래스를 하위클래스(subclass)라 합니다. 이 때, 하위클래스는 다른 클래스로부터 파생된 클래스를 나타내며, 상위클래스의 모든 상태(변수)와 행동(메소드)을 상속하게 됩니다. 상위클래스란 클래스 계층구조에서 바로 한 단계 위 클래스를 나타냅니다. 하위클래스는 상위클래스의 외부 인터페이스 및 그 구현에 대해 재사용하므로, 상위클래스의 모든 변수와 메소드에 대해 하위클래스에서 접근 가능한 변수와 메소드는 하위클래스의 것으로 생각할 수 있는데, 하위클래스가 상속할 수 있거나 그렇지 못한 상위클래스의 멤버는 다음과 같습니다.

요것 역시 대학 레포트로 했던~

이올린에 북마크하기(0) 이올린에 추천하기(0)

'Define Java > J2SDK' 카테고리의 다른 글

자바 예외처리(간단)  (1) 2007/02/21
자바의 접근제한자(한정자)  (1) 2007/02/14
상속  (4) 2007/02/13
생성자  (3) 2007/02/13
java.lang.Object  (3) 2007/02/13
for문에 날개를 달아 더 빠르게 만들기  (3) 2007/02/09
Trackback 1 Comment 4
2007/02/13 16:55

생성자

생성자는 인스턴스가 생성될 때 호출되는 '인스턴스 초기화 메서드'이다. 따라서 인스턴스변수의 초기화 작업에 주로 사용되며, 인스턴스 생성 시에 실행되어야 할 작업을 위해서도 사용된다.

생성자 역시 매서드처럼 클래스 내에 선언되며, 구조도 메서드와 유사하지만 리턴값이 없다는 점이 다르다. 그렇다고 해서 생성자 앞에 리턴값이 없음을 뜻하는 키워드 void를 사용하지는 않고, 단지 아무 것도 적지 않는다.

1. 생성자의 이름은 클래스의 이름과 같아야 한다.

2. 생성자는 리턴 값이 없다.

클래스이름(타입 변수명, 타입 변수명, ... ) {

인스턴스 생성 시 수행될 코드, 주로 인스턴스멤버의 초기화 코드를 적는다.

}

Ex

class Card {

Card() { // 매개변수가 없는 생성자

//...

}

Card(String k, int num) { // 매개변수가 있는 생성자

//...

}

}

기본 생성자

생성자가 없는 클래스를 위해서 컴파일러는 매개변수를 가지지 않는 생성자를 자동으로 만들어 준다.

이것도 대학교 레포트로

이올린에 북마크하기(0) 이올린에 추천하기(0)

'Define Java > J2SDK' 카테고리의 다른 글

자바의 접근제한자(한정자)  (1) 2007/02/14
상속  (4) 2007/02/13
생성자  (3) 2007/02/13
java.lang.Object  (3) 2007/02/13
for문에 날개를 달아 더 빠르게 만들기  (3) 2007/02/09
자바 소스파일 분석  (3) 2007/02/09
Trackback 2 Comment 3
2007/02/09 23:37

Spring Framework

Spring Framework



Spring Framework는 2002년에 발간된 Rod Johnson의 저서 "Expert One-on-One J2EE Design and Development"에서 소개된 소스코드와 디자인 패턴들을 다시 정리하면서 2003년 초에 오픈소스로 시작된 프로젝트이다.

스프링의 목적은 J2EE 기반의 Web Applicaion을 쉽게 제작하는 것을 목적으로 하고 있으면서 J2EE 서비스에 종속되지 않고 계층화, 모듈화가 잘 되어 있는 유연한 프레임워크이다.
스프링은 각종 Bean의 생성 하고 관리를 하는 Light Weight 컨테이너로써 다른 프레임워크와 결합에 매우 중요한 역활을 한다.

사용자 삽입 이미지


Core 패키지는 프레임워크의 가장 기본적인 부분이고 당신에게 bean컨테이너를 기능적으로 관리하는 것을 허용하는 의존성 삽입(Dependency Injection-DI)기능을 제공한다. 여기의 기본적인 개념은 프로그램에 따른 싱글톤의 필요성을 제거하는 factory패턴을 제공하고 당신의 실질적인 프로그램 로직으로부터 설정과 의존성 명시를 분리시키는 것을 당신에게 허용하는 BeanFactory이다.

Core 패키지의 가장 위에는 프레임워크 스타일의 방식으로 bean에 접근하기 위한 방법을 제공하는 다소 JNDI-등록기와 유사한 Context 패키지가 위치한다. context패키지는 bean패키지로부터 이 기능을 상속하고 예를 들어 resource bundle와 같은것을 사용하여 텍스트 메시지, 이벤트 위임, 자원-로딩 그리고 예를 들어 서블릿 컨테이너와 같은 것에 의해 투명한 컨텍스트 생성을 위한 지원을 추가한다.

DAO 패키지는 끔찍한 JDBC코딩과 데이터베이스 업체 특정 에러코드의 파싱을 할 필요를 제거하는 JDBC추상화 레이어를 제공한다. 또한 JDBC패키지는 특정 인터페이스를 구현하는 클래스를 위해서 뿐 아니라 당신의 모든 POJOs를 위해서도 선언적인 트랜잭션 관리만큼 프로그램에 따른 방식으로 할수 있는 방법을 제공한다.

ORM 패키지는 JDO, Hibernate 그리고 iBATIS를 포함하는 인기있는 객체-관계 맵핑 API를 위한 통합 레이어를 제공한다. ORM패키지는 사용하여 당신은 앞에서 언급된 간단한 선언적인 트랜잭션 관리와 같은 Spring이 제공하는 다른 모든 기능을 사용해서 혼합하여 모든 O/R매퍼를 사용할수 있다.

Spring의 AOP 패키지는 당신이 정의하는것을 허용하는 AOP 제휴 호환 aspect-지향 프로그래밍 구현물을 제공한다. 예를 들어 코드를 명백하게 분리하기 위한 메소드-인터셉터와 pointcut은 논리적으로 구별되어야 할 기능을 구현한다. 소스레벨 메터데이타 기능을 사용하여 당신은 .NET속성과 다소 비슷한 모든 종류의 행위적 정보를 당신의코드로 결합한다.

Spring의 Web 패키지는 멀티파트기능, 서블릿 리스너를 사용한 컨텍스트 초기화 그리고 웹-기반 애플리케이션 컨텍스트와같은 기본적인 웹-기반 통합 기능들을 제공한다. WebWork나 Struts와 함께 Spring을 사용할때 이것은 그것들과 통합할 패키지이다.

Spring의 웹 MVC 패키지는 웹 애플리케이션을 위한 Model-View-Controller구현물을 제공한다. Spring의 MVC구현물은 어떠한 구현물이 아니다. 이것은 도메인 모델 코드와 웹폼(Web forms)사이의 분명한 구분을 제공하고 유효성체크와 같은 Spring프레임워크의 다른 모든 기능을 사용하도록 당신에게 허용한다.

* 각 모듈 설명에 대한 출처는 http://openframework.or.kr/ 입니다.

이올린에 북마크하기(0) 이올린에 추천하기(0)

'Define Frameworks > Sping' 카테고리의 다른 글

Spring Framework  (2) 2007/02/09
Trackback 67 Comment 2
2007/02/09 19:44

for문에 날개를 달아 더 빠르게 만들기

For문을 더욱더 빠르게~



1. 임시로 데이터를 저장한다.
for(int i=0; i<10; i++)
{
 countArr[0] += 10;
}

위와 같은 경우 반복문이 돌때마다 배열에 접근하게 된다.
이 경우 JVM이 배열 요소에 접근이 가능 Index인지 검사를 하므로 그 만큼 속도가 느려지게 된다.
int temp = countArr[0];
for(int i=0; i<10; i++)
{
 temp  += 10;
}
countArr[0] = temp;

2. 비교값에 메소드를 사용하지 말라.
for(int i=0; i<list.size(); i++)
위의 예제에서 보면 종료 조건이 i<list.size() 즉 리스트의 size를 가져오는 메소드를 호출 시킨다.
이 경우 반복 될때마다 size() 메소드를 호출 시키므로 그 만큼 속도가 느려질 수 있다.
int cnt = list.size();
for(int i=0; i < cnt; i++)

3. 반복문 내에 객체와 객체를 비교 할 때는 캐논화 하여 사용한다.
반복문 안에서 If문을 쓰는 경우가 많다. 그 중 객체와 객체를 비교 할 때는 일반적으로 캐논화하여 사용하는것이 더 빠르다.
if(object.getClass().getName().equals(java.lang.String"))

Application을 제작 하다 보면 위와 같이 비교를 많이 해야 될수도 있다. 그럴경우 static과 final을 이용하여 미리 한 객체에 선언해 두고 이것을 가져다 쓰는것이 훨씬 효율적이다.

public static final Class STRING_CLASSNAME = java.lang.String.class;
if(object.getClass() == STRING_CLASSNAME)

사실 필자도 캐논화를 잘 하지는 않는다-.-;;

4. 반복문에서 배열에 접근할 때.
for(int i=0; i<10; i++)
{
System.out.println(strArray[i]);
}
가장 일반적인 예이다. 이것은 어떠한가?
for(int i=0; i<10;)
{
System.out.println(strArray[i++]);
}
사실 이 코드는 위에 것과 별 차이가 없다. 혹시나마 이걸 보고 "아 이러면 빠르겠구나~" 하고 생각한 사람이 있다면 다시 잘 생각해 보길 바란다.-_-

이올린에 북마크하기(0) 이올린에 추천하기(0)

'Define Java > J2SDK' 카테고리의 다른 글

상속  (4) 2007/02/13
생성자  (3) 2007/02/13
java.lang.Object  (3) 2007/02/13
for문에 날개를 달아 더 빠르게 만들기  (3) 2007/02/09
자바 소스파일 분석  (3) 2007/02/09
자바코드의 구성  (7) 2007/02/09
Trackback 1 Comment 3