当前位置: 首页 > 知识库问答 >
问题:

为什么我的spring boot(mongo)bean没有被创建/使用?

汪驰
2023-03-14

我想用springboot和Mongo数据库对话。

它使用spring-boot-starter-data-mongoDB并自动配置默认bean,这确实允许我的MongoRepository类与DB进行对话。

但是,我想重写默认值。我可以使用application.properties,但我需要能够在应用程序启动时将连接参数作为选项在命令行上传递。

我已经尝试改变端口以破坏它,我已经将debug添加到Mongo配置中,看起来不管我做什么,默认的spring配置都在使用。就好像忽略了@Configuration注释一样。

我尝试了各种配置主应用程序类的方法(指定conf位置、在主类中添加@configuration、使用和不使用@SpringBootApplication...),但我现在的情况是....

package somepackage

@EnableAutoConfiguration
@ComponentScan
public class MyApplication {

public static void main(String[] args) {
    ApplicationContext ctx = SpringApplication.run(MyApplication.class, args);
    ....
}



package somepackage.conf; // should be picked up by ComponentScan, no?
@Configuration
public class MongoConf {

    @Bean
    public MongoClientFactoryBean mongo() throws Exception {
        MongoClientFactoryBean mongo = new MongoClientFactoryBean();

        /*
         setting to silly values to try to prove it is trying to create connections using this bean - expected to see errors because can't create connection... */
        mongo.setHost("flibble");
        mongo.setPort(345);
        return mongo;
    }
}

共有1个答案

唐伟
2023-03-14

您应该通过应用程序属性实际使用spring boot内置的MongoDb Starter特性和相关的自动配置。自定义主机、端口、密码等可以并且应该通过专用的spring boot MongoDB属性进行设置:

spring.data.mongodb.authentication-database= # Authentication database name.
spring.data.mongodb.database=test # Database name.
spring.data.mongodb.field-naming-strategy= # Fully qualified name of the FieldNamingStrategy to use.
spring.data.mongodb.grid-fs-database= # GridFS database name.
spring.data.mongodb.host=localhost # Mongo server host.
spring.data.mongodb.password= # Login password of the mongo server.
spring.data.mongodb.port=27017 # Mongo server port.
spring.data.mongodb.repositories.enabled=true # Enable Mongo repositories.
spring.data.mongodb.uri=mongodb://localhost/test # Mongo database URI. When set, host and port are ignored.
spring.data.mongodb.username= # Login user of the mongo server.

并链接到支持属性的完整列表。

 类似资料:
  • 问题内容: 我一直在关注Docker教程,并通过对现有映像进行更改并用三个不同的标签对其进行标记,在本地OSX计算机上构建了测试映像: 但是,这些图像都没有摘要: 我使用Dockerfile创建的其他测试映像也有摘要。 为什么有些图像有摘要,而有些则没有? 它与创建映像的方式(是否为Dockerfile)有关吗? 问题答案: 首先,请记住,摘要可以代表一个,一个图层或它们的组合(我们通常将该组合称

  • 我最近在springboot和flyway一起工作,我有这样一个问题。为什么flyway没有创建数据库?我刚刚在我的build.gradle中添加了一个flyway依赖项,现在看起来是这样的。 我这样配置数据源: 这里是我的Hibernate。属性: 和迁移文件,位于resources/db/migration中: 有什么问题?是否应该在Application.Properties中配置datas

  • 我有一个码头工人。编写文件,当我启动它时,我希望它创建一个包含一些表的数据库。 我的码头工人组成: 项目结构: 实际的 SQL 文件: -- 主机:本地主机 数据库:待办事项 --服务器版本8.0.18 /*!40101 SET@OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT /; /! 40101 SET@OLD_CHARACTER_SET_RES

  • 首先,我看了这里所有其他类似的帖子,但没有一个能帮上忙。我正在写一个扫雷游戏,我试图在JFrame的边界布局顶部放置一个Jlabel,并让它显示一个计数器,指示还有多少地雷需要标记。每当单击网格上的任何其他JLabel时,都需要重新绘制它。首先,对于我的代码,我的标题JLabel上从来没有显示任何文本。让文本显示的唯一方法是将其放入我的JLabel构造函数中。这让我觉得我的paintCompone

  • 通过ide创建boot项目,使用阿里云的的url,创建出来的项目的pom.xml文件并没有parent标签,但是项目还是可以正常运行(mysql相关操作也是正常的),这是为什么?

  • org.springframework.beans.factory.BeanCreationException:创建类com.socketcruiter.config.springMongoConfig中定义的名为“Mongo Template”的bean时出错:bean实例化失败;嵌套异常为org.springframework.beans.Factory.beanDefinitionStore