深入实践Spring Boot2.3.3 文档持久化

    xiaoxiao2024-04-19  8

    2.3.3 文档持久化

    MongoDB也有像使用JPA那样的资源库,如代码清单2-16所示,为用户文档创建了一个Repository接口,继承于MongoRepository,实现了文档持久化。

    代码清单2-16 用户文档持久化

    public interface UserRepository extends MongoRepository<User, String> {

        User findByUsername(String username);

    }

    MongoRepository的继承关系如图2-4所示,看起来跟JPA的资源库的继承关系没有什么两样,它也包含访问数据库的丰富功能。

    代码清单2-17是用在测试中的使用MongoDB的一个配置类定义,其中@PropertySource指定读取数据库配置文件的位置和名称,@EnableMongoRepositories启用资源库并设定定义资源库接口放置的位置,这里使用环境变量Environment来读取配置文件的一些数据库配置参数,然后使用一个数据库客户端,连接MongoDB服务器。

    代码清单2-17 TestDataSourceConfig配置类

    @Configuration

    @EnableMongoRepositories(basePackages = "dbdemo.mongo.repositories")

    @PropertySource("classpath:test.properties")

    public class TestDataSourceConfig extends AbstractMongoConfiguration {

     

        @Autowired private Environment env;

     

        @Override

        public String getDatabaseName(){

            return env.getRequiredProperty("mongo.name");

        }

     

        @Override

        @Bean

        public Mongo mongo() throws Exception {

            ServerAddress serverAddress = new ServerAddress(env.getRequiredProperty

    ("mongo.host"));

            List<MongoCredential> credentials = new ArrayList<>();

            return new MongoClient(serverAddress, credentials);

        }

     

    }

    最新回复(0)