spring引导数据控制台应用程序

wmomyfyw  于 2021-07-05  发布在  Java
关注(0)|答案(1)|浏览(394)

我将创建一个用于访问数据库(mysql)的java控制台应用程序。我将使用spring boot/spring data jpa。使用springboot创建控制台应用程序的正确方法是什么?
我找到了一些方法: spring.main.web-application-type=NONE (在application.properties中) spring.main.web-environment = false (在application.properties中)
使用spring shell项目
实施 CommandLineRunner 接口
我想其中有些可能已经过时了,有利有弊。您能解释一下如何使用spring引导/spring数据创建一个普通的控制台应用程序吗?

fv2wmkja

fv2wmkja1#

最近,我做了一个控制台应用程序,如您现在所需。我通过实施 CommandLineRunner 接口。当springboot启动应用程序时,它将调用 run(String... args) 方法 CommandLineRunner 接口。因此,您可以在此实现类(例如apprunner)中自动连接(或使用构造函数注入)spring数据存储库并调用数据库操作。
我使用了mongodb和一些缓存操作,而不是mysql数据库。
例子:
apprunner.java文件

package com.cache.caching;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;

@Component
public class AppRunner implements CommandLineRunner {

    Logger logger = LoggerFactory.getLogger(AppRunner.class);

    BookRepository bookRepository;

    public AppRunner(BookRepository bookRepository) {
        this.bookRepository = bookRepository;
    }

    @Override
    public void run(String... args) throws Exception {
        logger.info("articles fetching..."+bookRepository.getArticles());
        logger.info("articles fetching..."+bookRepository.getArticles());
        logger.info("articles fetching..."+bookRepository.getArticles());
        logger.info("articles fetching..."+bookRepository.getArticles());
    }
}

bookrepository.java文件

package com.cache.caching;

import java.net.UnknownHostException;
import java.util.List;

public interface BookRepository {
    List<Article> getArticles() throws UnknownHostException;
}

bookrepositoryimpl.java文件

package com.cache.caching;

import com.mongodb.*;
import org.bson.codecs.pojo.annotations.BsonId;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.data.mongodb.MongoCollectionUtils;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;

@Component
public class BookRepositoryImpl implements BookRepository{

    @Override
    @Cacheable("articles")
    public List<Article> getArticles() throws UnknownHostException {

        MongoClient mongoClient
                = new MongoClient(new MongoClientURI("mongodb://localhost:27017"));
        DB db = mongoClient.getDB("Mart");
        DBCollection collection =  db.getCollection("articles");
        DBCursor cursor = collection.find();
        List<Article> list= new ArrayList<>();
        while (cursor.hasNext()) {
           Article article = new Article();
           DBObject dbObject = cursor.next();
           article.setId((Double) dbObject.get("_id"));
           article.setSubject((String) dbObject.get("subject"));
           list.add(article);
        }
        return list;
    }

}

在您的例子中,您可以在application.yml/application.properties文件中提供mysql数据库连接的详细信息。
cachingaapplication.java-应用程序从这里开始,如下所示 SpringApplication.run(CachingApplication.class, args); 调用 run(String... args) 方法 CommandLineRunner 接口。

package com.cache.caching;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;

@SpringBootApplication
@EnableCaching
public class CachingApplication {

    public static void main(String[] args) {
        SpringApplication.run(CachingApplication.class, args);
    }

}

示例:这里是完整示例示例

相关问题