Spring:
分层的JavaSE/EE应用全栈的 轻量的 开源的半成品框架 IOC aop
IOC和AOP延申事务处理(用来简化开发)
在Spring之前 创建对象需要new一个对象出来
IOC:耦合度太高 就有了解决方案(直接给一个对象)
IOC控制反转:对象的创建控制权由Spring IOC容器来负责 这种为控制反转
好处:为了充分解耦 而Spring实现了这个IOC容器,而这些对象就称为Bean
IOC就可以给到Service和Dao层,而Service需要依赖Dao
IOC就可以把他俩绑定,这就叫依赖注入:DI
有两种方式:set注入和构造注入
管理Service和Dao
Bean的生命周期:
1.当scope的取值为singleton(默认)Bean创建的对象为一个
当spring核心文件被加载时 容器就被创建出来了 对象也被创建出来了
当应用加载的时候 对象就一直在
当应用程序被卸载时 对象就被销毁了
2.当scope的取值为prototype时 Bean创建的对象为多个
当调用getBean()方法时实例化Bean
当使用对象时 创建新的对象实例
对象运行时:只要对象在使用中 就一直在
销毁:当对象长期不使用的时候 就被java回收机制给回收了(JVM)
实例就是对象被创建的过程
Bean:
Bean的顺序不重要,Spring根据依赖关系会自动正确初始化
类也是bean 把类里的代码都放到容器Bean里 所以才会运行
配置文件:ApplicationContext
BeanFactory和ApplicationContext的区别在于,BeanFactory的实现是按需创建,即第一次获取Bean时才创建这个Bean,
而ApplicationContext会一次性创建所有的Bean(我们总是使用ApplicationContext)
配置类:bean标签配置bean id起名字 class定义bean的类型
接口创建对象需要new他的实现类
bin:二进制启动文件
@Component:使用在类上用于实例化Bean
@Controller使用在Controller的实例化对象
@Service使用在Service的实例化对象
@Repository dao层的实例化对象
@Autowired使用字段上用于根据类型依赖注入
@Resource相当@Autowired+@Qualifier按照名称进行注入
@Qualifier结合@Autowired一起使用用于根据名称进行依赖注入
@Value 注入普通属性
AOP是函数式编程的一种衍生泛型 是面向对象的延续
AOP可以对业务逻辑的各个部分进行隔离
从而使得业务逻辑各部分之前的耦合度降低
AOP的作用 在不修改源代码的情况下对方法进行功能增强
优势:减少重复代码 提高开发效率 并且使于维护
反射:检测和修改他本身状态或行为的一种能力 并能根据自身行为的状态和结果
调整或修改应用所描述行为的状态和相关的语义。
本来创建类之后 知道他的方法和属性 但是程序本身不知道他有什么 通过.getclass的方法 获取它的字节码对象 就知道他的属性和方法
JDK动态代理:创建个目标类的对象 创建个代理对象 参数获取类加载器 再获取目标对象的接口 生成代理对象(对象 方法 实参)
调用目标对象方法;
优势:减少重复代码提高开发效率 并且使于维护
静态代理