Я определил класс MyFrontService в банке, вот как я хочу, чтобы использовать его:Есть ли примечание Spring, которое заменяет ClassPathXmlApplicationContext.getBean?
import blabla.MyFrontService;
public class Main {
public static void main(String[] args) {
MyFrontService.doThis();
}
}
FrontService служит точкой входа для доступа к другим службам. Вот как это определено в настоящее время (и оно работает).
MyFrontService.java:
public class MyFrontService {
public static void doThis(){
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("META-INF/springBeans.xml");
MyService1 myService1 = (MyService1) context.getBean("myService1");
myService1.doSomething();
context.close();
}
}
MyService1.java:
package blabla.service;
@Service("myService1")
public class MyService1 {
public void doSomething(){
// some code
}
}
SRC/главная/ресурсы/META-INF/springBeans.xml:
(...)
<context:annotation-config />
<context:component-scan base-package="blabla.service" />
(...)
Я хотел бы для замены кода MyFrontService.java примерно следующим образом:
@MagicAnnotation("what_path?/springBeans.xml")
public class MyFrontService {
@Autowired
private static MyService1 myService1;
public static void doThis(){
myService1.doSomething();
}
}
Я много читал из других вопросов на этом веб-сайте и других. Иногда говорят, что это невозможно, и иногда используются аннотации, такие как @Configuration, @Import и другие, но я не могу заставить их работать. Например, с помощью
@ImportResource("classpath:META-INF/springBeans.xml")
вызывает NullPointerException при вызове myService1.doSomething().
Если это возможно, какая аннотация и какой путь использовать?
Нет, нет никакой магии. Что-то должно обрабатывать аннотации. Это что-то весна. Если вы не сообщите Spring об этом, инициализируя «ApplicationContext», как он должен знать, чтобы это сделать? – Savior
Точкой входа в любое приложение на основе Spring является «ApplicationContext». – Savior
Кроме того, Spring не делает '@ Autowired' с' static' ничего. – Savior