HelloWorld之基本使用
public class Main {
public static void main(string[] args) {
// 创建Spring容器
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();
// 向容器中注册一个bean
applicationContext.registerBean("userService", UserService.class);
// 启动Spring容器
applicationContext.refresh();
// 获取Bean对象
UserService userService = (UserService) applicationContext.getBean("userService");
// 使用Bean对象
userService.test();
}
}
以上代码完成了向Spring容器中注册一个Bean对象,并把它拿出来使用。
假设现在UserService用到了OrderService,我们可以这么写:
public class UserService {
@Autowired
private OrderService orderService;
public void test(){
System.out.println(orderService);
}
}
并且把OrderService也注册为Bean:
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();
applicationContext.registerBean("userService", UserService.class);
applicationContext.registerBean("orderService", OrderService.class);
applicationContext.refresh();
这样UserService中的orderService属性就自动有值了,这个功能就是Spring给我们提供的,叫做依赖注入。
假如现在UserService中有一个Map,需要缓存一部分用户信息,我们可以通过一下方式来进行初始化:
public class UserService implements InitializingBean {
@Autowired
private OrderService orderService;
private Map<String, User> vipUserInfo = new HashMap<>();
@Override
public void afterPropertiesSet() throws Exception {
vipUserInfo.put("001", new User());
vipUserInfo.put("002", new User());
vipUserInfo.put("003", new User());
}
public void test(){
System.out.println(orderService);
System.out.println(vipUserInfo.size());
}
}
Spring容器在创建UserService这个Bean对象时会自动调用afterPropertiesSet()方法,然后完成对vipUserInfo的初始化。