diff --git a/injection/src/main/java/de/neitzel/injection/ComponentScanner.java b/injection/src/main/java/de/neitzel/injection/ComponentScanner.java index ca69cdb..eb312d3 100644 --- a/injection/src/main/java/de/neitzel/injection/ComponentScanner.java +++ b/injection/src/main/java/de/neitzel/injection/ComponentScanner.java @@ -1,7 +1,7 @@ package de.neitzel.injection; -import de.neitzel.injection.annotation.Component; -import de.neitzel.injection.annotation.Inject; +import jakarta.inject.Inject; +import jakarta.inject.Singleton; import org.reflections.Reflections; import java.lang.reflect.Constructor; @@ -110,14 +110,14 @@ public class ComponentScanner { } /** - * Scans the specified base package for classes annotated with {@link Component}. + * Scans the specified base package for classes annotated with {@link Singleton}. * Identified component classes are added to a collection for further processing. * * @param basePackage the package to scan for component annotations */ private void scanForComponents(String basePackage) { Reflections reflections = new Reflections(basePackage); - components.addAll(reflections.getTypesAnnotatedWith(Component.class)); + components.addAll(reflections.getTypesAnnotatedWith(Singleton.class)); } /** @@ -196,8 +196,8 @@ public class ComponentScanner { .collect(Collectors.toSet()); for (Class clazz : resolvableNow) { - Component annotation = clazz.getAnnotation(Component.class); - ComponentData componentInfo = new ComponentData(clazz, annotation.scope()); + Singleton annotation = clazz.getAnnotation(Singleton.class); + ComponentData componentInfo = new ComponentData(clazz, Scope.SINGLETON); resolved.add(clazz); registerComponentWithSuperTypes(componentInfo, knownTypes); diff --git a/injection/src/main/java/de/neitzel/injection/annotation/Component.java b/injection/src/main/java/de/neitzel/injection/annotation/Component.java deleted file mode 100644 index 35c2b4e..0000000 --- a/injection/src/main/java/de/neitzel/injection/annotation/Component.java +++ /dev/null @@ -1,37 +0,0 @@ -package de.neitzel.injection.annotation; - -import de.neitzel.injection.Scope; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * Indicates that an annotated class is a "component" within a dependency injection framework. - * Classes annotated with {@code @Component} are recognized during the component scanning process - * as candidates for instantiation and management by the dependency injection framework. - *

- * This annotation is typically used on classes that represent application-specific components, - * such as service implementations, controllers, or other objects intended to be instantiated - * and injected into other components during runtime. - *

- * The annotation must be placed at the type level, and it is retained at runtime - * to allow for reflection-based scanning of classes within specified packages. - *

- * Usage of this annotation assumes that there exists a component scanning mechanism - * that processes annotated classes and identifies their roles, dependencies, and hierarchy - * within the application's structure. - */ -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.TYPE) -public @interface Component { - /** - * Defines the scope of a component within the dependency injection framework. - * The scope determines whether the component is instantiated as a singleton or - * as a prototype. - * - * @return the scope of the component, defaulting to {@code Scope.SINGLETON}. - */ - Scope scope() default Scope.SINGLETON; -} diff --git a/injection/src/main/java/de/neitzel/injection/annotation/Inject.java b/injection/src/main/java/de/neitzel/injection/annotation/Inject.java deleted file mode 100644 index 7b92d40..0000000 --- a/injection/src/main/java/de/neitzel/injection/annotation/Inject.java +++ /dev/null @@ -1,24 +0,0 @@ -package de.neitzel.injection.annotation; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * Indicates that a field is a candidate for dependency injection within - * a dependency injection framework. Fields annotated with {@code @Inject} - * are automatically populated with the required component instance during runtime, - * typically by the dependency injection container. - *

- * This annotation must be applied at the field level and is retained at runtime - * to enable reflection-based identification and assignment of dependencies. - *

- * The framework's dependency resolution mechanism identifies the appropriate - * instance to inject based on the field's type or custom configuration, - * ensuring loose coupling and easier testability. - */ -@Target(ElementType.FIELD) -@Retention(RetentionPolicy.RUNTIME) -public @interface Inject { -} diff --git a/injection/src/test/java/de/neitzel/injection/testcomponents/test1ok/TestComponent1_1.java b/injection/src/test/java/de/neitzel/injection/testcomponents/test1ok/TestComponent1_1.java index 649a1a2..c970560 100644 --- a/injection/src/test/java/de/neitzel/injection/testcomponents/test1ok/TestComponent1_1.java +++ b/injection/src/test/java/de/neitzel/injection/testcomponents/test1ok/TestComponent1_1.java @@ -1,8 +1,8 @@ package de.neitzel.injection.testcomponents.test1ok; -import de.neitzel.injection.annotation.Component; +import jakarta.inject.Singleton; -@Component +@Singleton public class TestComponent1_1 extends SuperClass implements TestInterface1_2 { public TestComponent1_1() { } diff --git a/injection/src/test/java/de/neitzel/injection/testcomponents/test1ok/sub/TestComponent1_2.java b/injection/src/test/java/de/neitzel/injection/testcomponents/test1ok/sub/TestComponent1_2.java index f7e5ff5..d4f67e5 100644 --- a/injection/src/test/java/de/neitzel/injection/testcomponents/test1ok/sub/TestComponent1_2.java +++ b/injection/src/test/java/de/neitzel/injection/testcomponents/test1ok/sub/TestComponent1_2.java @@ -1,11 +1,11 @@ package de.neitzel.injection.testcomponents.test1ok.sub; -import de.neitzel.injection.annotation.Component; import de.neitzel.injection.testcomponents.test1ok.SuperClass; import de.neitzel.injection.testcomponents.test1ok.TestInterface1_1; import de.neitzel.injection.testcomponents.test1ok.TestInterface1_2; +import jakarta.inject.Singleton; -@Component +@Singleton public class TestComponent1_2 extends SuperClass implements TestInterface1_1, TestInterface1_2 { public TestComponent1_2() { } diff --git a/injection/src/test/java/de/neitzel/injection/testcomponents/test2fail/TestComponent2_1.java b/injection/src/test/java/de/neitzel/injection/testcomponents/test2fail/TestComponent2_1.java index a2b9936..b145e89 100644 --- a/injection/src/test/java/de/neitzel/injection/testcomponents/test2fail/TestComponent2_1.java +++ b/injection/src/test/java/de/neitzel/injection/testcomponents/test2fail/TestComponent2_1.java @@ -1,11 +1,11 @@ package de.neitzel.injection.testcomponents.test2fail; -import de.neitzel.injection.annotation.Component; +import jakarta.inject.Singleton; /** * TestComponent1 that should fail. */ -@Component +@Singleton public class TestComponent2_1 { public TestComponent2_1(String test) { }