Java社区

使用@ComponentScan 和过滤器进行类路径扫描

使用@ComponentScan 和过滤器进行类路径扫描简介类路径扫描基本上意味着,检测指定包下需要由 Spring 管理的类。您需要使用带有@Configuration 的spring @ComponentScan 注释进行类路径扫描。此注解允许您指定基本包和过滤器(如果需要精细控制包扫描)。我们将在本文中研究这两种方法。深入看@ComponentScan注解在学习使用这个注解之前,我们先来看看
20小时前发布 12分钟阅读

使用@Primary 和@Qualifier 微调自动装配

使用@Primary 和@Qualifier 微调自动装配简介当我们有多个相同基类类型的 bean 时,按类型自动装配会导致歧义。因为有多个相同类型的 bean,所以控制 bean 选择过程很重要。Spring 提供了 @Primary 注释,它将特定的 bean 声明为主要的,这意味着在自动装配到单值依赖项时,主要 bean 将被赋予更高的首选项。另一方面,Spring 还提供了 @Qualif
2天前发布 28分钟阅读

Spring bean定义继承

Spring bean定义继承在 Spring Framework 中,bean 定义继承(bean 配置继承)是我们必须学习的一个宝贵的省时特性。如您所知,bean 定义只不过是 Spring IoC 容器根据详细信息创建我们的 bean 的配置。这些 bean 定义可以包含很多有用的配置,如构造函数参数、属性值、初始化方法等。1、使用 Bean 定义继承,子 bean 定义从父配置继承配置。2
5天前发布 10分钟阅读

Spring框架高级介绍

什么是Spring框架这个问题的古老答案是,“Spring 是一个依赖注入框架”。实际上,它远不止于此。Spring 是最流行的 Java 企业应用程序开发框架,它带有许多工具和库来解决 Java 世界中的几乎所有问题。无论是微服务还是简单的数据库驱动的企业应用程序,Spring 都有必要的工具来帮助您入门。目前很难解释 Spring技术栈中可用的所有功能和库,随着您的进步,您将逐渐了解它们。您会
17天前更新 4分钟阅读

什么是控制反转(IOC)

什么是控制反转(IOC)控制反转 (IoC) 和依赖注入 (DI) 是用于解耦类依赖关系的编程模式。在本文中,我们将讨论 Spring Framework 的 IoC 和 DI。为简单起见,假设类 Vehicle 依赖于类 Engine,这意味着没有 Engine 的 Vehicle 没有意义。我们需要确保通过保持代码松散耦合来满足这种依赖关系。所以我们使用一个特殊的类来确保对象的创建以正确的顺序
18天前发布 21分钟阅读

JPA——Cascade理解

首先,我们提出两个比较有意思的问题:我们得理解什么是JPA中的Cascade?其次我们需要理解Cascade在什么情况下使用? JPA中的Cascade是什么JPA将实体状态转化为数据库的DML执行语句。一般情况下,我们都是对实体图(也可以称为实体网络图)进行操作,JPA 允许我们将实体状态更改从父实体传播到子实体。这些行为是通过 CascadeType 映射配置的。 JPA中
22天前更新 3分钟阅读

创建型设计模式:工厂方法(factory method)

