SpringBoot + Gradle 入门
一、新建Gradle项目,不是Spring Inelize
二、补全build.gradle文件如下
buildscript {
ext {
springBootVersion = '1.4.2.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'org.springframework.boot'
group = 'com.zhuang'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.7
repositories {
maven{
url 'http://maven.aliyun.com/nexus/content/groups/public'
}
}
dependencies {
compile("org.springframework.boot:spring-boot-starter-data-jpa")
compile("org.springframework.boot:spring-boot-starter-web")
compile group: 'org.aspectj', name: 'aspectjweaver', version: '1.9.0.RC2'
compile("org.springframework.boot:spring-boot-starter-actuator")
compile("mysql:mysql-connector-java")
testCompile("org.springframework.boot:spring-boot-starter-test")
}
三、新建Application文件 【注:不能位缺省包】
@SpringBootApplication
public class Application {
public static void main(String[] args){
SpringApplication.run(Application.class,args);
}
}
Bug 1: 以下错误都是因为引入了JPA的包导致其依赖的包没有引入,数据库初始化错误。补齐!!!
四、在resource文件夹下创建application.yml文件并配置相关项目信息
server:
port: 8081
session-timeout: 5
# context-path: /demo
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/world?useSSL=false
driver-class-name: com.mysql.jdbc.Driver
username: Damon
password: damon
jpa:
hibernate:
ddl-auto: update
show-sql: true
# 自定义项目变量用于使用,见TestController
developer: ZHAUNG
五、数据库整合,连接数据库
Bug 2:SSL Connection
数据库连接地址:jdbc:mysql://127.0.0.1:3306/world?useSSL=false
Bug 3:不能用root用户?改用其他用户可以
六、数据库整合,操作数据库
Bug 4:springBoot不能根据entity自动创建数据表
七、Repository只能在interface中extends,实现类中出错
repository接口无需实现类!雷同于mybatis中一个dao数据传输层,用xml文件做实现类
八、懒加载session异常
懒加载异常:org.hibernate.LazyInitializationException: could not initialize proxy - no Session
@JsonIgnoreProperties(value={"hibernateLazyInitializer","handler","fieldHandler"}) 加在entity类
这是一个lazy使用后的Exception,使用迟时加载,在session(hibernate里的session),关闭后使用该对象的未加载变量,也就是说session已经关闭,没有保存到内存中,然后你使用了,导致该异常。
在Java Web项目中使用Hibernate经常会遇到LazyInitializationException。这是因为controller和model层(java代码)将通过JPA的一些启用了延迟加载功能的领域(如用getRefrence()方法或者在关联关系中采用fetch=FetchType.LAZY)返回给view层(jsp代码)的时候,由于加载领域对象的JPA Session已经关闭,导致这些延迟加载的数据访问异常。