@com.google.inject.Module
public class MyAppConfig implements io.github.airframe.config.Config {
String databaseUrl = "localhost:3306/myapp";
String username = "admin";
String password = "password";
}
public interface UserService {
void addUser(String username);
}
@com.google.inject.Singleton
public class UserServiceImpl implements UserService {
private final javax.sql.DataSource dataSource;
@javax.inject.Inject
public UserServiceImpl(javax.sql.DataSource dataSource) {
this.dataSource = dataSource;
}
public void addUser(String username) {
}
}
public class MyApp {
public static void main(String[] args) {
io.github.airframe.control.Control control = io.github.airframe.control.Control.create();
control.bind(javax.sql.DataSource.class)
.toInstance(javax.sql.DataSourceBuilder.create()
.url("@{databaseUrl}")
.username("@{username}")
.password("@{password}")
.build());
UserService userService = control.getInstance(UserService.class);
userService.addUser("John");
control.shutdown();
}
}