小编dhy*_*ngh的帖子

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

我实现了两个基于maven的独立Web项目,使用Spring MVC,hibernate和Jax-RS实现.但是我的要求发生了变化,现在我需要将项目作为子项目合并到另一个项目中,这是我们的父项目.所以我使用maven multimodule配置.

项目1:家长项目

<packaging>pom</packaging>
    <modules>
        <module>../child1</module>
        <module>../child2</module>
    </modules>
Run Code Online (Sandbox Code Playgroud)

孩子1:

<packaging>jar</packaging>
    <parent>
        <groupId>com.xyz.alpha</groupId>
        <artifactId>parent</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <relativePath>../parent</relativePath>
    </parent>
Run Code Online (Sandbox Code Playgroud)

孩子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>
Run Code Online (Sandbox Code Playgroud)

但我需要在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[] { "/" };
    }
}
Run Code Online (Sandbox Code Playgroud)

AppConfig.java

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.x.y")
public class AppConfig …
Run Code Online (Sandbox Code Playgroud)

java spring spring-mvc maven multi-module

11
推荐指数
1
解决办法
1425
查看次数

使用Spring MVC和Hibernate在多租户数据库应用程序中动态添加租户

我正在开发使用多租户数据库配置的Web应用程序.

我想动态添加租户.

我添加了主控制器来创建主模式,其中包含动态创建的租户记录.

但问题是,当我请求创建租户时,它去了MultitenantConnectionProvider我创建的数据库,但在数据库中我想扫描包com.appointment.schedular.model.tenant并在ne数据库中创建表.

源代码

MasterDatabaseConfig.java

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
        basePackages = "com.appointment.schedular.dao.master",
        entityManagerFactoryRef = "masterEntityManager",
        transactionManagerRef = "masterTransactionManager"
)
@PropertySource("classpath:application.properties")
public class MasterDatabaseConfig {

   @Autowired
   private Environment springEnvironment;

   @Bean(name="masterDataSource")
   public DataSource masterDataSource() {
      DriverManagerDataSource dataSource = new DriverManagerDataSource();
      dataSource.setDriverClassName(springEnvironment.getProperty("master.datasource.classname"));
      dataSource.setUrl(springEnvironment.getProperty("master.datasource.url") + "?createDatabaseIfNotExist=true");
      dataSource.setUsername(springEnvironment.getProperty("master.datasource.user"));
      dataSource.setPassword(springEnvironment.getProperty("master.datasource.password"));
      return dataSource;
   }

   @Bean(name = "masterEntityManager")
   @Primary
   public LocalContainerEntityManagerFactoryBean masterEntityManagerFactory() {
      LocalContainerEntityManagerFactoryBean entityManagerFactoryBean 
              = new LocalContainerEntityManagerFactoryBean();
      entityManagerFactoryBean.setDataSource(masterDataSource());
      entityManagerFactoryBean.setPersistenceProviderClass(HibernatePersistenceProvider.class);
      JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
      entityManagerFactoryBean.setJpaVendorAdapter(vendorAdapter);
      entityManagerFactoryBean.setPackagesToScan(new String[]{"com.appointment.schedular.model.master"});
      entityManagerFactoryBean.setJpaProperties(getHibernateProperties());
      entityManagerFactoryBean.setPersistenceUnitName("master");
      return entityManagerFactoryBean;
   }

   private …
Run Code Online (Sandbox Code Playgroud)

java spring hibernate spring-mvc multi-tenant

7
推荐指数
1
解决办法
3217
查看次数

在对象映射器中全局注册模块

我有一个具有duration类型数据成员的Topic 类LocalTime

    @Entity
    @Table(name= "topics")
    @JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class,
    property  = "id",
    scope     = Long.class)
    @DynamicInsert(true)
    @DynamicUpdate(true)
    public class Topics implements Serializable {

        private static final long serialVersionUID = -1777454701749518940L;

        @Id
        @Column(name= "id")
        private Long id = Long.parseLong(UUID.randomUUID().toString().substring(0, 8), 16);

        @NotEmpty
        @NotNull
        @Column(name= "topic", columnDefinition = "Text", length = 50000)
        private String topic;

        @Convert(converter = LocalTimeConverter.class)
        private LocalTime duration;

        // getters and setters
     }
Run Code Online (Sandbox Code Playgroud)

输入json:

{
    "topic":"x111",
    "imageUrl":"http://x.com/x1/x11/x111",
    "duration":"00:00:05"
}
Run Code Online (Sandbox Code Playgroud)

错误:

Can not construct instance of java.time.LocalTime: no …
Run Code Online (Sandbox Code Playgroud)

java fasterxml spring-boot objectmapper

0
推荐指数
1
解决办法
8599
查看次数

将hashmap列表转换为set

我想List<HashMap<String, Object>>投入Set<StudentInfo>

我有方法

public List<HashMap<String,Object>> getStudentData(studentId);
Run Code Online (Sandbox Code Playgroud)

我想将结果转换为Set,所以我用过

Set<StudentInfo> studentFilteredInfo = new HashSet<>();
List<Map<String, Object>> studentCompleteRecord = getStudentData(1005);
studentFilteredInfo.addAll((Collection<? extends StudentInfo>studentCompleteRecord ));
Run Code Online (Sandbox Code Playgroud)

最初当我在localhost上使用java 8,eclipse和tomcat 8执行它时工作正常.

当我试图用maven构建它时

mvn clean package
Run Code Online (Sandbox Code Playgroud)

它将通过一个错误:

不兼容的类型: java.util.List<java.util.Map<java.lang.String,java.lang.Object>>

cannot be converted to java.util.Collection<? extends com.school.model.StudentInfo>
Run Code Online (Sandbox Code Playgroud)

java generics collections hashmap set

-4
推荐指数
1
解决办法
358
查看次数