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


DBConnectionMgr.java


객체로 생성후 사용


DBConnectionMgr pool = new DBConnection();

conn = pool.connection(); 으로 연결


다 쓴후 pool.close(conn); 이런식으로 닫음 

끝!

Posted by 앗뜨거
,
728x90

포인트

문자형 UTF-8 인코딩 하기
java.net.URLEncoder.encode(L_searchword,"UTF-8")


String encStr = java.netURLEncoder.encode("주식", "UTF-8");

sntStr 결과값 = > %EC%A3%BC%EC%8B%9D




JSP페이지에서 문자열 encoding / decofing처리 부분 예제 >>

<%!
    public static void setCookie(HttpServletResponse response, String name, String value) {
        value = java.net.URLEncoder.encode(value);
        Cookie cookie = new Cookie(name, value);
        cookie.setMaxAge(60*60*24*31); // 31일
        response.addCookie(cookie);
    }
    public static String getCookie(HttpServletRequest request, String cookieName) {
        Cookie [] cookies = request.getCookies();
        String value = "";
        for(int i=0;i<cookies.length;i++) {
            if(cookieName.equals(cookies[i].getName())) {
                value = java.net.URLDecoder.decode(cookies[i].getValue());
                break;
            }
        }
        return value;
    }
%>


사용예 >>

    // 쿠키 확인하기
    String tmpStr = "";
    boolean isHit = false;
    tmpStr = getCookie (request, "blog_grade");
    if ( !tmpStr.equals("") ) {
        if ( tmpStr.indexOf("["+L_postno+"]") > -1) isHit = true;
    }


   //쿠키 없으면 생성하기
   if ( !isHit ) {
        tmpStr += "["+L_postno+"]";
        setCookie (response, "blog_grade", tmpStr);
        // DB 처리.
        Sql="update n2_board set b_hit=b_hit+1 where b_idx="+L_num;
        db.executeQuery (Sql);
    }



출처 : http://edit.tistory.com/entry/JSP한글파라미더-UTF-8처리

Posted by 앗뜨거
,