Inversion Of Control 控制反转(在运行时基于反射发现组件类和注册对象的过程)
发现:运行时让IOC容器发现组件类
1、组件类的包层级不能高于启动类,只能小于等于
2、组件类上需要有IOC注解
注册:发现后就会触发注册,注册就是创建对象放入IOC容器的过程
Dependency Injection 依赖注入(赋值的过程)
注入:在运行时,从IOC容器中找到与指针相匹配的对象赋值给指针的过程
发现--> 注册--> 注入(都在运行时发生)
1、@Controller/@RestController spring公司
(1)用于控制器层类的发现和注册
2、@Service spring公司
(1)用于service层类的发现和注册
3、@Repository(如果用了mybatis框架就不会用到这个注解) spring公司
(1)用于Dao层类的发现和注册
4、@Component spring公司
(1)用于任意一个类的发现和注册
5、@MapperScan() 苞米豆公司
(1)用于扫描mapper包,在运行时创建接口的实现类,并注册对象到IOC容器
创建对象的控制权 new 构造方法()
高内聚低耦合(将功能相似相同的写在一起,叫高内聚)
耦合=依赖(工程依赖工程,类依赖类)
高耦合:直接依赖了具体实现类
Component 组件(组成工程的元件,指的是类)
Bean/JavaBean 咖啡豆/组成(指的对象/被IOC容器发现后创建的对象)
发现-注册-注入
1、基于xml文件实现(框架早期使用,已淘汰)
1、创建config.xml文件,放在resources目录下,xml文件可以有多个
拷贝文件头:
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:mvc="http://www.springframework.org/schema/mvc"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans.xsd
- http://www.springframework.org/schema/mvc
- http://www.springframework.org/schema/mvc/spring-mvc.xsd">
-
- beans>
2、启动类上加注解
告诉框架配置文件的位置
3、去除掉@Controller、@Service注解
4、去除掉@Resource注解
2、基于注解实现
3、基于配置类实现
启动类就是一个配置类,或者任意一个带有@Configuration注解的类都可以是一个配置类
发现/注册UserController
发现/注册UserServiceImpl
在UserController中注入UserService
面向切面编程(Aspect Oriented Programming)
try.catch()finally{}非业务