SpringBoot的自动装配原理分析

在Spring Boot应用中的自动装配是通过@EnableAutoConfiguration 注解进行开启的。@EnableAutoConfiguration 可以帮助 Spring Boot 应用将所有符合条件的 @Configuration 配置类的 bean 都加载到 Spring IoC 容器中。

我们看下@SpringBootApplication注解,默认是启动@EnableAutoConfiguration 的。

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
		@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {

	@AliasFor(annotation = EnableAutoConfiguration.class)
	Class<?>[] exclude() default {};

	@AliasFor(annotation = EnableAutoConfiguration.class)
	String[] excludeName() default {};

	@AliasFor(annotation = ComponentScan.class, attribute = "basePackages")
	String[] scanBasePackages() default {};

	@AliasFor(annotation = ComponentScan.class, attribute = "basePackageClasses")
	Class<?>[] scanBasePackageClasses() default {};

	@AliasFor(annotation = Configuration.class)
	boolean proxyBeanMethods() default true;

}
[阅读全文]

SpringBoot配置文件加载的路径和优先级

很多人对SpringBoot文件加载的位置和优先级有点疑惑,下面通过源码看下到底是如何加载的。

我们先来看下SpringBoot加载PropertySource的顺序是如何的呢?可以参考官网:https://docs.spring.io/spring-boot/docs/2.2.5.RELEASE/reference/htmlsingle/#boot-features-external-config

配置加载的优先级从高到低,其中高优先级可以覆盖低优先级的配置。

[阅读全文]

JPA ID生成策略

JPA 为对象关系映射提供了了⼀一种基于 POJO 的持久化模型

  • 简化数据持久化代码的开发⼯工作
  • 为 Java 社区屏蔽不不同持久化 API 的差异

JPA定义了持久化的标准,而Hibernate是持久化的实现。Spring Data JPA就是在Hibernate的基础上封装实现的。

JPA提供了很多常用的注解,下面就来讲下关于主键的生成策略,主要的注解有:

@Id
@GeneratedValue(strategy, generator)
@SequenceGenerator(name, sequenceName)
[阅读全文]

SpringBoot2干货系列 | 第二篇:Spring AOP 哪些事儿

AOP(Aspect-Oriented Programming) 即面向方面编程. 它是一种在运行时,动态地将代码切入到类的指定方法、指定位置上的编程思想. 用于切入到指定类指定方法的代码片段叫做切面, 而切入到哪些类中的哪些方法叫做切入点.

AOP是OOP的有益补充,OOP从横向上区分出了一个个类,AOP则从纵向上向指定类的指定方法中动态地切入代码. 它使OOP变得更加立体.

Java中的动态代理或CGLib就是AOP的体现.

[阅读全文]