MVC三层架构(后端架构模型)
View(视图层/数据展示层JSP)
Controller(控制器层/请求与响应 Controller)
Model(数据模型层Service,Dao/Mapper)
Spring框架俩大核心模块
IOC&DI
inversion Of Control 控制反转 (基于注解和反射发现组件类和注册对象的过程)
发现:运行时让IoC容器发现组件类
1.组件类的包层级不能高于启动类,只能小于等于
2.组件类上需要有IoC注解
注册:发现后就会触发注册,注册就是创建对象放入IoC容器的过程
Dependency injection 依赖注入 (赋值的过程)
注入:在运行时,从IoC容器中找到与指针相匹配的对象赋值给指针的过程
发现---》zhuce---》注入
具有IoC功能的注解
1.@Controller/@RestController
(1)用于控制器的发现和注册
2.@Service
(1)用于Service层类的发现和注册
3.@Repository(用到框架就不会有Dao层)
(1)用于Dao层的发现和注册
4.@Component
(1)用于任意一个普通类的发现和注册
5.@MapperScan
(1)用于扫描mapper包,在运行时创建接口的实现类,并注册对象到IoC容器
什么控制权?
创建对象的控制权 new 构造方法()
为什么要反转?
高内聚低耦合
耦合=依赖(工程依赖工程,类依赖类)
Component组件(组成工程的原件,指的是类)
Bean/JavaBean咖啡否/组成(指的对象/被Ioc容器发现后创建的对象)
IoC&DI的实现方式有三种
发现----注册----注入
发现/注册UserController
发现/注册UserServiceImpl
在UserController注入
1.基于xml文件实现(已经淘汰)
2.基于注解实现()
3.基于配置类实现
AOP(日志管理)
面向切面编程
AOP为Aspect Oriented Programming的缩写
Lomcok 三方库提供的注解
@Data=(@Getter+@Setter+@EqualsAndHashCode+@ToString)
@Getter
@Setter
@EqualsAndHashCode
@AllArgsConstructor
@NoArgsConstructor
@ToString
@Slf4j
(编译后的字节码文件中会出现一个私有的静态变量,类型是Logger,指针名为log,这个就是用来打印日志的对象,需要在哪个类中打印日志,只需要给这个类添加@Slf4j注解,这个类中就会有一个log指针
private static final Logger log = LoggerFactory.getLogger(UserController.class);
)
在使用log对象打印日志之前,需要先配置打印日志的规则
1.将日志配置文件放在resources目录中
日志配置文件log.xml可以复用,需要了解里面如何配置日志打印规则
2.在application.properties中告诉Lombok框架配置文件在哪里
使用log打印日志来替代System.out.println()
写Demo
System.out.println()
写项目
使用log打印
1.log打印的信息更多
日志打印时间 所在线程 所在类 日志信息
2.Log可以按级别打印日志,可以通过级别控制哪些打印,哪些不打印
3.Log可以打印到控制台,还可以打印到文件