스프링 환경설정 java 버전 


흔히 스프링 환경설정을 xml 파일에 bean 사용하여 설정한다고 생각한다.

하지만 DB 설정만 보더라고 ip,user,password 가 xml에 그대로 노출되기 쉽다. (혹은 paramer클래스 사용)

파라미터로 사용자가 암호화된 값을 넣으면 set 메소드 내부에서는 암호화 된값을 decrypt 작업을 거처 암호화전의

데이터를 만든뒤 클래스 맴버변수에 셋팅한다. 이럴 경우 기존 클래스를 상속받은 새로운 클래스를 계속 생성해야되는

상황이 생긴다. 

기존클래스의 상속받은 새로운 클래스를 만들지 않고 기존 클래스 사용하면서 이러한 설정 정보를 java 코드에 넣어

구현한다면 늘어나는 클래스없이 관리하기 용이하다.



java 클래스가 Spring 환경설정 클래스라는것을 알려주기 위해  

@Configuration  사용

@Bean  어노테이션을 함수위에 언급함으로써 이함수는 Spring에서 사용하는  Bean을 리턴해준다는 것을 언급한다.


위의 어노테이션을 Spring이 읽을수 있게 하려면 환경설정 xml 에 어노테이션을 include 해주면 된다.



'FRAMEWORK > Spring' 카테고리의 다른 글

Spring Batch 개념  (0) 2017.07.17
Spring scheduler 설정 및 사용  (0) 2016.04.12
스프링 이클립스 연동하기  (0) 2015.10.20
aop 예제  (0) 2015.08.24
aop  (0) 2015.08.23
Posted by 양승아
:

mvc - config.xml 환경설정에 bean task 추가,xsi 추가한다.





task beans 태그의 자식태그 추가(id : scheduler 연동)






 @scheduled 어노테이션을 확인해보면 expression이 존재 합니다.
 간단히 설명 하면

  "*" 표시는 항상/모두 를 의미하는 expression
 
 0 20 10 *  *  *
   분   년도 


[참고]스케쥴러 cron 양식

 

초 0-59 , - * / 

분 0-59 , - * / 

시 0-23 , - * / 

일 1-31 , - * ? / L W

월 1-12 or JAN-DEC , - * / 

요일 1-7 or SUN-SAT , - * ? / L # 

년(옵션) 1970-2099 , - * /

* : 모든 값

? : 특정 값 없음

- : 범위 지정에 사용

, : 여러 값 지정 구분에 사용

/ : 초기값과 증가치 설정에 사용

L : 지정할 수 있는 범위의 마지막 값

W : 월~금요일 또는 가장 가까운 월/금요일

# : 몇 번째 무슨 요일 2#1 => 첫 번째 월요일



'FRAMEWORK > Spring' 카테고리의 다른 글

Spring Batch 개념  (0) 2017.07.17
스프링 환경설정 java 버전  (0) 2016.10.05
스프링 이클립스 연동하기  (0) 2015.10.20
aop 예제  (0) 2015.08.24
aop  (0) 2015.08.23
Posted by 양승아
:

이클립스에 스프링 연동하기


1. 이클립스에서 Spring framewowrk 다운받기

이클립스 위에 help -> Eclipse marketplace 클릭



2. 마켓에서  STS 검색

Spring Tool Suit (STS) for Eclipse 3.7.1.RELEASE 를 install  




3. 스프링 프로젝트 생성

우클릭 - New - Spring Project 




4. pox.xml 파일 확인 (Spring 버전확인)

버전 변경이 Spring 레퍼런스 페이지 참고하여 박스 부분 변경하면 됨.!


끝~!!

'FRAMEWORK > Spring' 카테고리의 다른 글

스프링 환경설정 java 버전  (0) 2016.10.05
Spring scheduler 설정 및 사용  (0) 2016.04.12
aop 예제  (0) 2015.08.24
aop  (0) 2015.08.23
Spring @PathVariable 이용하여 parameter 를 url 형식으로 받기  (0) 2015.08.13
Posted by 양승아
:

aop 예제

FRAMEWORK/Spring 2015. 8. 24. 19:30 |

AOP 예제 

 

XML 형식 aop 

sevlet-context.xml 에 

맨위 <beans>에 xmlns:aop="http://www.springframework.org/schema/aop" 추가 한다.


	<!-- XML 형식의 AOP -->
	<beans:bean id="loggingAspect" class="com.iuom.www.aop.LoggingAspect"/>
	
	<aop:config>
	    <aop:pointcut expression="execution(* com.iuom.www..*DAO.*(..))" id="loggingAspectPointCut"/>
	    <aop:aspect ref="loggingAspect">
	        <aop:before method="beforeMethod" pointcut-ref="loggingAspectPointCut"/>
	        <aop:after method="afterMethod" pointcut-ref="loggingAspectPointCut"/>
	        <aop:after-throwing method="errorMethod" throwing="exception" pointcut-ref="loggingAspectPointCut" />
	    </aop:aspect>
	</aop:config>



