<dependency> <groupId>com.beaninject</groupId> <artifactId>beaninject</artifactId> <version>1.0.0</version> </dependency> public class UserService { private UserDao userDao; public void setUserDao(UserDao userDao) { this.userDao = userDao; } } @Bean public UserService userService() { UserService userService = new UserService(); return userService; } @Bean public UserDao userDao() { return new UserDao(); } public class Application { public static void main(String[] args) { BeanInjector beanInjector = new BeanInjector(); } } @Bean @Qualifier("userDaoImpl1") public UserDao userDaoImpl1() { return new UserDaoImpl1(); } @Bean @Qualifier("userDaoImpl2") public UserDao userDaoImpl2() { return new UserDaoImpl2(); } @Inject @Qualifier("userDaoImpl1") private UserDao userDao; @Bean public DataSource dataSource() { BasicDataSource dataSource = new BasicDataSource(); dataSource.setUrl("jdbc:mysql://localhost:3306/mydb"); dataSource.setUsername("root"); dataSource.setPassword("password"); return dataSource; } @Aspect public class LoggingAspect { @Before("execution(void com.example.UserService.*(..))") public void beforeAdvice() { System.out.println("Before method execution"); } }