Spring 会在项目启动时, 对项目进行扫描, 对使用了@service, @Component, @Repository 等注解的类,创建相应的实例bean, 然后将bean 添加到Spring的上下文中. 对于获取Spring容器中的bean, 通常有自动注入和主动获取两种方式. 自动注入是使用最广泛的一种方式, 但是对于有些特殊的应用场景,如工具类中使用bean, 那就需要使用第二种方式了.
1. 自动注入
使用自动注入需要注意以下三点:第一, 类需要使用@Service/@Component 修饰; 第二, 类中需要新增一非静态属性, 且次属性需要使用@Resource/@Autowired 来修饰.
@Service
public class UserService implements IUserService{
@Resource
private UserDao userDao;
}
2. 主动获取
主动获取需要自定义实现ApplicationContextAware的工具类, 用户获取Spring的上下文对象. 通过Spring的上下文, 不仅可以获取Spring容器中的bean, 还可以获取应用的环境配置等信息.
2.1 Spring上下文工具类
package org.zongf.learn.sboot.quartz.util