您的位置:首页 > 编程语言 > Java开发

Spring Cloud和Spring boot的相关问题

2017-02-03 17:35 357 查看
1.      环境变量 spring.profiles.active=development,设置值的不同,在autoconfiguration设置了不同的管理员帐号和密码。如果当前的是开发环境,帐号和密码都是admin;如果是非开发环境当前的密码为Change_And_Encrypt_It_Or_Override_It_In_Env。

2.      Swagger 中的Data Types列表中,type和format列同时指定确定字段类型(缺省format除外)。生成的model 类中,字段的类型以format的内容为准。设置变量类型无法转换时,日志会给出具体的字段的类型。

3.      H2内存数据库:http://localhost:8080/h2-console/login.jsp。application.yml文件中的相关属性需要设置。

TODO:在fire中,当前data.sql中的insert语法执行不成功,数据无法插入。

JDBC URL---jdbc:h2:mem:testdb

已解决。需要在application.yml文件中配置,以下项:

    spring.datasource.initialize:true

 spring.jpa.hibernate.ddl-auto:none

另外,在classpath根目录下,如果数据插入在data.sql文件中,此时的ddl-auto属性的值不能为drop或create-drop。如果是ddl-auto的属性为drop或create-drop此时的数据插入SQL应该位于import.sql文件中。

4.      集成测试中的问题:stackoverflow.com网站有相应的问题描述和解答,连接如下

http://stackoverflow.com/questions/38883819/issue-with-org-springframework-beans-factory-unsatisfieddependencyexception

在进行集成测试,模块mockMVC需要用到内存数据库时,出现如下的错误:

org.springframework.beans.factory.UnsatisfiedDependencyException:Error creating bean with name'org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration':Unsatisfied dependency expressed through constructor parameter 0; nested exceptionis
org.springframework.beans.factory.BeanCreationException: Error creating beanwith name 'dataSource' defined in class path resource[org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Tomcat.class]:Initialization of bean failed; nested exception
isorg.springframework.beans.factory.BeanCreationException: Error creating beanwith name 'dataSourceInitializer': Invocation of init method failed; nestedexception isorg.springframework.jdbc.datasource.init.ScriptStatementFailedException:
Failed toexecute SQL script statement #1 of URL[file:/E:/MavenDemos/fire/target/classes/schema.sql]: CREATE TABLEPRODUCT ( PRODUCT_ID CHARACTER (5), DESCRIPTION CHARACTER (50) );
nestedexception is org.h2.jdbc.JdbcSQLException: Table "PRODUCT" already exists;SQL statement:

CREATE TABLE PRODUCT ( PRODUCT_ID CHARACTER (5),DESCRIPTION CHARACTER (50) ) [42101-193]

其中,一个错误的根源就是最后的nestedexception is org.h2.jdbc.JdbcSQLException:
Table"PRODUCT" already exists; SQL statement:

CREATE TABLE PRODUCT ( PRODUCT_ID CHARACTER (5), DESCRIPTIONCHARACTER (50) )

很明显的是表已经存在。再往前找,导致这个原因的症结是在Failedto execute SQL script statement #1 of URL[file:/E:/MavenDemos/fire/target/classes/schema.sql]描述的schema.sql文件的问题,文件中的sql语句要创建表,而此时表已经存在,故会发生错误和导致Surefire/Failsafe插件的goal执行失败。

总结:日志文件能够很好的发现问题根源,并且对问题的追溯也很精准。导致问题的原因一般都是在描述的尾部。

5.      查看相关文档,分析RAML和APIBlue两者对范型是否支持:(与Swagger的不支持的比较)。

当前的理解:是否支持范型是在代码的生成后的DTO模型中是否有范型类的生成,因为有了范型类的生成,在Controller处理返回的结果类型可以为范型类的某个具体实例,从而减少变成的复杂性。

就目前而言,在apiblueprint的API定义的语法层面,能够实现范型相似类型的定义。但具体用法还在考察中。

6.      自动重启配置spring-boot-devtools,参考链接:

http://blog.javachen.com/2016/02/22/devtools-in-spring-boot.html

http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#using-boot-devtools-restart[官方链接]

CLASSPATH中文件有变化时,会自动重启应用。主要是当用户编写的java文件发生改变时,此时如果使用的是IDE会自动的重新编译文件。spring-boot-devtools模块会监测到这种变化,然后重启应用,比较便于开发人员的调试。

然而,在不使用IDE仅使用maven进行应用的构建时,因为maven不会自动编译java代码,因而不会自动重启。可以同过在新的docs窗口,使用mvn compile命令手动便以java代码,以触发模块的自动重启功能。

还可以进行其它配置选择,比如排除静态资源文件/添加额外的观察路径/关闭自动重启/使用一个触发文件/自定义自动重启类加载器等。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息