# bean-bridge **Repository Path**: coufran/bean-bridge ## Basic Information - **Project Name**: bean-bridge - **Description**: Bean属性桥接工具 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-04-21 - **Last Updated**: 2023-01-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: lib, Java ## README # BeanBridge BeanBridge是一个Bean属性桥接器。可以通过简单的代码,在两个无关联的实体之间桥接属性。 # 用法 ## 访问接口 1. 复制同名属性 BeanBridge将通过getter和setter访问对象属性。 ```java BeanBridge.copy(Obejct source, Object target); ``` 示例: ```java public class Source { private String value; // getter and setter } public class Target { private String value; // getter and setter } Source source = new Source(); source.setValue("BeanBridge"); Target target = new Target(); BeanBridge.copy(source, target); System.out.println(target.getValue()); // 输出:BeanBridge ``` 2. 指定访问模式 ``AccessMode.PROPERTY``:使用getter或setter访问属性。 ``AccessMode.FIELD``:直接通过反射访问属性。 ```java BeanBridge.copy(Obejct source, Object target, AccessMode accessMode); ``` 示例: ```java public class Source { private String value; } public class Target { private String value; } Source source = new Source(); source.setValue("BeanBridge"); Target target = new Target(); BeanBridge.copy(source, target, AccessMode.FIELD); System.out.println(target.getValue()); // 输出:BeanBridge ``` ## 自定义桥接关系 在桥接的类上,可通过``@Bridge``注解标记桥接关系,标记多个桥接关系时,使用``@Bridge.List``注解。 例如: ```java public class Demo { @Bridge("value2") @Bridge.List({ @Bridge(value = "value3", scope = Demo2.class) @Bridge(value = "value4", scope = Demo3.class) }) private String value; } ``` ### ``@Bridge``注解属性 |属性|类型|默认值|说明| |---|---|---|---| |``value``|``String``||指定对侧属性| |``from``|``String``||指定来源属性,可覆盖``value``属性| |``to``|``String``||指定目标属性,可覆盖``value``属性| |``scope``|``Class``|`Object.class`|指定桥接关系生效的范围,指定父类同时对子类生效| |``deep``|``boolean``|`false`|指定是否深度桥接| ### 桥接关系优先级 桥接关系优先级按照从大到小排序如下: 1. 目标侧指定范围的显式桥接关系。 2. 来源侧指定范围的显式桥接关系。 3. 目标侧显式桥接关系。 4. 来源侧显式桥接关系。 5. 隐式桥接关系。 > - 目标侧:写入属性值的一方。 > - 来源侧:读出属性值的一方。 > - 显式桥接关系:通过``@Bridge``注解指定的桥接关系。 > - 隐式桥接关系:属性自带的桥接关系,每一个属性都有一个默认隐式的桥接关系——桥接对侧同名属性。