Java Config 相关注解 @Configuration:标注当前类是一个配置类。 @ImportResource:注入配置以外的xml文件的信息。 @ComponentScan:告诉Spring容器可以去扫描哪些package下的Bean。 @Bean:作用于方法上,它的返回值将作为一个Bean存在于ApplicationContext当中。 @ConfigurationProperties:用于绑定配置properites文件中的信息。 Bean的定义相关的注解 @Component / @Repository / @Service : 语义划分组件层次。 @Controller / @RestController:标注Bean为Web层的Bean。 @RequestMapping:方法与URL进行绑定。 Bean注入相关注解 @Autowired :按类型查找上下文中的Bean,并且完成注入。如果上下文中存在多个同类型的Bean,则会产生歧义性,需要搭配@Qualifier @Qualifier :用来声明注入Bean的名字。 @Resource :与@Autow....
统一异常DataAccessException Spring会将常见的数据库操(mysql、oracle、db2…)作异常转换为自己的异常DataAccessException,因此无论使用何种数据访问方式,都能使用一样的异常。 定制错误码 sql-error-codes.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd"> <beans> <bean id="H2" class="org.springframework.jdbc.support.SQLErrorCodes"> <!-- 复制spring官方sql-error-codes.xml 中 描述 H2 相关的错误码定义 --> <property name="badSqlGrammarCodes"> ....
Spring 的事务抽象 Spring 为数据访问层提供了很多抽象,在这些抽象下面我们可以非常方便的使用统一的方式来操作不同的框架。 Spring 的事务抽象采用了一致的事务模型,方便你使用不同的 JDBC/Hibernate/myBatis DataSource/JTA 事务抽象的核心接口 不同框架的事务管理器都现了 AbstractPlatformTransactionManager,AbstractPlatformTransactionManager 实现了 PlatformTransactionManager,所以 PlatformTransactionManager 的实现类可以是以下类: DataSourceTransactionManager HibernateTransactionManager JtaTransactionManager public interface PlatformTransactionManager { //TransactionStatus 获取事务状态,TransactionDefinition用于设置事务传播特性、隔离级别、....
Spring 的 JDBC 操作类 在 Spring 中的 JDBC 操作主要集中在 spring-jdbc 包中,此包一共分为四个部分: core,JdbcTemplate 等相关核心接口和类 datasource, 数据源相关的辅助类 object, 将基本的 JDBC 操作封装成对象 support, 错误码等其他辅助工具 JdbcTemplate 提供的功能 query queryForObject queryForList update (插入、修改、删除) execute (通用) SQL 批处理 JdbcTemplate.batchUpdate() : BatchPreparedStatementSetter NamedParameterJdbcTemplate.batchUpdate() : SqlParameterSourceUtils.createBatch 引入依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4....
HikariCP HikariCP来自于日语,意为:光。 它本身作为 SpringBoot 2.X 默认的连接池。 "Fast"源于深度优化和大量小改进 字节码级别优化(很多方法通过 JavaAssist 生成) 大量小改进:用 FastStatementList 代替 ArrayList、无锁集合 ConcurrentBag 、 代理类的优化(用 invokestatic 代替 invokevirtual) SpringBoot 中的配置 默认使用 HikariCP application.properties 配置格式 spring.datasource.hikari.* 如果是 SpringBoot 1.x 需要在 maven 中移除默认的 tomcat-jdbc 依赖,并且引入 HikariCP 的 Maven 依赖,并且在 application.properties 配置文件中指定默认的连接池类型 spring.datasource.type=com.zaxxer.hikari.HikariDataSource # 暴露Actuator management.e....
SpringBoot 配置单数据源 引入依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.1.RELEASE</versio....
框架层集成Swagger文档 API虽然没有直接的UI,当API体验是十分重要的。API体验指的就是API文档,文档的书写时一个繁琐的体力活儿。大部分开发人员都不太愿意写文档。所以如果框架能够直接支持文档的自动生成,就会大大简化企业维护API文档的工作。 Springboot支持Swagger文档的自动生成。Swagger是基于当前业界Open API 规范开发的工具链。 Springboot中启用Swagger功能 引入依赖 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> </dependency> ....