10.1 创建要用到的包和类
新建一个空项目,在空项目里建一个,新建方法参考:SpringBoot的第一个程序 - ZhangLeiのWorld
首先看一下我的项目结构,包是 com.zhanglei,在Application 的同级包zhanglei下创建一个service 包,在service 包里面再建一个实现类包impl,在service 包下写一个 UserService 接口,在 impl 包下创建一个 UserServiceImpl类实现 UserService 接口,如下:
UserService 接口:
package com.zhanglei.service;
public interface UserService {
void sayHello(String name);
}
UserServiceImpl 类:
package com.zhanglei.service.impl;
import com.zhanglei.service.UserService;
import org.springframework.stereotype.Service;
@Service("userService")
public class UserServiceImpl implements UserService {
@Override
public void sayHello(String name) {
System.out.println("执行了业务方法的sayHello:"+name);
}
}
10.2 Application中run方法的原理
打开Application类,查看 主函数内容如下:
我很好奇,查看这个 run 方法,ctrl+左键点进去:
发现他的返回值是 ConfigurableApplicationContext 类型的变量,那这个东西到底是个啥,再点进去:
终于发现这个类是继承 ApplicationContext 的,AplicationContext 我就很清楚了,是实现bean 容器的一个接口,既然 ConfigurableApplicationContext 继承它,那么 ConfigurableApplicationContext 也是实现 bean 容器的一个接口,因此我这么做:
既然 run 方法的返回值是 ConfigurableApplicationContext 类型的,那么就用一个ConfigurableApplicationContext 类型的变量接收它,由此就实现了 bean 容器,接下来的操作就跟 Spring 类似了,获取 bean 实例,应用bean 实例 (调用 bean 实例的方法)。
10.3 测试结果与总结
运用ApplicationContext 或者 ConfigurableApplicationContext 都是一样的,因为他们是继承的关系,都可以接收 run 方法的返回值,从而实现 bean 实例。