增加ResourceInjected功能

This commit is contained in:
redkale
2023-12-19 09:53:46 +08:00
parent d3a6f46c6c
commit 24a043195a
20 changed files with 257 additions and 75 deletions

View File

@@ -3,7 +3,7 @@
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package org.redkale.test.util;
package org.redkale.test.inject;
import java.io.File;
import java.lang.annotation.*;

View File

@@ -0,0 +1,68 @@
/*
*
*/
package org.redkale.test.inject;
import java.util.concurrent.atomic.AtomicInteger;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.redkale.annotation.Resource;
import org.redkale.annotation.ResourceInjected;
import org.redkale.inject.ResourceFactory;
import org.redkale.service.Service;
/**
*
* @author zhangjx
*/
public class ResourceInjectedTest {
public static void main(String[] args) throws Throwable {
ResourceInjectedTest test = new ResourceInjectedTest();
test.run();
}
@Test
public void run() throws Exception {
ResourceFactory factory = ResourceFactory.create();
factory.register("res.id", "2345");
factory.register("res.name", "my old name");
ResourceService res = new ResourceService();
factory.inject(res);
factory.register("", res);
RoomService serice = new RoomService();
factory.inject(serice);
Assertions.assertEquals(1, ResourceService.counter.get());
}
public static class RoomService implements Service {
@Resource
private ResourceService resService;
public void test() {
resService.doing();
}
}
public static class ResourceService implements Service {
private static final AtomicInteger counter = new AtomicInteger();
@Resource(name = "res.id")
private int id;
@Resource(name = "res.name")
private String name;
@ResourceInjected
private void onInjected(Object src, String fieldName) {
counter.incrementAndGet();
System.out.println("资源被注入到对象(" + src + ")的字段(" + fieldName + ")上");
}
public void doing() {
System.out.println("id = " + id + ", name = " + name);
}
}
}

View File

@@ -1,15 +1,15 @@
/*
*/
package org.redkale.test.util;
package org.redkale.test.inject;
import java.util.Properties;
import java.util.concurrent.atomic.AtomicInteger;
import org.junit.jupiter.api.*;
import org.redkale.annotation.Resource;
import org.redkale.annotation.ResourceListener;
import org.redkale.inject.ResourceEvent;
import org.redkale.inject.ResourceFactory;
import org.redkale.util.*;
import org.redkale.annotation.ResourceChanged;
/**
*
@@ -71,7 +71,7 @@ public class ResourceListenerTest {
@Resource(name = "property.desc", required = false)
private String desc;
@ResourceListener
@ResourceChanged
private void changeResource(ResourceEvent[] events) {
for (ResourceEvent event : events) {
counter.incrementAndGet();
@@ -92,7 +92,7 @@ public class ResourceListenerTest {
@Resource
private Environment env;
@ResourceListener
@ResourceChanged
private void changeResource(ResourceEvent[] events) {
for (ResourceEvent event : events) {
counter.incrementAndGet();
@@ -116,7 +116,7 @@ public class ResourceListenerTest {
@Resource
private Environment env;
@ResourceListener
@ResourceChanged
private void changeResource(ResourceEvent[] events) {
for (ResourceEvent event : events) {
counter.incrementAndGet();

View File

@@ -1,6 +1,6 @@
/*
*/
package org.redkale.test.util;
package org.redkale.test.inject;
import org.junit.jupiter.api.*;
import org.redkale.annotation.Resource;

View File

@@ -3,7 +3,7 @@
* To change this template bigint, choose Tools | Templates
* and open the template in the editor.
*/
package org.redkale.test.util;
package org.redkale.test.inject;
import java.math.BigInteger;
import java.util.Properties;
@@ -77,7 +77,7 @@ class BService {
private String name = "";
@ResourceListener
@ResourceChanged
private void changeResource(ResourceEvent[] events) {
for (ResourceEvent event : events) {
System.out.println(getClass().getSimpleName() + " @Resource = " + event.name() + " 资源变更: newVal = " + event.newValue() + ", oldVal = " + event.oldValue());