将数据转存到指定服务器数据库

1.spring boot 下载项目,配置依赖。 https://start.spring.io/

  • spring-boot-starter-jdbc
  • postgresql
  • spring-boot-starter-web
  • 以及其他依赖直接写在pom文件即可

2.idea引入boot项目 idea导入springboot maven项目_Walt_像道光的博客-CSDN博客_idea引入springboot maven工程 。必须按照这个步骤引入 否则右键 没有run运行选项。

3.项目pom引入httpclient 定时任务等;搜索一个较好的HttpclientUtils类写入代码中。

4.Xshell连接Ubuntu服务器,安装Postgresql、Redis数据库。root用户开的一个临时用户frilab

5.安装命令汇总

1. sudo apt-get update
2. sudo apt-get install postgresql postgresql-client
3.查看postgresql是否运行 :service postgresql status 
4.默认情况下,PostgreSQL 会创建一个拥有所权限的特殊用户 postgres。要实际使用 PostgreSQL,你必须先登录该账户:
5.现在,使用 psql命令 来启动 PostgreSQL Shell
6.你可以输入 \q以退出postgresql命令行,输入\l 要查看现有的所有表, q 键退出该表视图。
7.你可以使用以下命令更改任何用户(包括 postgres)的密码:ALTER USER postgres WITH PASSWORD 'my_password';注意:将 postgres替换为你要更改的用户名,my_password替换为所需要的密码。另外,不要忘记每条命令后面的 ;(分号)。
8.建议你另外创建一个用户(不建议使用默认的 postgres用户)。为此,请使用以下命令:CREATE USER my_user WITH PASSWORD 'my_password';运行 \du,你将看到该用户,但是,my_user用户没有任何的属性。来让我们给它添加超级用户权限:ALTER USER my_user WITH SUPERUSER;
9.你可以使用以下命令删除用户:DROP USER my_user;要使用其他用户登录,使用 \q命令退出,然后使用以下命令登录:psql -U my_use

6.代码中连接Postgresql SpringBoot使用JdbcTemplate操作增删改,SpringBoot配置postgreSQL连接_君泊安的博客-CSDN博客 

(1)pom文件引入依赖

<!-- jdbc-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
 
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>42.2.8</version>
       </dependency>

(2)application.properties编写配置文件 

//数据库的地址以及端口号 postgres为数据库名称
spring.datasource.url=jdbc:postgresql://localhost:5432/postgres
//账号(默认为postgres)
spring.datasource.username=postgres
//密码
spring.datasource.password=123456ok
spring.datasource.driverClassName=org.postgresql.Driver
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.properties.hibernate.hbm2ddl.auto=update

(3)使用

在dao层使用注解加载 JdbcTemplate:

@Autowired
private JdbcTemplate jdbcTemplate;

7.代码编写

(1)alibaba json 将字符串转换成对象  Json字符串转对象和转List集合操作(alibabab版本)_加柠檬海稻的博客-CSDN博客_fluentput

 /**
     * 8.通过JSONArray.parseArray把json转换为List<T>
     * 
     * @param jsonStr
     * @param model
     * @return
     */
    public static <T> List<T> getStringToList(String jsonStr, Class<T> model)
    {
        List<T> object = (List<T>)JSONArray.parseArray(jsonStr, model);
        return object;
        // String输出: "aa","bb","cc"
        // userModel输出: lmx,jqy
    }

(2)PostGresql表的字段不要使用驼峰法,要使用下划线。不区分不小写。drugDisease  => drug_disease

(3)String.format("hello %s", "world")

(4)Spring 将依赖注入的非静态对象赋值给静态类对象 @PostConstruct注解_那些很冒险的梦丶的博客-CSDN博客_postconstruct 使用PostConstruct注解

(5)spring boot 读取配置文件  使用@Value方式直接读取application.properties配置项;使用Environment方式注入读取application.properties配置项;使用自定义配置类读取自定义配置文件信息,例如:author.properties 

