一:AnnotationConfigApplicationContext
使用方式1:构造参数为包名

//扫描指定包,以及其子包,下的所有类
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext("包名");
A a = ctx.getBean(A.class);
System.out.println(a);

使用方式2:构造参数为指定类

//扫描指定类,以及该类同级包,和同级包下的所有类
//(spring boot默认方式,也是SpringApplication类的底层实现)
@ComponentScan//此处多出该注解
public class TestMain {
public static void main(String[] args) {
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(TestMain.class);
}
}

使用方式2:无构造参数

AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
ctx.refresh();//无参构造方法需要手动刷新才行,一般多用于动态注册bean

二:ClassPathXmlApplicationContext
boot没出来之前的xml方式启动

ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext(
"classpath:/com/example/sp.xml");
A a = ctx.getBean(A.class);
System.out.println(a);