사용화 버전이라 달러를 주고 사용해야 하지만 social 버전은 무료로 가용이 가능하다.
social 버전은 페이스북과 트윗 아이디만 있으면
https://social.jrebel.com/dashboard
페이지에서 로그인 한뒤 무료 라이센스를 발급받을수 있다.
사용이유.
class 파일을 변경할때마다 서버가 재가동 되는 시간만 줄일수 있어도 프로그램 개발시 많은 시간을 줄일수가 있다. 즉, 퍼블리싱 되는 시간까지 조절 할 수 있다.
java파일 뿐만아니라 플러그인을 통해 스트럿츠, 아이바티스(마이바티스),스프링 등등 xml도 런타임에 적용 할 수 있다
[출처] [jrebel] 자바 클래스 변경시 ㅁ서버 재기동 ㅇ없이 적용하기|작성자 데
http://zeroturnaround.com/jrebel/eclipse-jrebel-tutorial/
Spring Transaction rollback @Annotation 처리 (선언적 트랜잭션 처리) - 작성중..

물론 학부시절에는 롤백보다는 일단 life cycle 을 익히고 실행/동작하는것에 focus가 맞춰있다보니 이젠 이런 내용들을 .....
선언적 트랜잭션
2. 설정 파일이나 어노테이션을 이용해서 트랜잭션의 범위, 롤백의 규칙을 정의
방법 :
1.<tx:advice> 태그를 이용한 트랜잭션 처리
여기서 소개할 트랜잭션 처리 방식은 2.TransactionProxyFactoryBean과 3.@Transaction 을 이용한 두가지 방법이다.
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocations">
<list>
<value>classpath:ibatis/sql-map-config.xml</value>
</list>
</property>
<property name="useTransactionAwareDataSource">
<value>true</value>
</property>
<property name="dataSource" ref="dataSource" />
</bean>
<!-- Transaction manager for a single JDBC DataSource -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="abstractTxDefinition" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true">
<property name="transactionManager" ref="transactionManager" />
<property name="transactionAttributes">
<props>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="delete*">PROPAGATION_REQUIRED</prop>
<prop key="insert*">PROPAGATION_REQUIRED</prop>
<prop key="add*">PROPAGATION_REQUIRED</prop>
<prop key="remove*">PROPAGATION_REQUIRED</prop>
<prop key="clear*">PROPAGATION_REQUIRED</prop>
<prop key="rename*">PROPAGATION_REQUIRED</prop>
<prop key="move*">PROPAGATION_REQUIRED</prop>
<prop key="import*">PROPAGATION_REQUIRED</prop>
<prop key="set*">PROPAGATION_REQUIRED</prop>
<prop key="create*">PROPAGATION_REQUIRED</prop>
<prop key="store*">PROPAGATION_REQUIRED</prop>
<prop key="import*">PROPAGATION_REQUIRED</prop>
<prop key="request*">PROPAGATION_REQUIRED</prop>
<prop key="approve*">PROPAGATION_REQUIRED</prop>
<prop key="start*">PROPAGATION_REQUIRED</prop>
<prop key="execute*">PROPAGATION_REQUIRED</prop>
<prop key="*confirm*">PROPAGATION_REQUIRED</prop>
<prop key="*report*">PROPAGATION_REQUIRED</prop>
<prop key="*save*">PROPAGATION_REQUIRED</prop>
<prop key="redraft*">PROPAGATION_REQUIRED</prop>
<prop key="report*">PROPAGATION_REQUIRED</prop>
<prop key="apporove*">PROPAGATION_REQUIRED</prop>
<prop key="reject*">PROPAGATION_REQUIRED</prop>
<prop key="redraft*">PROPAGATION_REQUIRED</prop>
<prop key="accept*">PROPAGATION_REQUIRED</prop>
<prop key="copy*">PROPAGATION_REQUIRED</prop>
<prop key="get*">PROPAGATION_REQUIRED</prop>
<prop key="eval*">PROPAGATION_REQUIRED</prop>
<prop key="multi*">PROPAGATION_REQUIRED</prop>
<prop key="handle*">PROPAGATION_REQUIRED</prop>
<prop key="*">PROPAGATION_SUPPORTS, readOnly</prop>
</props>
</property>
</bean>
<!-- DataSource -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<!-- <property name="driverClassName" value="com.p6spy.engine.spy.P6spyDriver" /> -->
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
1.1 TransactionProxyFactoryBean
PROPAGATION_NAME, ISOLATION_NAME,readOnly,timeout,+Exception1,-Exception2
PROPAGATION_NAME :
- PROPAGATION_REQUEST와 같은 트랜잭션 전파 규칙이 위치한다.
- 예외클레스 이름앞에 '+'를 붙이면 해당 예외가 발생하더라도 커밋을 수행.
- '-'를 붙이면 롤백을 수행.
@Transactional
public class TestServiceImpl implements ITestService{
}
'Spring > Source' 카테고리의 다른 글
| Spring Transaction rollback @Annotation 처리 (선언적 트랜잭션 처리) - 작성중.. (0) | 2012/01/17 |
|---|---|
| Ibitis ResultMap XML 자동 생성하기. (0) | 2010/09/14 |
| Mail - Spring JavaMailSender(2/2) - Mail sender Test (0) | 2010/09/14 |
| Spring ApplicationContext (Applacation Bean Test, Spring Bean Call) (0) | 2010/09/08 |
| Spring + Tomcat + junit 테스트 _ 1 (3) | 2008/10/29 |
| Sping freamwork _ v1 셋팅 (setting) Eclipes (0) | 2008/10/20 |
이 개념은 스프링과 상관없이 다양한 프레임 워크에서 활용되고 있는 개념이다.
간단히 말하자면, 객체사이의 의존관계를 객체 자체에서가 아닌 외부 설정을 이용하여 주입을 함으로써
각 객체간의 의존관계를 맺는다는 것이다.
BeanFactory <-ApplicationContext <- WebApplicationContext
일반적으로 다른 클레스의 Method를 호출 할때는 다음과 같이 Instance Variable 하여 객체를 붕어빵 틀에 넣어 찍어 내듯이 new 를 이용하여 객체를 생성하여 사용한다.(일반적인 객체 의존)
@Service(name="testService")
public class TestService{
private TestDao testDao = new TestDao()
public void testMehtod(){
testDao.method();
}
}
하지만 위와 같이 직접 호출 하게 되면 단위테스트가 어려워 진다고 한다.
TestDao 라는 클레스의 명칭이 바뀌게 되기라도 하면, 소스 전체를 수정하고 컴피일을 해야하는 문제가 있다.
또한 DB가 변경 되기라도 하면 이와 관련된 DB Connection 정의 클레스를 수정해줘야 하는 문제도 생길수 있다.
이러한 연관관계를 정립하고 효과적으로 구성 할 수 있는 처리방법이 몇가지 있으나(JNDI, Factory Pattern)
Spring에서는 이것을 외부화 하고, 외부에서 이러한 연관 관계를 규정하고, 해당 클래스에 주입해 주는 개념을 도입하여 사용하는 것. 이것이 바로 DI(IoC)의 핵심이다.
의존성(Dependency) 주입(Injection) DI의 방법에는 세가지 방법이 있다.
셋터 주입(setter), 생성자 주입(constructor), 메소드 주입(method) 으로 나뉜다.
다음은 셋터 주입과 생성자 주입 예제이다.
*Class
@Controller
public class TestController{
private ITestService testServiceImpl;
private ITestDao testDaoImpl;
//Setter Injection
public setTestService(ITestService testServiceImpl){
this.testServiceImpl = testServiceImpl;
}
//Constructor Injection
public TestController(ITestDao testDaoImpl){
this.testDaoImpl = testDaoImpl;
}
}
<bean id="testController" class="www.dongbu.com.web.test.TestController">
<constructor-arg>
<ref local="testDaoImpl" />
</constructor-arg>
<property name="testServiceImpl" ref="testServiceImpl" />
</bean>
<bean id="testServiceImpl" class="com.dongbu.com.web.test.service.impl.TestServiceImpl">
<bean id="testDaoImpl" class="com.dongbu.com.web.test.dao.impl.TestDaoImpl">
DI개념만... 실행에 필요한 예저 Code는 생략...
AOP 관점지향 프로그래밍.. 이것을 어찌 하리오.
일단 시간이 되면 @Transaction 처리
'Spring' 카테고리의 다른 글
| Spring DI(Dependency Injection) 의존 - 내용수정중 (0) | 2012/01/09 |
|---|---|
| Spring Quartz 1-2 (0) | 2010/12/14 |
| Spring Quartz 1-1 (0) | 2010/12/14 |
| Spring Timer Sample (0) | 2010/12/14 |
310018
내용을 보시려면 비밀번호를 입력하세요.
멀티정렬일 경우....
implements Comparator<T>
Comparator<CompetencyEvaluationMasterModel> comparator = new Comparator<CompetencyEvaluationMasterModel>() {
public int compare(CompetencyEvaluationMasterModel o1, CompetencyEvaluationMasterModel o2) {
return o1.getCa_yyyy().compareTo(o2.getCa_flag());
}
};
Collections.reverse(yyyyFlagList);
Collections.sort(yyyyFlagList, comparator);
Prev

Rss Feed