1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
| public interface AlphaDao {
String select(); }
@Repository("alphaHibernate") public class AlphaDaoHibernateImpl implements AlphaDao {
@Override public String select() { return "Hibernate"; } }
@Repository @Primary public class AlphaDaoMybatisImpl implements AlphaDao {
@Override public String select() { return "Mybatis"; } }
@RunWith(SpringRunner.class) @SpringBootTest @ContextConfiguration(classes = CommunityApplication.class) public class CommunityApplicationTests implements ApplicationContextAware {
private ApplicationContext applicationContext;
@Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { this.applicationContext = applicationContext; }
@Test public void testApplicationContext() { System.out.println(applicationContext);
AlphaDao alphaDao = applicationContext.getBean(AlphaDao.class); System.out.println(alphaDao.select());
alphaDao = applicationContext.getBean("alphaHibernate", AlphaDao.class); System.out.println(alphaDao.select()); }
@Test public void testBeanManagement() { AlphaService alphaService = applicationContext.getBean(AlphaService.class); System.out.println(alphaService);
alphaService = applicationContext.getBean(AlphaService.class); System.out.println(alphaService); }
@Test public void testBeanConfig() { SimpleDateFormat simpleDateFormat = applicationContext.getBean(SimpleDateFormat.class); System.out.println(simpleDateFormat.format(new Date())); }
@Autowired @Qualifier("alphaHibernate") private AlphaDao alphaDao;
@Autowired private AlphaService alphaService;
@Autowired private SimpleDateFormat simpleDateFormat;
@Test public void testDI() { System.out.println(alphaDao); System.out.println(alphaService); System.out.println(simpleDateFormat); } }
@Service
public class AlphaService {
@Autowired private AlphaDao alphaDao;
public AlphaService() { System.out.println("实例化AlphaService"); }
@PostConstruct public void init() { System.out.println("初始化AlphaService"); }
@PreDestroy public void destroy() { System.out.println("销毁AlphaService"); } public String find() { return alphaDao.select(); } }
@Configuration public class AlphaConfig {
@Bean public SimpleDateFormat simpleDateFormat() { return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); } }
@Controller @RequestMapping("/alpha") public class AlphaController {
@Autowired private AlphaService alphaService;
@RequestMapping("/hello") @ResponseBody public String sayHello() { return "Hello Spring Boot."; }
@RequestMapping("/data") @ResponseBody public String getData() { return alphaService.find(); } }
|