情况:各子公司合作的物流公司不同接着简单工厂与物流公司合作的例子。公司在多个地区和物流公司都有合作,但各个地区合作的物流公司有所不同,并且有些公司还是当地的物流。简单工厂解决方案结合简单工厂模式,我们可以创建各个地区的简单工厂。这样做先得定义简单工厂的接口:public interface SimpleExpressFactory { Express createExpress(String
2个月前发布 16分钟阅读

JPA——CascadeType.PERSIST

今天我们来学习一种简单的级联关系——CascadeType.PERSIST。业务分析首先,我们使用一个具体的业务场景,每个Post内容都有一个PostDetails细节,它们之间是一对一的关系,按照业务原则,我们来看看Post和PostDetails之间的关系是组合还是聚合,没有了Post,那么PostDetails没有存在的必要,因此PostDetails没有单独存在的可能性。因此它们之间是组合
2个月前更新 12分钟阅读

DDD实践思考:文章投票点赞功能的领域建模

功能说明文章投票功能简单描述:用户阅读文章后,可以给文章投票,投票包括两个方向:支持或不支持。设计思考基于领域驱动设计常见的做法,首先可以确定的是文章Article是一个聚合根。Article包含title,content,description等等。有疑惑的地方是:投票Vote是否要单独出来做聚合根,还是把它放在Article聚合根下?需要考虑一下几点:Article和Vote是一对多的关系,但
2个月前更新 6分钟阅读

JPA实体映射——一对多关系映射(上)

依照上一节的案例,我们来拆解一对多的关系怎么使用,首先还是把业务关系图弄出来。业务案例图业务分析从图中我们知道,研究所和部门是一对多关系,今天我们来展示,一对多设计的最佳实践。我们知道在JPA的实体设计中,一对多的关系可以设计成单向关联,也可以设计成双向关联。今天我们一步一步来实践各种设计,从而总结出最佳实践。Unidirectional @OneToMany 研究所实体port jav
2个月前更新 27分钟阅读

JPA实体映射——一对多关系映射(中)

紧接上一节的学习,我们还是首先把业务关系图整理出来。业务案例图上一节我们知道,采用单向关联如果不使用@JoinColumn时,在新增一个研究所实体的时候,会生成三张表,并且会执行多条插入语句,在使用@JoinColumn时,会生成两张表,同时在departments上生成一个department_id字段,而JPA在插入数据时,采用的是先插入部门表数据,然后更新外键字段,这种方式,插入的效率不是很
2个月前更新 23分钟阅读

JPA实体映射——多对一关系映射

前几节我们介绍了一对多的关系和一对一关系,今天我们学习多对一关系以及这种映射方式的最佳实践,先上业务实例图。在我们的业务关系图中,部门和研究所实体是多对一的关系,同时我们还是采用双向关联来说明问题Bidirectional @ManyToOne部门实体import javax.persistence.*; import java.io.Serializable; import java.util.
2个月前更新 21分钟阅读

JPA实体映射——一对一关系映射

前几节我们介绍了一对多的关系,今天我们学习一对一关系以及这种映射方式的最佳实践,先上业务实例图。从图中可以看出,研究所和社交账号有一对一的关系,部门和社交账号也有一对一的关系,我们选用研究所和社交账号的关系来说明问题。Bidirectional @OneToOne研究所实体mport javax.persistence.*; import java.io.Serializable; import
2个月前更新 21分钟阅读

JPA实体映射——Entity Mapping

学习JPA,实体之间的映射关系是最重要的一环,为了学习和讨论这部分知识,我们将这部分知识分为若干章节进行学习,我们也会用实际的例子进行分析,并且指出存在的问题,然后给出相应的优化方案。 第一步,我们列出具体的案例我们分别使用了三个实体:Institute(研究所),Department(部门),SocialProfile(社交账号)。如上图所示,研究所和部门是一对多的关系,研究所和社交账
2个月前更新 24分钟阅读

JPA实体状态深入理解

我们在学习JPA实体状态的时候,常常会问,JPA的实体有多少状态呢?相信这个问题不难回答:瞬时态(transient)托管态(persistent)游离态(detached)移除态(removed)注意:这里最后一个移除态,有的时候也叫删除态(deleted),至于它和移除态有啥区别,暂时没有想到,如果您对此有更加深刻的理解,请留言回复。为什么会有这四种状态呢?啥,这个也有为啥,网上不是都这么说的
2个月前更新 2分钟阅读

JPA实体状态学习-(移除态:Removed)

今天继续学习JPA中实体的最后一种状态:移除态。还是先把图晒出来:按照名称进行猜想,移除态应该就是对象从数据库中删除以后,对象变成了不受持久化上下文管理的移除态。不过呢,这里有一点需要注意的是:什么样的对象才会进入进入移除态呢?变成移除状态的对象是调用persist()方法后,是像persist一样参数对象受到持久化上下文管理呢?还是像merge方法一样返回的对象受到持久化上下文管理呢?这里还有一
2个月前更新 26分钟阅读

JPA实体状态学习-(持久态:Persistent)

今天我们继续学习JPA的实体状态转化,老规矩贴上实体转化的转化图: 上一节我们学习了:entityManager调用persist()方法后,实体的状态从transient到persistent,这个时候对persistent状态的实体改变也会同步持久化到数据库,执行tx.commit()之后实体进入detached状态,此时对实体进行改变后不会同步到数据库。今天我们来看看transie
2个月前更新 40分钟阅读
数据加载中