본문 바로가기

Spring 구동 원리

java by 낼스 2014. 5. 7.
※ spring 구동 원리
    https://www.google.co.kr/search?q=spring+%EA%B5%AC%EB%8F%99+%EC%9B%90%EB%A6%AC&oq=spring+%EA%B5%AC%EB%8F%99+%EC%9B%90%EB%A6%AC&aqs=chrome..69i57.12185j0j4&sourceid=chrome&espv=210&es_sm=122&ie=UTF-8
    ▼
    https://www.okjsp.net/seq/162227
    ▼
    http://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/html/mvc.html

※ spring framework 강좌
    https://www.google.co.kr/search?q=spring+%EA%B5%AC%EB%8F%99+%EC%9B%90%EB%A6%AC&oq=spring+%EA%B5%AC%EB%8F%99+%EC%9B%90%EB%A6%AC&aqs=chrome..69i57.12185j0j4&sourceid=chrome&espv=210&es_sm=122&ie=UTF-8#newwindow=1&q=spring%20framework%20%EA%B0%95%EC%A2%8C&safe=off
    ▼
    http://www.javajigi.net/pages/viewpage.action?pageId=5614
    ▼

■ Spring ?
    ※ 참고 : http://www.ksug.org/152

■ Spring 강좌 <-- 나중에 살펴봐야함.
    http://blog.daum.net/openeidos/8879784

■ Spring 강좌(javaproject.co.kr)
    http://javaproject.co.kr/web/board.list.do?boardMainNo=1001&sDiv=1&sStr=%5Bspring
    1. DB 데이터 조회
        ※ dao 와 service을 생성한다.
        1.1. 순서
            Controller -> Service - > DAO -> SQL


■ 스프링의 대표 기능 AOP 적용 예제
    ( http://javaproject.co.kr/web/board.view.do?boardMainNo=1001&boardNo=542&sDiv=1&sStr=[spring&thisPageNo= )
    AOP 는 쉽게 말해 메소드 실행 전/후에 어떤 처리를 할때 사용됩니다.
    다음은 AOP 사용 예제 입니다.

    1.context.xml 에서 bean 추가
        <bean id="aopTest" class="kr.co.javaproject.AopTest"/>
        <aop:config >
         <aop:advisor advice-ref="aopTest" pointcut="execution( * kr.co.javaproject.*Controller.*(..) )" order="1"/>
        </aop:config>
        //kr.co.javaproject 안에 모든 Controller 적용

    2.kr.co.javaproject.AopTest 추가
        public class AopTest implements MethodInterceptor{

         @Override
         public final Object invoke(MethodInvocation invocation) throws Throwable {

          //메소드 실행전 처리 코딩 추가
          System.out.println( "before ----- test ");
          Object obj = invocation.proceed(); // 메소드 실행

          //메소드 실행후 처리 코딩 추가
          System.out.println( "after ----- test ");
          return obj
         }
        }

■ myBatis 에서 #{value} 와 ${value} 차이
    ( http://javaproject.co.kr/web/board.view.do?boardMainNo=1001&boardNo=1297&sDiv=1&sStr=&thisPageNo=1 )

    1.#{value}
        변수 이고 실제 쿼리에서 '(호따움표)가 붙습니다.
        PreparedStatement 에서 ? 에 들어갈 값입니다.
        ex)
         select * from board where id=#{id}
        이렇게 되어 있다면
        myBatis 내부적으론

        String sql = "select * from board where id = ?"
        PreparedStatement  ps = ....
        .
        .
        ps.setString(1,id)
    2.${value}
        상수 이고 '(호따움표)가 붙지 않습니다. (sql 인젝션 위험이 있음)
        sql 문장을 만듭니다.
        동적 테이블,컬럼에도 사용됩니다.
        ${myColumn} = #{value}이런식도 가능합니다.

        select * from board where id='${id}'
        이렇게 되어 있다면
        myBatis 내부적으론

        String sql = "select * from board where id = 'aaa'"//sql자체를 만듬
        PreparedStatement ..
        .


댓글