常见的容器创建有两种:基于配置类、基于xml配置文件。
基于配置类
我们使用@Configuration注解表示这是Spring上下文的配置类,使用@ComponentScan注解表示开启注解扫描,并指定扫描范围。
@Configuration
@ComponentScan(basePackages = { "com.xxx.yyy" })?
class SpringContext {?
}
一般指定com.xxx.yyy为Bean所在的最上层包,这样所有的Bean都可以扫描到。
使用ApplicationContext初始化Spring上下文:
public class LaunchJavaContext {
private static final User DUMMY_USER = new User("dummy");
public static Logger logger = Logger.getLogger(LaunchJavaContext.class);
public static void main(String[] args) {
ApplicationContext context = new AnnotationConfigApplicationContext(SpringContext.class);
BusinessService service = context.getBean(BusinessService.class);
logger.debug(service.calculateSum(DUMMY_USER));
}
}
这里主要的是通过指定SpringContext类的方式,使用AnnotationConfigApplicationContext进行初始化,这就启动了一个Spring上下文。通过上下文对象可以获取相关的Bean。
基于xml配置文件
在src/main/resources目录下,创建一个配置文件BusinessApplicationContext.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<beans>
<!-Namespace definitions removed-->
<context:component-scan base-package ="com.mastering.spring"/>
</beans>
最主要的就是,通过context: component-scan开启了包扫描,类似的,通过base-package指定了扫描范围。
使用ApplicationContext初始化Spring上下文:
public class LaunchXmlContext {
private static final User DUMMY_USER = new User("dummy");
public static Logger logger = Logger.getLogger(LaunchJavaContext.class);
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("BusinessApplicationContext.xml");
BusinessService service = context.getBean(BusinessService.class);
logger.debug(service.calculateSum(DUMMY_USER));
}
}
通过指定配置文件的名称,使用ClassPathXmlApplicationContext初始化了一个Spring的上下文,通过上下文对象可以获取相关的Bean。
|