public interface Service {
void execute();
}
public class MyService implements Service {
public void execute() {
}
}
public class Client {
private Service service;
@Inject
public Client(Service service) {
this.service = service;
}
public void doSomething() {
service.execute();
}
}
public class UserService implements Service {
public void execute() {
}
}
public class OrderService implements Service {
public void execute() {
}
}
public class Client {
private Service userService;
private Service orderService;
@Inject
public Client(@Named("userService") Service userService, @Named("orderService") Service orderService) {
this.userService = userService;
this.orderService = orderService;
}
}
@Singleton
public class DatabaseService {
public void connect() {
}
}
public class Client {
@Inject
private DatabaseService databaseService;
}
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>
groovy
implementation 'javax.inject:javax.inject:1'
@Configuration
public class AppConfig {
@Bean
public Service myService() {
return new MyService();
}
@Bean
public Service userService() {
return new UserService();
}
@Bean
public Service orderService() {
return new OrderService();
}
@Bean
public Client client() {
return new Client(userService(), orderService());
}
}