Размышления Java и мета -аннотационные сканированиеJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Размышления Java и мета -аннотационные сканирование

Сообщение Anonymous »

Я работаю над каким-то похожим на Spring Di Framework, и я столкнулся с проблемой, сканирующей все классы, аннотированные с определенной аннотацией.

Код: Выделить всё

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface Component {}
< /code>
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Component
public @interface View {}
< /code>
@View
само по себе аннотируется @component , чтобы ComponentsCanner также может сканировать @View .
А и вот компонент-карт-вершина :

public class ComponentScanner {

public static Set> components = ComponentScanner.scan(basePackage);
beanContainer.registerComponents(components);
for (Class componentClass : components)
System.out.println("ComponentScanner found: "+componentClass.getName());
}

public T getBean(Class tClass) {
return beanContainer.getBean(tClass);
}
}
< /code>
The issue is that this ComponentScanner.scan()[/code] работает нормально для тестовых кодов, но не в фактическом использовании ...
ВЫБОР:

Код: Выделить всё

public class App {

public static void run(Class mainClass, String[] args) {
final String BASE_PACKAGE = mainClass.getPackageName();
ApplicationContext context = new ApplicationContext(BASE_PACKAGE);
// other setting codes...
}
}
< /code>
package com.example.test;

public class Main {
public static void main(String[] args) {
App.run(Main.class, args);
}
}

@Component
public class MyComponent {}

@View
public class MyView {}
< /code>
If I run the main method, App.run()
вызывается и инициализирует ApplicationContext , так что все компоненты автоматически отсканируются. Но когда я проверил журнал, MyComponent был отсканирован, но не myview ...

Код: Выделить всё

ComponentScanner found: com.example.test.MyComponent
< /code>
This is my test code:
public class WebTest {

static final String BASE_PACKAGE = "com.johndoe.myproject";
static final String TEMPLATE_ROOT = "src/test/resources/templates";
static ApplicationContext context = new ApplicationContext(BASE_PACKAGE);

@Test
public void testView() throws IOException {
TestView view = context.getBean(TestView.class);
Assertions.assertNotNull(view);
Assertions.assertEquals("hello", view.hello());

}
}
< /code>
This test actually [b]passed[/b]. So, I believe this indicates that ComponentScanner.scan()
фактически сканируется представление ниже:

Код: Выделить всё

@View
public class TestView {
public String hello() {
return "hello";
}
}
< /code>
This is under the same package with WebTest
. (Кстати, он делает то же самое, что и контроллер в SpringMVC, как вы можете сказать)
Я попробовал все открытые шаги, которые я сказал, и все это не удалось. Итак, мой вопрос; Почему мой тестовый код работает, но не фактический код? Я старался изо всех сил, чтобы упростить код, чтобы вы могли увидеть только Essentials😭

Подробнее здесь: https://stackoverflow.com/questions/795 ... n-scanning
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Размышления Java и мета -аннотационные сканирование
    Anonymous » » в форуме JAVA
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Замените постоянное сканирование BLE на эффективное сканирование.
    Anonymous » » в форуме Android
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Сканирование QR или сочетание штрих -кода iPhone, кажется, кэширует предварительное сканирование [закрыто]
    Anonymous » » в форуме IOS
    0 Ответы
    217 Просмотры
    Последнее сообщение Anonymous
  • Размышления API в Java 17 и выше
    Anonymous » » в форуме JAVA
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Размышления API в Java 17 и выше [дублировать]
    Anonymous » » в форуме JAVA
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»