微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 基于Spring MVC注释的多模块项目配置

我实现了使用 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;
    }
}

解决方法

如果我是你,我将在父母中创建第三个模块,并将两个已经有新的孩子作为依赖关系.然后,您只需要根据需要为新模块配置弹簧.

原文地址:https://www.jb51.cc/java/122552.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