build.gradle
properties
-
指定编译.java文件的jdk版本sourceCompatibility
-
确保 class 文件与 targetCompatibility 指定版本 或者更新的java虚拟机兼容targetCompatibility
-
用于指定打包成 jar 文件时的文件名称archivesBaseName
-
dependencies
implementation 和 api 是取代之前的compile的
- api 和 compile 是一样的效果
- implementation 通过 implementation 依赖的库只能自己库本身访问 eg. A依赖B B依赖C 如果B依赖C是使用的 implementation 依赖 那么在A中是访问不到C中的方法的 如果需要访问 需要使用api依赖
compile only 和 provided 效果是一样的 只在编译的时候有效 不参与打包
runtimeOnly 和 apk 效果一样 只在打包的时候有效 编译不参与
testImplementation 和 testCompile 效果一样 在单元测试和打包测试apk的时候有效
debugImplementation 和 debugCompile 效果相同 在debug模式下有效
releaseImplementation 和 releaseCompile 效果相同 只在 release 模式和打包 release 包情况下有效
Spring Boot2 注解
-
@SpringBootApplication 注解通常放在主类上 它隐式地为某些项定义了一个基本的“搜索包” eg. 如果您正在编写一个 JPA 应用程序 则使用 @SpringBootApplication 注解类的包来搜索 @Entity 项 使用根包也允许组件扫描只应用于您的项目@SpringBootApplication
-
标注在方法上(返回某个实例的方法) 等价于 spring 的 xml 配置文件中的 作用是注册 bean 对象@Bean
Tips:
- @Bean 注解在返回实例的方法上 如果未通过 @Bean 指定 bean 的名称 则默认与标注的方法名相同
- @Bean 注解默认作用域为单例 singleton 作用域 可通过 @Scope(“prototype”) 设置为原型作用域
- 既然 @Bean 的作用是注册 bean 对象 那么完全可以使用 @Component @Controller @Service @Repository 等注解注册 bean(在需要注册的类上加注解)当然需要配置 @ComponentScan 注解进行自动扫描
- 使用 @Bean 注解时 可以配置 initMethod() 和 destoryMethod 方法 分别在实例化和销毁的时候执行 或者使用通过 @PostConstruct 和 @PreDestroy 方法 实现初始化和销毁 bean 之前进行的操作
Spring 数据源配置
-
最大连接数据库连接数 设置为0时 表示没有限制max-active
-
最大等待连接中的数量 设置为0时 表示没有限制max-idle
-
最大等待秒数 单位为毫秒 超过时间会报出错误信息max-wait
Lomok
官方介绍
Project Lombok makes java a spicier language by adding ‘handlers’ that know how to build and compile simple, boilerplate-free, not-quite-java code.
通俗的说
Lombok 能以简单的注解形式来简化java代码 提高开发人员的开发效率
eg. 开发中经常需要写的 javabean 需要添加相应的 getter/setter 构造器 equals 等方法 而且需要维护
当属性多时会出现大量的 getter/setter 方法 这些显得很冗长也没有太多技术含量 一旦修改属性 就容易出现忘记修改对应方法的失误
然鹅 Lombok 能通过注解的方式 在编译时自动为属性生成构造器 getter/setter equals hashcode toString 方法
缺点
不支持多种参数构造器的重载
注解
-
集合了 @ToString @EqualsAndHashCode @Getter/@Setter @RequiredArgsConstructor 的所有特性@Data
编译后会自动加上- 所有属性的 get 和 set
- toString
- hashCode
- equals
- canEqual
- 如为 final 属性 则不会为该属性生成 setter
-
为相应的属性自动生成 Getter/Setter 方法@Getter / @Setter
-
生成一个非空的声明 可用于校验参数 能帮助避免空指针@NonNull
-
自动调用 close() 方法@Cleanup
-
会使用所有非静态(non-static)和非瞬态(non-transient)属性来生成 equals 和 hasCode 也能通过 exclude 注解来排除一些属性@EqualsAndHashCode
-
生成一个 toString() 方法 默认情况下 会输出类名 所有属性(会按照属性定义顺序)用逗号来分割@ToString
-
无参构造器@NoArgsConstructor
-
部分参数构造器@RequiredArgsConstructor
-
全参构造器@AllArgsConstructor
JPA注解
@MappedSuperclass
用来标识父类
eg. 实体映射到数据库表时 需要映射的几个实体类中 有几个共同的字段名 eg. id creator create_time editor update_time remarks etc. 把这些属性抽象出来当成一个父类 然后再以不同的实体类来继承这个父类 使用 @MappedSuperclass 注解 将该实体类当成基类实体 它不会映射到数据库表 但继承它的子类实体在映射时会自动扫描该基类实体的映射属性 添加到子类实体的对应数据库表中
- 标注为 @MappedSuperclass 的类将不是一个完整的实体类 他将不会映射到数据库表 但是他的属性都将映射到其子类的数据库字段中
- 标注为 @MappedSuperclass 的类不能再标注 @Entity 或 @Table 注解 也无需实现序列化接口
@EntityListeners
指定 Entity 或者 superclass 上的回调监听类 该注解可以用于 Entity 或者 superclass 上
@GeneratedValue
为一个实体生成一个唯一标识的主键 JPA 要求每一个实体 Entity 必须有且只有一个主键
properties
strategy
- GenerationType.TABLE
使用一个特定的数据库表格来保存主键 - GenerationType.SEQUENCE
根据底层数据库的序列来生成主键 条件是数据库支持序列 - GenerationType.IDENTITY*
主键由数据库自动生成(主要是自动增长型) - GenerationType.AUTO
主键由程序控制
- GenerationType.TABLE
generator
声明主键生成器的名称 对应于同名的主键生成器 @SequenceGenerator 和 @TableGenerator
2019年4月17日22:28:50 暂时更新至此
Spring
常用注解
@Service
- 类带了 @Service 注解 将自动注册到 Spring 容器 不需要再在 applicationContext.xml 文件定义 bean
- 用于标注业务层组件
@Controller
- 用于标注控制层组件 如 struts 中的 action
- 如果 @Controller 不指定value 则默认的 bean 名字就是这个类名首的字母小写 =>
@Controller(value = "ClassName")
@Repository
- 用于标注数据访问组件 即DAO组件 对应数据访问层Bean
@Component
泛指组件 当组件不好归类的时候 我们可以使用这个注解进行标注
@AutoWired
自动把 bean 里面引用的对象的 setter/getter 方法省略 自动 set/get
@Service
@Service 注解是标注在实现类上的 @Service 是把 spring 容器中的 bean 进行实例化 也就是等同于 new 操作 只有实现类是可以进行 new 实例化