SpringBoot 之 Profile
SpringBoot 之 Profile 一个应用为了在不同的环境下工作,常常会有不同的配置,代码逻辑处理。Spring Boot 对此提供了简便的支持。 关键词: @Profile、spring.profiles.active 区分环境的配置properties 配置假设,一个应用的工作环境有:dev、test、prod 那么,我们可以添加 4 个配置文件: applcation.properties - 公共配置 application-dev.properties - 开发环境配置 application-test.properties - 测试环境配置 application-prod.properties - 生产环境配置 在 applcation.properties 文件中可以通过以下配置来激活 profile: 1spring.profiles.active = test yml 配置与 properties 文件类似,我们也可以添加 4 个配置文件: applcation.yml - 公共配置 application-dev.yml - 开发环境配置 ...
spring-boot-async
SpringBoot 教程之处理异步请求@EnableAsync 注解要使用 @Async,首先需要使用 @EnableAsync 注解开启 Spring Boot 中的异步特性。 1234@Configuration@EnableAsyncpublic class AppConfig {} 更详细的配置说明,可以参考:AsyncConfigurer @Async 注解支持的用法(1)无入参无返回值方法 您可以用 @Async 注解修饰方法,这表明这个方法是异步方式调用。换句话说,程序在调用此方法时会立即返回,而方法的实际执行发生在已提交给 Spring TaskExecutor 的任务中。在最简单的情况下,您可以将注解应用于返回 void 的方法,如以下示例所示: 1234@Asyncvoid doSomething() { // this will be executed asynchronously} (2)有入参无返回值方法 与使用 @Scheduled 注释注释的方法不同,这些方法可以指定参数,因为它们在运行时由调用者以...
深入理解 Java 反射和动态代理
深入理解 Java 反射和动态代理反射简介 什么是反射反射(Reflection)是 Java 程序开发语言的特征之一,它允许运行中的 Java 程序获取自身的信息,并且可以操作类或对象的内部属性。 通过反射机制,可以在运行时访问 Java 对象的属性,方法,构造方法等。 反射的应用场景反射的主要应用场景有: 开发通用框架 - 反射最重要的用途就是开发各种通用框架。很多框架(比如 Spring)都是配置化的(比如通过 XML 文件配置 JavaBean、Filter 等),为了保证框架的通用性,它们可能需要根据配置文件加载不同的对象或类,调用不同的方法,这个时候就必须用到反射——运行时动态加载需要加载的对象。 动态代理 - 在切面编程(AOP)中,需要拦截特定的方法,通常,会选择动态代理方式。这时,就需要反射技术来实现了。 注解 - 注解本身仅仅是起到标记作用,它需要利用反射机制,根据注解标记去调用注解解释器,执行行为。如果没有反射机制,注解并不比注释更有用。 可扩展性功能 - 应用程序可以通过使用完全限定名称创建可扩展性对象实例来使用外部的用户定义类。 反射的缺点 性能开销...
深入理解 Java 泛型
深入理解 Java 泛型什么是泛型Java 泛型(generics)是 JDK 5 中引入的特性。 为什么要引入泛型机制呢? 回答这个问题前,先让我们来看一个示例。 123456789101112131415161718192021222324252627public class NoGenericsDemo { public static void main(String[] args) { List list = new ArrayList<>(); list.add("abc"); list.add(18); list.add(new double[] {1.0, 2.0}); Object obj1 = list.get(0); Object obj2 = list.get(1); Object obj3 = list.get(2); System.out.println("...
Spring 资源管理
Spring 资源管理 Version 6.0.3 Resource 接口相对标准 URL 访问机制,Spring 的 org.springframework.core.io.Resource 接口抽象了对底层资源的访问接口,提供了一套更好的访问方式。 12345678910111213141516171819202122232425262728public interface Resource extends InputStreamSource { boolean exists(); boolean isReadable(); boolean isOpen(); boolean isFile(); URL getURL() throws IOException; URI getURI() throws IOException; File getFile() throws IOException; ReadableByteChannel readableChannel() throws IOException; l...
PostgreSQL 应用指南
PostgreSQL 应用指南 PostgreSQL 是一个关系型数据库(RDBM)。 关键词:Database, RDBM, psql 安装 本文仅以运行在 Centos 环境下举例。 进入官方下载页面,根据操作系统选择合适版本。 官方下载页面要求用户选择相应版本,然后动态的给出安装提示,如下图所示: 前 3 步要求用户选择,后 4 步是根据选择动态提示的安装步骤 (1)选择 PostgreSQL 版本 (2)选择平台 (3)选择架构 (4)安装 PostgreSQL 的 rpm 仓库(为了识别下载源) 1yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm (5)安装客户端 1yum install postgresql10 (6)安装服务端(可选的) 1yum install postgresql10-server (7)设置开机启动(可选的) 123/usr/pgsql-10/bin/pos...
H2 应用指南
H2 应用指南概述H2 是一个开源的嵌入式数据库引擎,采用 java 语言编写,不受平台的限制。同时 H2 提供了一个十分方便的 web 控制台用于操作和管理数据库内容。H2 还提供兼容模式,可以兼容一些主流的数据库,因此采用 H2 作为开发期的数据库非常方便。 使用说明H2 控制台应用H2 允许用户通过浏览器接口方式访问 SQL 数据库。 进入官方下载地址,选择合适版本,下载并安装到本地。 启动方式:在 bin 目录下,双击 jar 包;执行 java -jar h2*.jar;执行脚本:h2.bat 或 h2.sh。 在浏览器中访问:http://localhost:8082,应该可以看到下图中的页面: 点击 Connect ,可以进入操作界面: 操作界面十分简单,不一一细说。 嵌入式应用JDBC API123Connection conn = DriverManager. getConnection("jdbc:h2:~/test");conn.close(); 详见:Using the JDBC API 连接池12345import...
sqlite
SQLite SQLite 是一个无服务器的、零配置的、事务性的的开源数据库引擎。 SQLite 简介SQLite 是一个C语言编写的轻量级、全功能、无服务器、零配置的的开源数据库引擎。 SQLite 的设计目标是嵌入式的数据库,很多嵌入式产品中都使用了它。SQLite 十分轻量,占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。SQLite 能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库管理系统来讲,它的处理速度比他们都快。 SQLite 大小只有 3M 左右,可以将整个 SQLite 嵌入到应用中,而不用采用传统的客户端/服务器(Client/Server)的架构。这样做的好处就是非常轻便,在许多智能设备和应用中都可以使用 SQLite,比如微信就采用了 SQLite 作为本地聊天记录的存储。 优点 SQLite 是自给自足的,这意味着不需要任何外部的依赖。 SQLite 是无服务器的、零配置的,这意味着不需要安装...
Spring 集成 Mybatis
Spring 集成 MybatisMybatis 官网 是一款持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。 快速入门要使用 MyBatis, 只需将 mybatis-x.x.x.jar 文件置于类路径(classpath)中即可。 如果使用 Maven 来构建项目,则需将下面的依赖代码置于 pom.xml 文件中: 12345<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>x.x.x</version></dependency> 从 XML 中构建 SqlSessionFactor...
Java 编程规范
Java 编程规范 编程规范就是 Java 开发的最佳实践。帮助开发人员少走弯路。 Effective Java 第 2 章 创建、销毁对象 第 1 条:考虑用静态工厂方法代替构造器 第 2 条:遇到多个构造器参数时要考虑用构建器 第 3 条:用私有构造器或者枚举类型强化 Singleton 属性 第 4 条:通过私有构造器强化不可实例化的能力 第 5 条:避免创建不必要的对象 第 6 条:消除过期的对象引用 第 7 条:避免使用终结方法 第 3 章 对于所有对象都通用的方法 第 8 条:覆盖 equals 时请遵守通用约定 第 9 条:覆盖 equals 时总要覆盖 hashCode 第 10 条:始终要覆盖 toString 第 11 条:谨慎地覆盖 clone 第 12 条:考虑实现 Comparable 接口 第 4 章 类和接口 第 13 条:使类和成员的可访问性最小化 第 14 条:在公有类中使用访问方法而非公有域 第 15 条:使可变性最小化 第 16 条:复合优先于继承 第 17 条:要么为继承而设计,并提供文档说明,要么就禁止继承 第 18 条:接口优...