我实现了使用
Spring MVC,hibernate和Jax-RS实现的两个基于maven的独立Web项目.
但是我的要求改变了,现在我需要将项目作为一个子项目合并到另一个项目,这是我们的父项目.所以我使用maven多模块配置.
但是我的要求改变了,现在我需要将项目作为一个子项目合并到另一个项目,这是我们的父项目.所以我使用maven多模块配置.
项目1:家长项目
<packaging>pom</packaging> <modules> <module>../child1</module> <module>../child2</module> </modules>
孩子1:
<packaging>jar</packaging> <parent> <groupId>com.xyz.alpha</groupId> <artifactId>parent</artifactId> <version>0.0.1-SNAPSHOT</version> <relativePath>../parent</relativePath> </parent>
孩子2:
<packaging>jar</packaging> <dependency> <groupId>com.xyz.alpha</groupId> <artifactId>child1</artifactId> <version>2.0.2</version> </dependency> <parent> <groupId>com.xyz.alpha</groupId> <artifactId>parent</artifactId> <version>0.0.1-SNAPSHOT</version> <relativePath>../parent</relativePath> </parent>
但是我需要在java中配置项目,以便它将扫描父项的组件以及子项目和执行项目.
目前我为每个项目单独配置:
AppIntializer.java
public class AppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { @Override protected Class<?>[] getRootConfigClasses() { return new Class[] { AppConfig.class }; } @Override protected Class<?>[] getServletConfigClasses() { return null; } @Override protected String[] getServletMappings() { return new String[] { "/" }; } }
AppConfig.java
@Configuration @EnableWebMvc @ComponentScan(basePackages = "com.x.y") public class AppConfig extends WebMvcConfigurerAdapter{ @Bean public ViewResolver viewResolver() { InternalResourceViewResolver viewResolver = new InternalResourceViewResolver(); viewResolver.setViewClass(JstlView.class); viewResolver.setPrefix("/WEB-INF/views/"); viewResolver.setSuffix(".jsp"); return viewResolver; } @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**"); } @Override public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { configurer.enable(); } @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/resources/**").addResourceLocations("/resources/"); } }
HibernateConfiguration.java
@Configuration @EnableTransactionManagement @ComponentScan({ "com.x.y.configuration" }) @PropertySource(value = { "classpath:application.properties" }) public class HibernateConfiguration { @Autowired private Environment environment; @Bean public LocalSessionfactorybean sessionFactory() { LocalSessionfactorybean sessionFactory = new LocalSessionfactorybean(); sessionFactory.setDataSource(dataSource()); sessionFactory.setPackagesToScan(new String[] { "com.x.y.model" }); sessionFactory.setHibernateProperties(hibernateProperties()); return sessionFactory; } @Bean public DataSource dataSource() { DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName(environment.getrequiredProperty("jdbc.driverClassName")); dataSource.setUrl(environment.getrequiredProperty("jdbc.url")); dataSource.setUsername(environment.getrequiredProperty("jdbc.username")); dataSource.setPassword(environment.getrequiredProperty("jdbc.password")); return dataSource; } private Properties hibernateProperties() { Properties properties = new Properties(); 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")); return properties; } @Bean @Autowired public HibernateTransactionManager transactionManager(SessionFactory s) { HibernateTransactionManager txManager = new HibernateTransactionManager(); txManager.setSessionFactory(s); return txManager; } }
解决方法
如果我是你,我将在父母中创建第三个模块,并将两个已经有新的孩子作为依赖关系.然后,您只需要根据需要为新模块配置弹簧.