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代码,以触发模块的自动重启功能。
还可以进行其它配置选择,比如排除静态资源文件/添加额外的观察路径/关闭自动重启/使用一个触发文件/自定义自动重启类加载器等。
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代码,以触发模块的自动重启功能。
还可以进行其它配置选择,比如排除静态资源文件/添加额外的观察路径/关闭自动重启/使用一个触发文件/自定义自动重启类加载器等。
相关文章推荐
- Spring Boot入门——JDBCTemplate使用及其相关问题解决
- 【springBoot】springBoot集成redis的key,value序列化的相关问题
- 【springBoot】springBoot集成redis的key,value序列化的相关问题
- spring boot mybatis相关问题
- spring boot thymeleaf相关问题
- 【springBoot】springBoot集成redis的key,value序列化的相关问题
- springboot上传相关问题
- spring项目中dubbo相关的配置文件出现红叉的问题
- spring缓存 相关资料整理和问题汇总(不定期更新)
- EEPROM @ 0x50 read FAILED!!! -------dm6467 uboot中eeprom相关问题
- spring整合hibernate配置注解事务的相关问题
- 使用gradle来构建Spring boot时遇到的问题
- spring 动态数据源配置以及相关问题
- spring的相关问题
- spring boot web相关配置
- spring boot web相关配置
- spring boot web相关配置
- Spring中bean的作用域及Spring容器初始化的相关问题
- Tapestry + Spring + Hibernate 整合工作及相关问题
- spring 下 配置jms messageListener 的事务及相关问题