private void initializeProxy() throws Exception {
		if (proxyFactory == null) {
			proxyFactory = new ProxyFactory();
			TransactionInterceptor advice = new TransactionInterceptor(transactionManager,
					PropertiesConverter.stringToProperties(
							"create*=PROPAGATION_REQUIRES_NEW,"
							+ isolationLevelForCreate
							+ "\ngetLastJobExecution*=PROPAGATION_REQUIRES_NEW,"
							+ isolationLevelForCreate
							+ "\n*=PROPAGATION_REQUIRED"));
			if (validateTransactionState) {
				DefaultPointcutAdvisor advisor = new DefaultPointcutAdvisor(
						new MethodInterceptor() {
					@Override
					public Object invoke(MethodInvocation invocation) throws Throwable {
						if (TransactionSynchronizationManager.isActualTransactionActive()) {
							throw new IllegalStateException(
									"Existing transaction detected in JobRepository. "
											+ "Please fix this and try again (e.g. "
											+ "remove @Transactional annotations from "
											+ "client).");
						}
						return invocation.proceed();
					}
				});
				NameMatchMethodPointcut pointcut = new NameMatchMethodPointcut();
				pointcut.addMethodName("create*");
				advisor.setPointcut(pointcut);
				proxyFactory.addAdvisor(advisor);
			}
			proxyFactory.addAdvice(advice);
			proxyFactory.setProxyTargetClass(false);
			proxyFactory.addInterface(JobRepository.class);
			proxyFactory.setTarget(getTarget());
		}
	}
A {@link org.springframework.beans.factory.FactoryBean} for creating an instance of
{@link org.springframework.xd.dirt.plugins.job.support.JobLaunchingJobRepository}

@author Michael Minella
spring-xd-dirt/src/main/java/org/springframework/xd/dirt/plugins/job/support/JobLaunchingJobRepositoryFactoryBean.java