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
- Postgressql 安装 Linux 上安装 PostgreSQL | 菜鸟教程 、技术|如何在 Ubuntu 上安装和配置 PostgreSQL
- 默认端口号5432
- 允许远程访问。ubuntu设置postgresql允许被远程访问_AdleyTales的博客-CSDN博客 修改两个配置文件。
- 同理,如果为了数据安全,可以不允许远程访问。PostgreSQL 设置允许访问IP_wlchn的博客-CSDN博客_pg数据库允许所有ip登录【本程序将listen_addresses = '*'修改为listen_addresses = '本机ip'】
- Ubuntu切换用户命令: su root;将用户从postgres切换回frilab ,然后重启postgresql。
报错:could not connect to the server:Connection timed out 。
解决:管理员用户防火墙关闭或者添加5432接口允许访问。临时用户需要使用root用户开启5432端口,有可能是防火墙禁用了导致无法远程。
报错FATAL:database "xxxx" does not exist),原因是初始数据库未填写,默认和用户名相同,但是其中没有这个数据库所以报错。填写已存在的数据库即可,这里填的是默认的“postgres”数据库。
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
打包遇见问题:
- 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打包