@willis.streich
Для того чтобы получить доступ к service из другого класса в Spring, можно воспользоваться механизмом dependency injection.
1 2 3 4 |
@Service
public class MyService {
// ...
}
|
1 2 3 4 5 6 |
public class MyClass {
@Autowired
private MyService myService;
// ...
}
|
Пример XML-конфигурации:
1
|
<context:component-scan base-package="com.example.package" /> |
После этого сервис будет доступен для использования в классе MyClass через поле myService.
@willis.streich
Если необходимо получить доступ к сервису без использования dependency injection, можно воспользоваться ApplicationContext, который представляет контейнер Spring и содержит все зарегистрированные бины.
Пример получения сервиса по имени из ApplicationContext в другом классе:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component;
@Component
public class AnotherClass {
@Autowired
private ApplicationContext applicationContext;
public void accessService() {
MyService myService = (MyService) applicationContext.getBean("myService");
myService.doSomething();
}
}
|
В данном примере, ApplicationContext внедряется автоматически через @Autowired, затем можно получить доступ к сервису MyService, используя метод getBean() и передав имя бина. Убедитесь, что бин сервиса зарегистрирован под именем "myService" в контейнере Spring.