com.iuom.www..*DAO.*(..)) 이하에 모든 클래스에 pointcut 지정


com.iuom.www..*DAO.*(..)) 이하 클래스는 메소드를 실행하기전에 

aop:before 어드바이스에 의해  loggingAspect 의  beforeMethod 메소드 실행


com.iuom.www..*DAO.*(..)) 이하 클래스는 메소드 실행후

aop:after 어드바이스에 의해 loggingAspect의 afterMethod 실행


aop:after-throwing 에 의해 com.iuom.www..*DAO.*(..) 이하 모든 클래스 메소드가 실행후 에러가 나면

loggingAspect 의 errorMethod 실행




어노테이션 이용한 AOP

@Aspect
@Configuration
public class LoggingAnnotation {

	final private Logger logger = LoggerFactory.getLogger(LoggingAspect.class);
	
	@Pointcut("execution(* com.iuom.www..*Service.*(..))")
	private void pointMethod() {}
	
	@Before("pointMethod()")
	public void testMethod() {
		logger.info("Aspect 로그 Service 체크 시작 ----->");
	}
}




'FRAMEWORK > Spring' 카테고리의 다른 글

Spring scheduler 설정 및 사용  (0) 2016.04.12
스프링 이클립스 연동하기  (0) 2015.10.20
aop  (0) 2015.08.23
Spring @PathVariable 이용하여 parameter 를 url 형식으로 받기  (0) 2015.08.13
[Spring] ehcache 캐싱하기  (0) 2015.08.12
Posted by 양승아
:

aop

FRAMEWORK/Spring 2015. 8. 23. 14:29 |

aop

-기능을 핵심 비지니스 로직과 공통 모듈로 구분하고, 핵심 로직에 영향을 미치지 않고 사이사이에 공통모듈을 효과적으로 잘 끼어 넣도록 잘 끼워넣도록 하는 개발 방법이다.

공통 모듈(보안,로깅 등) 만든후 코드밖에서 이 모듈을 비스니스로직에 삽입하는게 바로 aop 적인 개발

코드 밖에 설정된다는 것이 핵심!


aop 가 사용되는 경우

-간단한 메소드 성능 검사

-트랜잭션 처리

-예외 반환

-아키텍쳐검증

-동기화문제

-락 설정

-예외를 만났을때 재시도하는 애스텍트

-로깅,인증,권한


aop의 구성요소

-조인포인트(joinPoint) : 횡단 관심 모듈의 기능이 삽입되어 동작할 수 있는 실행 가능한 특정위치

-포인트컷(pointCut): 어떤 클래스의 어느 조인토인트를 사용할 것인지를 결정하는 선택 기능

-어드바이스 또는 인터셉터 : 어드바이스는 각 조인포인트에 삽입되어져 동작할 수 있는 코드

인터셉터 : 인터셉터 제인 방식의 aop 툴에서 사용하는 용어로 주로 한 개의 invoke메소드를 가지는

어드바이스의 종류

before advice : 메소드 실행전에 적용되는 실행

after returning advice : 메서드가 정상적으로 실행된 후에 실행(예외를 던지는 상황은 정상적인 상황에서 제외)

after throwing advice : 예외를 발생시킬 때 적용되는 Advice를 정의

Around advice : 메서드 호출 이전, 이후, 예외 발생 등 모든시점에서 적용 가능한 advice 를 정의


-위빙(weaving) 또는 크로스컷팅(crossCutting)

:포인트컷에 의해서 결정된 조인포인트에 지정된 어드바이스를 삽입하는 과정(다른 말로 크로스컷팅)

위빙은 aop가 기존의 핵심 관심 모듈의 코드에 전혀 영향을 주지 않으면서 필요한 횡단 관심 기능 추가할 수 있게 해주는 핵심적인 처리과정이다.

위빙을 처리하는 방법은 후처리기를 통한 코드생성 기술을 통한 방법부터 특별한 컴파일러 사용하는 것

이미 생성된 클래스의 정적인 바이트코드의 변환 또는 실행 중 클래스로더를 통한 실시간 바이트코드 변환

그리고 다이내믹 프록시를 통한 방법까지 매우 다양


-인트로덕션 또는 인터타입선언

:인트로덕션은 정적인 방식의 aop기술

동적인 aop장식을 사용하면 코드의 조인포인트에 어드바이스를 적용해서 핵심관심토드의 동작을 변경할수 없음

인트로덕션은 이에 반해서 기존의 클래스와 인터페이스에 필요한 메소드나 필드를 추가해서 사용할 수있음

