public class Main {
public static void main(String[] args) {
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();
applicationContext.register(Ch2BeanConfiguration.class);
// applicationContext.scan("com.mlf");
// # must user refress() method
applicationContext.refresh();
AccountService accountService = (AccountService) applicationContext.getBean("accountService");
System.out.println("Beafore money transfer");
System.out.println("Account1 balance:" + accountService.getAccount(1l).getBalance());
System.out.println("Account2 balance:" + accountService.getAccount(2l).getBalance());
System.out.println("------------------------------------");
accountService.transferMoney(1l, 2l, 5.5);
System.out.println("After money transfer");
System.out.println("Account1 balance:" + accountService.getAccount(1l).getBalance());
System.out.println("Account2 balance:" + accountService.getAccount(2l).getBalance());
System.out.println("------------------------------------");
}
}
package com.mlf.spring;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import com.mlf.spring.dao.AccountDao;
import com.mlf.spring.dao.impl.AccountDaoInMemoryImpl;
import com.mlf.spring.service.AccountService;
import com.mlf.spring.service.impl.AccountServiceImpl;
@Component
public class Ch2BeanConfiguration {
@Bean
public AccountService accountService() {
AccountServiceImpl bean = new AccountServiceImpl();
bean.setAccountDao(accountDao());
return bean;
}
@Bean
public AccountDao accountDao() {
AccountDaoInMemoryImpl beAccountDaoInMemoryImpl = new AccountDaoInMemoryImpl();
return beAccountDaoInMemoryImpl;
}
}