我实现了两个基于maven的独立Web项目,使用Spring MVC,hibernate和Jax-RS实现.但是我的要求发生了变化,现在我需要将项目作为子项目合并到另一个项目中,这是我们的父项目.所以我使用maven multimodule配置.
<packaging>pom</packaging>
<modules>
<module>../child1</module>
<module>../child2</module>
</modules>
Run Code Online (Sandbox Code Playgroud)
<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)
<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中配置项目,以便它将扫描父项的组件以及子项目和执行项目.目前我对每个项目都有单独的配置:
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)
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.x.y")
public class AppConfig …Run Code Online (Sandbox Code Playgroud) 我正在开发使用多租户数据库配置的Web应用程序.
我想动态添加租户.
我添加了主控制器来创建主模式,其中包含动态创建的租户记录.
但问题是,当我请求创建租户时,它去了MultitenantConnectionProvider我创建的数据库,但在数据库中我想扫描包com.appointment.schedular.model.tenant并在ne数据库中创建表.
@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) 我有一个具有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) 我想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 ×4
spring ×2
spring-mvc ×2
collections ×1
fasterxml ×1
generics ×1
hashmap ×1
hibernate ×1
maven ×1
multi-module ×1
multi-tenant ×1
objectmapper ×1
set ×1
spring-boot ×1