MongoDB在自定义类中自动装配

时间:2016-12-16 19:05:21

标签: java mongodb

我有简单的结构项目:

com.database.mongodb.config.MongoConfig - @Import中使用的MongoDB配置 com.database.mongodb.repository.ParameterRepository - 扩展MongoRepository的接口 com.server.main.MainClass - 我程序的主类。

我只想在我需要的地方使用我的 ParameterRepository ,例如,在包含 com.server.task.CustomClass 包中的某些任务的自定义类中。我试过了:

@Configuration
@EnableMongoRepositories(basePackages = {"com.database.mongodb.repository"})
public class MongoConfig extends AbstractMongoConfiguration {
    @Override
    @Bean
    public Mongo mongo() throws Exception {
        return new MongoClient("localhost:27017");
    }

    @Override
    protected String getDatabaseName() {
        return "mydb";
    }
}

但它返回NullPointerException。我尝试使用注释@Component创建抽象类Task,但它也不起作用。

我怎样才能使它成为可能?

我的实施:

MongoConfig.class

@Repository
public interface ParameterRepository extends MongoRepository<Parameter, Integer> {
}

ParameterRepository.class

@Import(MongoConfig.class)
@SpringBootApplication
public class SparkServer implements CommandLineRunner {

    @Autowired
    private WeatherParameterRepo weatherParameterRepo;
...

MainClass.class

null

1 个答案:

答案 0 :(得分:0)

您应该将ParameterRepository移至com.server.main包裹(或子包裹)。

您还可以将@ComponentScan({"com.database.mongodb.repository", "com.server.main"})添加到MainClass课程。