Ioc内核要解决的问题
1.被调用方,在程序启动时就要创建好对象,放在一个容器里面。
2.调用方使用一个接口或类的引用(不用使用new),就可以创建获得对象。
解决这个两个问题的思路
1.定义一个对象容器,用于存储所有的创建的对象。
2.给启动程序时就需要创建对象并放在容器里面的类一个标识,我称为组件注解。
根据三层架构的定义:组件注解分别为
@Controller:表示层的类
@Service:服务层的类
@Repository:持久层的类
@Component:三层架构以外的类
3.定义一个容器操作类ApplicationContext负责操作Context里面的对象
实现步骤
1.创建一个Eclipse的Java普通项目
|
2.根据思路上定义需要的类、接口、注解
|
API说明列表
Context |
定义Ioc容器的接口 |
ApplicationContext |
定义Ioc容器的操作接口 |
AbstractionApplicationContext |
Ioc容器的操作的抽象类。将操作容器的公用代码写这里,预留以后有多个容器操作的实现。 |
AnnotationApplicationContext |
Ioc容器的操作类基于注解的实现。 |
ContextImpl |
实现Ioc容器 |
AnntationApplicationContext |
实现Ioc容器的操作类 |
PackageUtils |
包扫描帮助类,用于通过指定的包名获得包以及其子包的所有类的全限制名 |
Component|Controller|Service|Repository |
定义四个对象组件注解 Controller:标识表示层的类 Service:标识服务层的类 Repository:标识持久层的类 Component:标识三层以外的类 |
Autowired |
定义自动注入对象到引用的注解 |
ComponentScan |
定义扫描注解,功能是扫描包中加了组件注解的类创建对象放在容器中 |
Configuration |
定义配置类注解 |
注:为了学习的方便。框架API的注解名、接口名和类名,基本和Spring框架相同。