基于Java配置类的方式实现
定义配置类
通过在类头部使用@Configuration注解表示这个类为Spring的配置类,相当于applicationContext.xml配置文件。
package com.gupaoedu;
import com.gupaoedu.pojo.User;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* Java配置类 相当于applicationContext.xml
*/
@Configuration
public class JavaConfig {
/**
* @Bean 作用和我们在applicationContext.xml中添加的<bean> 效果一样</>
* 默认的name是方法名称
* 自定义的name 可以通过value属性或者name属性来指定
* @return
*/
@Bean(name = {"aaa","bbb"})
public User getUser(){
User user = new User();
//user.set....
return user;
}
@Bean
/**
* Spring在创建对象时并不会调用我们这里定义的方法
* 而是以我们写的代码为模板自己重新实现
*/
public IUserDao userDao(){
return new UserDaoImpl();
}
/**
*
* @param userDao 本方法调用的时候会从IoC容器中查找类型为IUserDao的名称为 userDao的对象
* @return
*/
@Bean
public IUserService userService(IUserDao userDao){
IUserService userService = new UserServiceImpl();
((UserServiceImpl) userService).setDao(userDao);
return userService;
}
@Bean
public UserController userController(IUserService userService){
UserController controller = new UserController();
controller.setService(userService);
return controller;
}
}
测试获取
public class MainTest1 {
@Test
public void fun1(){
// 通过@Configuraction注解来初始化IoC容器
ApplicationContext ac = new AnnotationConfigApplicationContext(JavaConfig.class);
System.out.println(ac.getBean("aaa",User.class));
}
}