public class ZeusWebApplicationInitializer implements WebApplicationInitializer { public void onStartup(ServletContext container) { WebApplicationContext rootContext = WebApplicationContextUtils.getWebApplicationContext(container); if (rootContext == null) { rootContext = new AnnotationConfigWebApplicationContext(); //((AnnotationConfigWebApplicationContext) rootContext).register(DefaultAppConfig.class); } if (container.getInitParameter("contextConfigLocation") == null) { container.setInitParameter("contextConfigLocation", "classpath:config/applicationContext.xml"); } ContextLoaderListener contextLoaderListener = new ContextLoaderListener(rootContext); container.addListener(contextLoaderListener); //开启页面会话 if (container.getFilterRegistration("SpringOpenEntityManagerInViewFilter") == null) { Filter springOpenEntityManagerInViewFilter = new OpenEntityManagerInViewFilter(); FilterRegistration springOpenEntityManagerInViewFilterRegistration = container.addFilter("SpringOpenEntityManagerInViewFilter", springOpenEntityManagerInViewFilter); springOpenEntityManagerInViewFilterRegistration.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST, DispatcherType.FORWARD, DispatcherType.ASYNC), false, "*.do"); } //web调度器 if (container.getServletRegistration("dispatcher") == null) { DispatcherServlet dispatcherServlet = new DispatcherServlet(); ServletRegistration.Dynamic registration = container.addServlet("dispatcher", dispatcherServlet); registration.setLoadOnStartup(1); registration.setInitParameter("contextConfigLocation", "classpath:config/dispatcher-servlet.xml"); registration.addMapping("*.do"); } //字符编码 if (container.getFilterRegistration("characterEncodingFilter") == null) { CharacterEncodingFilter def = new CharacterEncodingFilter(); def.setEncoding("UTF-8"); FilterRegistration.Dynamic defFilter = container.addFilter("characterEncodingFilter", def); defFilter.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST, DispatcherType.FORWARD, DispatcherType.ASYNC), false, "*.do"); } } }
@Configuration @ComponentScan(basePackages = {"com.zk.zeus"}) @EnableTransactionManagement @PropertySource(value = {"classpath:config/hibernate.properties"}) public class BeansConfig extends WebMvcConfigurerAdapter { @Autowired private Environment environment; private Properties hibernateProperties() { Properties properties = new Properties(); properties.put("hibernate.jdbc.batch_size", environment.getRequiredProperty("hibernate.jdbc.batch_size")); properties.put("hibernate.jdbc.fetch_size", environment.getRequiredProperty("hibernate.jdbc.fetch_size")); properties.put("hibernate.dialect", environment.getRequiredProperty("hibernate.dialect")); properties.put("hibernate.show_sql", environment.getRequiredProperty("hibernate.show_sql")); properties.put("hibernate.format_sql", environment.getRequiredProperty("hibernate.format_sql")); properties.put("hibernate.hbm2ddl.auto", environment.getRequiredProperty("hibernate.hbm2ddl.auto")); properties.put("hibernate.cache.use_second_level_cache", environment.getRequiredProperty("hibernate.cache.use_second_level_cache")); //3.6及以下用provider_class //properties.put("hibernate.cache.provider_class", environment.getRequiredProperty("hibernate.cache.provider_class")); //4.x用factory_class properties.put("hibernate.cache.region.factory_class", environment.getRequiredProperty("hibernate.cache.region.factory_class")); properties.put("hibernate.cache.use_structured_entries", environment.getRequiredProperty("hibernate.cache.use_structured_entries")); properties.put("hibernate.cache.provider_configuration_file_resource_path", environment.getRequiredProperty("hibernate.cache.provider_configuration_file_resource_path")); return properties; } @Bean public LocalSessionFactoryBean sessionFactory() { LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean(); sessionFactory.setDataSource(dataSource()); sessionFactory.setPackagesToScan(new String[] {"com.zk.zeus.**"}); sessionFactory.setHibernateProperties(hibernateProperties()); return sessionFactory; } @Bean public DataSource dataSource() { DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName(environment.getRequiredProperty("hibernate.connection.driver_class")); dataSource.setUrl(environment.getRequiredProperty("hibernate.connection.url")); dataSource.setUsername(environment.getRequiredProperty("hibernate.connection.username")); dataSource.setPassword(environment.getRequiredProperty("hibernate.connection.password")); return dataSource; } @Bean @Autowired public HibernateTransactionManager transactionManager(SessionFactory s) { HibernateTransactionManager txManager = new HibernateTransactionManager(); txManager.setSessionFactory(s); return txManager; } }
测试时需要模拟一个web context
//mock a ServletContext @WebAppConfiguration @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = {BeansConfig1.class}) public class AppConfigTest { @Autowired WebApplicationContext wac; // cached @Autowired MockServletContext servletContext; // cached @Autowired MockHttpSession session; @Autowired MockHttpServletRequest request; @Autowired MockHttpServletResponse response; @Autowired ServletWebRequest webRequest; @Resource(name = "employeeService") EmployeeService service; @Test public void testSaveEmployee() { //AbstractApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class); //EmployeeService service = (EmployeeService) context.getBean("employeeService"); /* * Create Employee1 */ Employee employee1 = new Employee(); employee1.setName("Han Yenn"); //employee1.setDate(new Date(2010, 10, 10)); employee1.setSalary(new BigDecimal(10000)); employee1.setSsn("ssn00000001"); /* * Create Employee2 */ Employee employee2 = new Employee(); employee2.setName("Dan Thomas"); //employee2.setJoiningDate(new LocalDate(2012, 11, 11)); employee2.setSalary(new BigDecimal(20000)); employee2.setSsn("ssn00000002"); /* * Persist both Employees */ service.saveEmployee(employee1); service.saveEmployee(employee2); /* * Get all employees list from database */ List<Employee> employees = service.findAllEmployees(); for (Employee emp : employees) { System.out.println(emp); } /* * delete an employee */ service.deleteEmployeeBySsn("ssn00000002"); /* * update an employee */ Employee employee = service.findBySsn("ssn00000001"); employee.setSalary(new BigDecimal(50000)); service.updateEmployee(employee); /* * Get all employees list from database */ List<Employee> employeeList = service.findAllEmployees(); for (Employee emp : employeeList) { System.out.println(emp); } // context.close(); } }
@Configuration @ComponentScan(basePackages={"com.websystique.spring"}) @EnableTransactionManagement @Import({BeansConfig.class,WebConfig.class}) public class BeansConfig1 extends WebMvcConfigurerAdapter { }
import javax.persistence.EntityManagerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.Environment; import org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver; import org.springframework.orm.jpa.JpaTransactionManager; import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; import org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager; import org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor; import org.springframework.transaction.annotation.EnableTransactionManagement; import org.springframework.transaction.interceptor.MatchAlwaysTransactionAttributeSource; @Configuration @ComponentScan(basePackages = {"com.zk.zeus"}) @EnableTransactionManagement public class ZeusProfileBeansConfig { @Autowired private Environment environment; @Bean public PersistenceAnnotationBeanPostProcessor pab() { return new PersistenceAnnotationBeanPostProcessor(); } @Bean public LocalContainerEntityManagerFactoryBean entityManagerFactory() { LocalContainerEntityManagerFactoryBean emfb = new LocalContainerEntityManagerFactoryBean(); emfb.setPersistenceUnitName("zeus-profile-cassandra"); emfb.setPersistenceUnitManager(persistenceUnitManager()); emfb.setLoadTimeWeaver(new InstrumentationLoadTimeWeaver()); emfb.setPackagesToScan("com.zk.zeus"); return emfb; } @Bean public DefaultPersistenceUnitManager persistenceUnitManager() { DefaultPersistenceUnitManager pum = new DefaultPersistenceUnitManager(); pum.setPersistenceXmlLocations("META-INF/persistence.xml"); /* * Map<String, String> propertyMap = new HashMap<String, String>(); * propertyMap.put(CassandraConstants.CQL_VERSION, CassandraConstants.CQL_VERSION_3_0); * EntityManagerFactory emf = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT, propertyMap); * EntityManager entityManager = emf.createEntityManager(); */ return pum; } public MatchAlwaysTransactionAttributeSource matchAllWithPropReq() { MatchAlwaysTransactionAttributeSource matchResource = new MatchAlwaysTransactionAttributeSource(); //matchResource.setTransactionAttribute(TransactionAttribute.PROPAGATION_REQUIRED); return matchResource; } @Bean @Autowired public JpaTransactionManager txManager(EntityManagerFactory emf) { JpaTransactionManager txManager = new JpaTransactionManager(); txManager.setEntityManagerFactory(emf); return txManager; } // public JndiTemplate jndiTemplate() // { // JndiTemplate JndiTemplate = new JndiTemplate(); // Properties properties = new Properties(); // properties.setProperty("java.naming.factory.initial", "org.apache.naming.java.javaURLContextFactory"); // properties.setProperty("java.naming.factory.url.pkgs", "org.apache.naming"); // return JndiTemplate; // } }
相关推荐
NULL 博文链接:https://latex.iteye.com/blog/900664
NULL 博文链接:https://chyy001.iteye.com/blog/1338488
github下载实在太慢,放一个在这,需要50个字,哇!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!...
spring-beans源码,可以直接导入Eclipse工程里面
Spring Framework 4.3.12 已发布,该版本包含 17 项修复和一些特定的改进,为即将推出的 Spring Boot 1.5.8 打好基础。请注意,Spring Framework 4.x 需要 JDK 6 及以上版本
本文主要介绍使用注解方式配置的spring mvc,之前写的spring3.0 mvc和rest小例子没有介绍到数据层的内容,现在这一篇补上。下面开始贴代码。 文中用的框架版本:spring 3,hibernate 3,没有的,自己上网下。 先说...
import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests; import com.spring.service.UserService; @ContextConfiguration(locations="classpath:applicationContext.xml") public ...
spring5.0.4.RELEASE版jar包【整合版,包含所有的主要jar包】-正式版下载 包含了spring所需要的所有主要jar包、源码和代码api文档 spring-framework-5.0.4.RELEASE-dist.zip
spring源码包,主要包含spring-core,spring-beans,spring-context,spring-aop,spring-aspects等
7.10.4. ThreadLocal目标源 7.11. 定义新的通知类型 7.12. 更多资源 8. 测试 8.1. 简介 8.2. 单元测试 8.3. 集成测试 8.3.1. Context管理和缓存 8.3.2. 测试fixture的依赖注入 8.3.3. 事务管理 8.3.4. 方便的变量 ...
【资源说明】 1、基于springboot+mybatis实现的外卖订餐系统... at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireByType (AbstractAutowireCapableBeanFactory.java:1431)
【项目源码】java京东商城购物网站 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx=...
spring-framework-4.1.0.RELEASE jar和源码下载,官网下载
spring 3.1 源码 org.springframework.aop org.springframework.asm org.springframework.aspects org.springframework.beans org.springframework.context org.springframework.context.support
spring-core-4.3.5.RELEASE-sources.jar (spring 4.3.5源码source),加载在Eclipse里面进行查看。
官网下载的spring-beans源码,经过gradle编译,可直接导入eclipse项目
7.10.4. ThreadLocal目标源 7.11. 定义新的Advice类型 7.12. 更多资源 8. 测试 8.1. 简介 8.2. 单元测试 8.2.1. Mock对象 8.2.2. 单元测试支持类 8.3. 集成测试 8.3.1. 概览 8.3.2. 使用哪个支持框架 ...
在Spring1.2或之前的版本中,实现AOP的传统方式就是通过实现Spring的AOP API来定义Advice,并设置代理对象。Spring根据Adivce加入到业务流程的时机的不同,提供了四种不同的Advice:Before Advice、After Advice、...
spring-beans-groovy原码,可以直接导入Eclipse工程里面