Skip to content

Commit a2769c6

Browse files
committed
version 1.2.0.0 update
废弃@MakeReadWriteLocks注解,现在不需要该注解也能正常识别自定义的锁;精简代码,提高编译速度
1 parent 7ad77c2 commit a2769c6

File tree

14 files changed

+50
-81
lines changed

14 files changed

+50
-81
lines changed

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,4 +85,7 @@
8585
<tr>
8686
<td>1.1.0.0</td><td>新增注解<code>@MakeReadWriteLocks</code>用于对类生成自定义读写锁,其<code>fair</code>属性来自于注解的类下<code>@ReadLock</code>注解或<code>@WriteLock</code>注解的<code>fair</code>属性值</td><td>2022年2月6日</td>
8787
</tr>
88+
<tr>
89+
<td>1.2.0.0</td><td>废弃<code>@MakeReadWriteLocks</code>注解,现在不需要该注解也能正常识别自定义的锁;精简代码,提高编译速度</td><td>2022年2月6日</td>
90+
</tr>
8891
</table>

src/main/java/org/springframework/lock/annotation/MakeReadWriteLocks.java

Lines changed: 0 additions & 18 deletions
This file was deleted.

src/main/java/org/springframework/lock/annotation/OptimisticLock.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
public @interface OptimisticLock {
1313

1414
/**
15-
* 乐观锁变量的名称
15+
* 乐观锁变量的名称,该变量必须是合法变量名。如果与现有变量冲突,则替换掉现有变量
1616
* @return 默认使用自动生成的锁
1717
*/
1818
String value() default "";

src/main/java/org/springframework/lock/annotation/ReadLock.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@
1515
public @interface ReadLock {
1616

1717
/**
18-
* 读写锁变量的名称,该变量必须是{@code ReentrantReadWriteLock}类的对象或其子类对象
18+
* 读写锁变量的名称,该变量必须是合法变量名。如果与现有变量冲突,则替换掉现有变量
1919
* @return 默认使用编译生成的
2020
*/
2121
String value() default "";
2222

2323
/**
24-
* 编译时生成的是否公平锁,该属性仅在{@code value}属性保持默认时才生效
24+
* 是否为公平锁,同一把锁{@code fair}属性只需要写一次即可。如果{@code value}属性与现有变量冲突,则此处的{@code fair}属性将替换掉现有变量的{@code fair}属性
2525
* @return 默认null,如果有自定义值则覆盖默认值
2626
*/
2727
BooleanEnum fair() default NULL;

src/main/java/org/springframework/lock/annotation/WriteLock.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@
1515
public @interface WriteLock {
1616

1717
/**
18-
* 读写锁变量的名称,该变量必须是{@code ReentrantReadWriteLock}类的对象或其子类对象
18+
* 读写锁变量的名称,该变量必须是合法变量名。如果与现有变量冲突,则替换掉现有变量
1919
* @return 默认使用编译生成的
2020
*/
2121
String value() default "";
2222

2323
/**
24-
* 编译时生成的是否公平锁,该属性仅在{@code value}属性保持默认时才生效
24+
* 是否为公平锁,同一把锁{@code fair}属性只需要写一次即可。如果{@code value}属性与现有变量冲突,则此处的{@code fair}属性将替换掉现有变量的{@code fair}属性
2525
* @return 默认null,如果有自定义值则覆盖默认值
2626
*/
2727
BooleanEnum fair() default NULL;

src/main/java/org/springframework/lock/annotation/package-info.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@
33
* 每个注解上都有对应的注释,写得很清楚,自己看就可以了,不加以赘述.
44
* 需要注意的是,如果需要使锁注解生效,需要在springboot启动类上添加{@code @EnableSpringLocks}注解
55
* @author 宗祥瑞
6-
* @version 1.0.0.0
6+
* @version 1.2.0.0
77
*/
88
package org.springframework.lock.annotation;

src/main/java/org/springframework/lock/aspect/OptimisticLockAspect.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,7 @@ private static Thread findThread(long threadId) {
161161
* @param waitTime 最长等待时长
162162
* @param pollingTime 轮询周期
163163
* @return 是否获得锁
164+
* @throws InterruptedException 中断异常
164165
*/
165166
private boolean tryLock(AtomicLong lock, long waitTime, long pollingTime) throws InterruptedException {
166167
long startWaitTime = System.currentTimeMillis();

src/main/java/org/springframework/lock/aspect/package-info.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@
33
* 每个切面都有注释,没什么好说的,不加以赘述.
44
* 切面这部分需要托管到spring容器中去执行.
55
* @author 宗祥瑞
6-
* @version 1.0.0.0
6+
* @version 1.2.0.0
77
*/
88
package org.springframework.lock.aspect;
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/**
22
* 这是关于枚举类型的包.
33
* 写得很清楚,直接看代码就好了.
4-
* @version 1.0.0.0
4+
* @version 1.2.0.0
55
* @author 宗祥瑞
66
*/
77
package org.springframework.lock.enumeration;

src/main/java/org/springframework/lock/processor/OptimisticLockProcessor.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,6 @@ public synchronized void init(ProcessingEnvironment processingEnv) {
8080
@Override
8181
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
8282
for (TypeElement annotation : annotations) {
83-
Set<TypeElement> cls = new HashSet<TypeElement>();
8483
Set<? extends Element> elements = roundEnv.getElementsAnnotatedWith(annotation);
8584
// 找到都有哪些类里面的方法用到了这个注解
8685
Map<TypeElement, List<String>> map = new HashMap<TypeElement, List<String>>();
@@ -89,11 +88,10 @@ public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment
8988
String varName = method.getAnnotation(OptimisticLock.class).value();
9089
TypeElement clz = (TypeElement) method.getEnclosingElement();
9190
messager.printMessage(Diagnostic.Kind.NOTE, "发现需要包含注解" + annotation.getQualifiedName() + "的类" + clz.getQualifiedName());
92-
cls.add(clz);
9391
map.computeIfAbsent(clz, k -> nil());
9492
map.computeIfPresent(clz, (k, v) -> v.append(varName));
9593
}
96-
for (TypeElement clz : cls) {
94+
for (TypeElement clz : map.keySet()) {
9795
List<String> lockNames = map.get(clz);
9896
if (lockNames.contains("")){
9997
lockNames = List.filter(lockNames, "");
@@ -112,7 +110,7 @@ public void visitClassDef(JCTree.JCClassDecl jcClassDecl) {
112110
JCVariableDecl var = (JCVariableDecl) jcTree;
113111
if (locks.contains("" + var.name)) {
114112
// 找到了类中的乐观锁,舍弃掉
115-
messager.printMessage(Diagnostic.Kind.NOTE, "已发现" + clz.getQualifiedName() + "类中的乐观锁" + var.name);
113+
messager.printMessage(Diagnostic.Kind.WARNING, "已发现" + clz.getQualifiedName() + "类中的同名变量" + var.name + ", 将进行替换");
116114
}else{
117115
tree = tree.append(jcTree);
118116
}

0 commit comments

Comments
 (0)