@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.