Main User user = new User("Charles", 24); System.out.println("******************************"); User fetchedUser = userService.findOne(-1); System.out.println(fetchedUser); UserService userService = new UserServiceImpl(); userService.save(user);
User Service Impl public class UserServiceImpl implements UserService { @Override public void save(User user) { userDao.save(user); } ... } Dependency private UserDao userDao = new UserDaoImpl();
User Service Impl public class UserServiceImpl implements UserService { private UserDao userDao; public UserServiceImpl(UserDao userDao) { this.userDao = userDao; } @Override public void save(User user) { userDao.save(user); } ... }
Main User user = new User("Charles", 24); System.out.println("******************************"); User fetchedUser = userService.findOne(-1); System.out.println(fetchedUser); UserDao userDao = new UserDaoImpl(); UserService userService = new UserServiceImpl(userDao); userService.save(user);
User Service Impl public class UserServiceImpl implements UserService { private UserDao userDao; public UserServiceImpl(UserDao userDao) { this.userDao = userDao; } @Override public void save(User user) { userDao.save(user); } ... }
User Service Impl @Service public class UserServiceImpl implements UserService { @Autowired private UserDao userDao; @Override public void save(User user) { userDao.save(user); } ... }
Main User user = new User("Charles", 24); System.out.println("******************************"); User fetchedUser = userService.findOne(-1); System.out.println(fetchedUser); UserService userService = new UserServiceImpl(); userService.save(user);
Main: Spring User user = new User("Charles", 24); System.out.println("******************************"); User fetchedUser = userService.findOne(-1); System.out.println(fetchedUser); String contextLocation = "context/applicationContext.xml"; ApplicationContext context = new ClassPathXmlApplicationContext(contextLocation); UserService userService = context.getBean(UserService.class); userService.save(user);
IoC Container // Load up config String contextLocation = "context/applicationContext.xml"; ApplicationContext context = new ClassPathXmlApplicationContext(contextLocation); // Ask IoC for instance (bean) UserService userService = context.getBean(UserService.class); // Use the (wired-up) instance userService.save(user);
Inversion of Control Programming principle principle of delegating the creation, configuration and lifecycle management of objects to another component or framework