package com.hxh.review;
import com.hxh.review.entity.User;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Repository;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
public class SpringStart {
public static void main(String[] args) {
// spring javaee开发框架 提供对bean的管理
// ioc 控制反转 bean动态实例化
// aop 面向切面编程 bean方法增强
// 基层框架 可集成其他框架bean 是一个生态
ClassPathXmlApplicationContext ioc = new ClassPathXmlApplicationContext("beans.xml");
User bean = ioc.getBean(User.class);
System.out.println(bean);
// 底层读取xml文件 反射生成bean
// IOC接口
// BeanFactory:内部使用
// ApplicationContext:功能更多的接口 BeanFactory子接口
BeanFactory bf;
ApplicationContext ac;
// bean管理方式:配置文件,注解
// bean作用域:获取bean时,单例或多例
// bean生命周期:
// 构造器创建
// 注入属性
// 后置处理器before方法
// 初始化方法
// 后置处理器after方法 进行aop实现的动态代理
// 可获取使用
// 销毁方法
// bean自动装配:bean属性根据类型或名称注入
// bean注解方式
// 使用以下注解,扫描到作为组件bean管理
// @Component @Repository @Service @Controller
// 自动注入注解
// @Autowired @Qualifier @Resource
// 以类型注入 配合使用以名称 优先name后type
// AOP
// 不修改源代码 增强方法功能
// 底层原理 动态代理 实际方法调用 在代理对象增强方法中
// JDK代理 代理接口中所拥有的方法
// CGLIB代理 代理继承可重写的方法
// jdbcTemplate提供数据库操作
// 基于AOP的事务管理
// 事务传播行为 事务方法A调用事务方法B
// REQUIRED 事务方法A调用,B加入事务
// REQUIRED_NEW 事务方法A调用,B开启事务A事务挂起
// SUPPORTS B有无事务根据调用者有无事务
// 隔离级别 超时时间 是否只读 异常回滚配置
}
}