1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
|
@Configuration(defaultLazy = Lazy.TRUE)
@ComponentScan("fax")
@ImportXml(locations = "applicationContext-fax2u-test.xml")
@AnnotationDrivenTx(transactionManager = "transactionManager")
public class ApplicationConfigTest {
@Bean
public FaxPile faxPile() {
FaxPile faxPile= FaxPile.createInstance();
faxPile.start();
return faxPile;
}
@Bean
public ILogService logService() {
return new LogService();
}
@Bean
public IFaxTools faxTools() {
return new FaxTools();
}
@Bean
public IFaxService faxServiceTarget() {
return new FaxService();
}
@Bean
public IFaxDao faxDao() {
return new FaxDaoImpl(sessionFactory());
}
@Bean
public IFileManager fileManager() {
return new FileManager();
}
@Bean
public IJobHandler jobHandler() {
return new JobHandler();
}
@Bean
public IMailService mailService() {
return new MailService();
}
@Bean
public FaxServiceInterceptor faxServiceInterceptor() {
return new FaxServiceInterceptor();
}
@Bean
public ProxyFactoryBean faxService() {
ProxyFactoryBean proxyFactoryBean = new ProxyFactoryBean();
try {
proxyFactoryBean.setProxyInterfaces(new Class[]{IFaxService.class});
proxyFactoryBean.setTarget(faxServiceBean());
proxyFactoryBean.setInterceptorNames(new String[]{"faxServiceInterceptor"});
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return proxyFactoryBean;
}
public TransactionProxyFactoryBean faxServiceBean() {
TransactionProxyFactoryBean transactionProxyFactoryBean = transactionProxy();
transactionProxyFactoryBean.setTarget("faxServiceTarget");
transactionProxyFactoryBean.setTransactionAttributeSource(new AnnotationTransactionAttributeSource());
return transactionProxyFactoryBean;
}
@Bean
public HibernateTransactionManager transactionManager() {
HibernateTransactionManager hibernateTransactionManager = new HibernateTransactionManager();
hibernateTransactionManager.setSessionFactory(sessionFactory());
return hibernateTransactionManager;
}
public TransactionProxyFactoryBean transactionProxy() {
TransactionProxyFactoryBean transactionProxyFactoryBean = new TransactionProxyFactoryBean();
transactionProxyFactoryBean.setTransactionManager(transactionManager());
Properties properties = new Properties();
properties.put("*", "PROPAGATION_REQUIRED");
transactionProxyFactoryBean.setTransactionAttributes(properties);
return transactionProxyFactoryBean;
}
@Bean(scope = "singleton")
public SessionFactory sessionFactory() {
AnnotationSessionFactoryBean annotationSessionFactoryBean = new AnnotationSessionFactoryBean();
annotationSessionFactoryBean.setConfigLocation(new ClassPathResource("test.hibernate.cfg.xml"));
Properties props = new Properties();
props.put("hibernate.c3p0.autoCommitOnClose", true);
props.put("hibernate.autoCommitOnClose", true);
props.put("hibernate.autocommit", true);
props.put("hibernate.connection.release_mode", "auto");
props.put("hibernate.transaction.auto_close_session", true);
annotationSessionFactoryBean.setHibernateProperties(props);
try {
annotationSessionFactoryBean.afterPropertiesSet();
} catch (Exception e) {
e.printStackTrace();
}
return annotationSessionFactoryBean.getConfiguration().buildSessionFactory();
}
} |