(6)代码逻辑

  • postman测试API。根据返回的数据编写对于返回结果的Bean类
  • 通过alibaba的JSON 将字符串转换成bean对象。
  • 启动匿名线程,while死循环不断通过api取数据,然后将数据插入到指定数据库。如果没有取回数据,就线程sleep。 

 8.将spring boot 部署到linux服务器

步骤:

  • idea将程序,运行maven插件的install命令。
  • 本地计算机java -jar命令运行看jar可否成功运行。
  • 通过xftp将jar上传到linux服务器。
  • 通过source命令行在服务器运行脚本:source start.sh;source stop.sh 停止

(1)本地文件上传到Linux服务器的几种方法  推荐使用xshell的xftp小插件 

(2)intellij idea 生成可执行jar 运行提示没有主清单属性 intellij idea 生成可执行jar 运行提示没有主清单属性_just-do-it-zzj的博客-CSDN博客

(3) No auto configuration classes found in META-INF/spring.factories. If you are using a custom packaging, make sure that file is correct.

(4)idea使用maven将项目打成可运行的jar包

          1.pom文件配置 spring -boot-maven依赖,然后使用Terminal终端运行mvninstall 命令

          2.idea直接配置打包方式 尝试很多次,都没有没成功,问题不明。

可用的pom文件maven依赖配置

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>3.1.0</version>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <layout>ZIP</layout>
                    <includes>
                        <include>
                            <groupId>non-exists</groupId>
                            <artifactId>non-exists</artifactId>
                        </include>
                    </includes>
                </configuration>
            </plugin>
            <!--拷贝第三方依赖文件到指定目录-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <!--target/lib是依赖jar包的输出目录,根据自己喜好配置-->
                            <outputDirectory>target/lib</outputDirectory>
                            <excludeTransitive>false</excludeTransitive>
                            <stripVersion>false</stripVersion>
                            <includeScope>runtime</includeScope>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

(5)spring boot 项目,打成jar包后,如何将配置文件放在jar包外面。Spring Boot 分离用来jar、配置文件打包成jar文件

(6)打包报错resources :[ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources) on project getDatasFromShentu: Input length = 1 -> [Help 1]

       此错误是因为spring boot 版本和maven-resources-plugin版本不兼容导致,需要引入较低版本的。

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-resources-plugin</artifactId>
   <version>3.1.0</version>
</plugin>

 (7)运行、停止jar包的脚本

#!/bin/bash
nohup java -jar getDatasFromShentu-0.0.1-SNAPSHOT.jar
#!/bin/bash 
 
PID=$(ps -ef | grep getDatasFromShentu-0.0.1-SNAPSHOT.jar | grep -v grep | awk '{ print $2 }')
 
if [ -z "$PID" ]
 
then
 
echo Application is already stopped
 
else
 
echo kill $PID
 
kill $PID
 
fi

 

打包遇见问题:

  1. mvn clean package后,java -jar 运行报如下错误。错误原因未知,删除pom文件中添加的maven插件,只留下spring-boot自带的spring-boot-maven-plugin插件,即可运行成功。
D:\idea-projects\getDatasFromShentu\target>java -jar getDatasFromShentu-0.0.1-SNAPSHOT.jar
Exception in thread "main" java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:107)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:58)
        at org.springframework.boot.loader.PropertiesLauncher.main(PropertiesLauncher.java:467)
Caused by: java.lang.NoClassDefFoundError: org/springframework/boot/SpringApplication
        at cn.fri.getDatasFromShentu.GetDatasFromShentuApplication.main(GetDatasFromShentuApplication.java:20)
        ... 8 more
Caused by: java.lang.ClassNotFoundException: org.springframework.boot.SpringApplication
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:151)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        ... 9 more

9.jar发布到linux服务器 Springboot如何打包部署项目_程序三两行的博客-CSDN博客_springboot打包

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fang·up·ad

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值