oop에서 말하는 오브젝트의 상속이나 확장과는 다른 방식으로 어드바이스 또는 애스팩스를 이용해서

기존클래스에 없는 인터페이스 등을 다이내믹하게 구현해 줄 수 있다.


-애스팩트(aspect)

: 포인트 컷(어디에서) +어드바이스(무엇을할지)+(필요에따라 인트로덕션도포함)

aspect J 와 같은 자바 언어를 확장한 aop에서는 마치 자바의 클래스처럼 에스팩트를 코드로 작성할 수 있다.aop 툴의 종류에 따다서 어드바이와 포인트컷을 각각 일반 자바 클래스로 작성하고 이를 결합한 어드바이저 클래스를 만들어서 사용하는 방법도 있음.



aop 설정 구조


<aop:config>

<aop:pointcut>  :pointcout 설정

<aop:aspect> : aspect 설정

<aop:before> : method 실행 전

<aop:after-returning /> : method 정상 실행 후

<aop:after-throwing /> : method 예외 발생 시

<aop:after /> : method 실행 후 (예외 발생 예부 상관 없음)

<aop:around /> : 모든 시점 적용 가능

</aop:before>

</aop:aspect>

</aop:config>




Posted by 양승아
:

스프링3 부터 지원되는 @PathVariable 대해 알아보자


내가 사용한 경우는 url에 포함된 파마미터값에 호출 페이지를 다르게 하기위해 사용하였다.


예)

url : http://test.aaa.do


aaa page의 파라미터반환 값이 된다. page=aaa


@PathVariable("page")String page) 을 사용하여 url 파라미터를 변수에 저장한다.

만약

url : http://test.do  이라면

@RequestMapping(value={"/test/.do"})

파라미터가 없는 @RequestMapping 으로 호출될것이다.

'FRAMEWORK > Spring' 카테고리의 다른 글

Spring scheduler 설정 및 사용  (0) 2016.04.12
스프링 이클립스 연동하기  (0) 2015.10.20
aop 예제  (0) 2015.08.24
aop  (0) 2015.08.23
[Spring] ehcache 캐싱하기  (0) 2015.08.12
Posted by 양승아
:

EHcache (eh-cache) 캐싱이란?


같은 데이터를 계속 DB에 조회하는 경우가 있다.

이런 경우 메모리나 디스크에 저장하여 DB를 조회하지 않고 메모리를 사용하여 성능을 대폭적으로 향상시킨다.

그래서 분산캐시사용한다. !!!!


EHcache의 주요 특징 

- 경량의 빠른 캐시 엔진

- 확장 - 메모리,디스크 저장 지원, 멀티 CPU 동시 접근에 튜닝

- 분산지원!! - 동기/비동기 복사,피어자동발견

- 높은 품질 


분산캐시란 ? 

서버가 두개면 url 두번 호출하게 되는데 분산캐시는 url 한번 호출한다.


그럼 Spring framework 에서는 어떻게 사용하는지 알아보자.


기본적으로 아래와 같은 작업이 필요하다.

ehcache 설치 -> 캐시 설정 파일 작성 -> cacheManager 생성 ->

cacheManager 로 구한 cache 를 이용한 CRUD -> cacheManager 종료

 

 

ehcache 사용하기 위한 설정


1.스프링 서블릿 설정파일 (servlet.xml) 

<beans>에

xmlns:ehcache="http://ehcache-spring-annotations.googlecode.com/svn/schema/ehcache-spring" 

추가하고 아래 URL를 추가한다.

http://ehcache-spring-annotations.googlecode.com/svn/schema/ehcache-spring

http://ehcache-spring-annotations.googlecode.com/svn/schema/ehcache-spring/ehcache-spring-1.2.xsd



위의 <bean>추가 해주면 서블릿 설정파일에서 할일은 끝!


2. ehcache 설정 파일을 생성( ehcache.xml )


name = 캐시이름

maxElementsInMemory = 최대메모리용량

timeToLiveSeconds = 저장되는 시간(초단위) (3600 :한시간)


3. @Cacheable(cacheName="캐시이름") 을 캐시할 메소드 위에 어노테이션 사용하면 끝!



위와 같이 해주면 getpcBangIps 메소드는 pcBangIps 캐시를 사용하여 한시간마다 메모리에 데이터가 저장된다. 




'FRAMEWORK > Spring' 카테고리의 다른 글

Spring scheduler 설정 및 사용  (0) 2016.04.12
스프링 이클립스 연동하기  (0) 2015.10.20
aop 예제  (0) 2015.08.24
aop  (0) 2015.08.23
Spring @PathVariable 이용하여 parameter 를 url 형식으로 받기  (0) 2015.08.13
Posted by 양승아
: