java – 基于Spring MVC注释的多模块项目配置
发布时间:2020-12-14 05:27:14 所属栏目:Java 来源:网络整理
导读:我实现了使用 Spring MVC,hibernate和Jax-RS实现的两个基于maven的独立Web项目. 但是我的要求改变了,现在我需要将项目作为一个子项目合并到另一个项目,这是我们的父项目.所以我使用maven多模块配置. 项目1:家长项目 packagingpom/packaging modules module.
我实现了使用
Spring MVC,hibernate和Jax-RS实现的两个基于maven的独立Web项目.
但是我的要求改变了,现在我需要将项目作为一个子项目合并到另一个项目,这是我们的父项目.所以我使用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; } } 解决方法
如果我是你,我将在父母中创建第三个模块,并将两个已经有新的孩子作为依赖关系.然后,您只需要根据需要为新模块配置弹簧.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |