package dao; //此处没有使用@Repository声明Bean public class TestDao { public void save() { System.out.println("TestDao save"); } }
package service; import dao.TestDao; //此处没有使用@Service声明Bean public class TestService { // 此处没有使用@Autowired注入testDao TestDao testDao; public void setTestDao(TestDao testDao) { this.testDao = testDao; } public void save() { testDao.save(); } }
package controller; import service.TestService; //此处没有使用@Controller声明Bean public class TestController { // 此处没有使用@Autowired注入testService TestService testService; public void setTestService(TestService testService) { this.testService = testService; } public void save() { testService.save(); } }
package javaConfig; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import dao.TestDao; import service.TestService; import controller.TestController; //一个配置类,相当于一个Spring配置的XML文件; //此处没有使用包扫描,是因为所有Bean都在此类中定义了。 @Configuration public class JavaConfig { @Bean public TestDao getTestDao() { return new TestDao(); } @Bean public TestService getTestService() { TestService ts = new TestService(); // 使用set方法注入testDao ts.setTestDao(getTestDao()); return ts; } @Bean public TestController getTestController() { TestController tc = new TestController(); // 使用set方法注入testService tc.setTestService(getTestService()); return tc; } }
package javaConfig; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import controller.TestController; public class TestConfig { public static void main(String[] args) { // 初始化Spring容器ApplicationContext AnnotationConfigApplicationContext appCon = new AnnotationConfigApplicationContext(JavaConfig.class); TestController tc = appCon.getBean(TestController.class); tc.save(); appCon.close(); } }