实例化对象的方法
1.使用new object;
Helper d = new Helper();
2. 通过反射使用class对象获取
2.1 通过Class.forName(String path)获取class对象
Helper d = (Helper) Class.forName("com.zqm.utils.Helper").newInstance();
Q:newInstance()和new 有什么区别呢?
A:前者是使用类加载机制,只能创建无参的对象,后者是创建一个新类(可以使用不同的构造器);
我们使用关键字new创建一个类的时候,这个类可以没有被加载。但是使用newInstance()方法的时候,就必须保证:
1、这个类已经加载;
2、这个类已经链接了
2.2 使用类名.class
Helper c = Helper.class.newInstance();
applicationContext.getBean(Helper.class)
3. 实现接口ApplicationContextAwar
public class TestAnnotationController implements ApplicationContextAware {
private String a;
private ApplicationContext ApplicationContext;
private TestAnnotationController testAnnotationController;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.ApplicationContext = applicationContext;
}
/**
* 建议此写法
*/
@PostConstruct
public void init() {
testAnnotationController = ApplicationContext.getBean(TestAnnotationController.class);
}