在上文的源码导入与环境搭建后。我们在IDEA构建一个测试,直接使用源代码,而不是Spring的jar,看看能否成功。
1、新建一个Module
在上文已有的Spring 5的源码完整工程下,新增加一个module,名字为“test_zyp”。该新module的属性分别为。
如下图:module名字,设置Source Folders的路径。
如下图,Paths中设置了Output Path的目录。
如下图,test_zyp依赖设置。 注意这里的依赖不是Jar库,而是Spring工程的其他modules。
2、新增代码
在test_zyp的module中新增三个代码:
测试主类
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import service.HelloService;
public class TestZYP {
public static void main(String[] args) {
System.out.println("Test Start...");
AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class);
System.out.println("Context Finish!");
HelloService bean = ac.getBean(HelloService.class);
bean.say();
}
}
配置类:
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@ComponentScan(basePackages = "service")
@Configuration
public class AppConfig {
}
服务类(作为Bean由Spring管理)
package service;
import org.springframework.stereotype.Component;
@Component
public class HelloService {
public HelloService() {
System.out.println(" *** HelloService constructor!");
}
public void say() {
System.out.println(" *** This is Hello Service say!");
}
}
目录结构为:
3、运行结果
运行结果如下。
Test Start...
*** HelloService constructor!
Context Finish!
*** This is Hello Service say!
从运行结果可以发现:
- 直接使用Spring源码运行的效果正常,间接也说明源码工作正常。 ②通过构造函数的输出可以发现,默认情况Bean在Spring
- Context初始化的过程中就已经完成创建,而不是在调用getBean()时才创建。 如果对于Bean(既上面的HelloService)增加Lazy注解。则不会在 Context初始化的过程,而是在getBean()时才创建。