发表于: 2022-04-28 18:48:56
1 910
今天学习了spring的一些相关知识点:
1、IoC是什么
Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。在Java开发中,
Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。如何理解好Ioc呢?
理解好Ioc的关键是要明确“谁控制谁,控制什么,为何是反转(有反转就应该有正转了),哪些方面反转了”,
那我们来深入分析一下:
●谁控制谁,控制什么:传统Java SE程序设计,我们直接在对象内部通过new进行创建对象,
是程序主动去创建依赖对象;而IoC是有专门一个容器来创建这些对象,即由Ioc容器来控制对 象的创建;
谁控制谁?当然是IoC 容器控制了对象;控制什么?那就是主要控制了外部资源获取(不只是对象包括比如文件等)。
●为何是反转,哪些方面反转了:有反转就有正转,传统应用程序是由我们自己在对象中主动控制去直接获取依赖对象,
也就是正转;而反转则是由容器来帮忙创建及注入依赖对象;为何是反转?因为由容器帮我们查找及注入依赖对象,
对象只是被动的接受依赖对象,所以是反转;哪些方面反转了?依赖对象的获取被反转了。
constructor-arg:通过构造函数注入。
property:通过setter对应的方法注入。
FileSystemXmlApplicationContext:该容器从 XML 文件中加载已被定义的 bean。
在这里,你需要提供给构造器 XML 文件的完整路径。
ClassPathXmlApplicationContext:该容器从 XML 文件中加载已被定义的 bean。
在这里,你不需要提供 XML 文件的完整路径,只需正确配置 CLASSPATH 环境变量即可,
因为,容器会从 CLASSPATH 中搜索 bean 配置文件。
WebXmlApplicationContext:该容器会在一个 web 应用程序的范围内加载在 XML 文件中已被定义的 bean。
index:索引 p-namespace : p命名空间 property:所有物 Required:需要,要求,必需的 RDBMS :关系数据库
一、Bean是啥
Java面向对象,对象有方法和属性,那么就需要对象实例来调用方法和属性(即实例化);
凡是有方法或属性的类都需要实例化,这样才能具象化去使用这些方法和属性;
注入内部 Beans
正如你所知道的 Java 内部类是在其他类的范围内被定义的,同理,inner beans 是在其他 bean 的范围内定义的 bean。
因此<property />或<constructor-arg />元素中的<bean />元素称为内部bean
元素 描述
---------------------------------------------------------------------------------------------
<list> 它有助于连线,如注入一列值,允许重复。
<set> 它有助于连线一组值,但不能重复。
<map> 它可以用来注入名称-值对的集合,其中名称和值可以是任何类型。
<props> 它可以用来注入名称-值对的集合,其中名称和值都是字符串类型。
Spring的自动装配
好处:大幅度减少Spring配置
坏处:依赖不能明确管理,可能会有多个bean同时符合注入规则,没有清晰的依赖关系。
Autowired:自动配装
在 Spring 的世界当中,自动装配指的就是使用将 Spring 容器中的 bean 自动的和我们需要这个 bean 的类组装在一起
Spring 的核心是 ApplicationContext,它负责管理 beans 的完整生命周期。
@PostConstruct 注释作为初始化回调函数的一个替代
@PreDestroy 注释作为销毁回调函数的一个替代
AnnotationConfigApplicationContext的使用有两种,一种是指定java文件配置类,另一种是指定扫描路径。
@Configuration注解主要是给我们的类加上了cglib代理。在执行我们的配置类的方法时,会执行cglib代理类中的方法,
其中有一个非常重要的判断,当我们的执行方法和我们的调用方法是同一个方法时,会执行父类的方法new(cglib代理基于继承)
当执行方法和调用方法不是同一个方法时会调用beanFactory.getBean获取
Spring 框架的 AOP:
Spring 框架的一个关键组件是面向切面的编程(AOP)框架。面向切面的编程需要把程序逻辑分解成不同的部分称为所谓的关注点。
跨一个应用程序的多个点的功能被称为横切关注点,这些横切关注点在概念上独立于应用程序的业务逻辑。
在软件开发过程中有各种各样的很好的切面的例子,如日志记录、审计、声明式事务、安全性和缓存等。
在 OOP 中,关键单元模块度是类,而在 AOP 中单元模块度是切面。依赖注入帮助你对应用程序对象相互解耦合,
AOP 可以帮助你从它们所影响的对象中对横切关注点解耦。AOP 像是编程语言的触发物,如 Perl,.NET,Java 或者其他语言。
Spring AOP 模块提供拦截器来拦截一个应用程序,例如,当执行一个方法时,你可以在方法执行之前或之后添加额外的功能。
CREATE 语句 CREATE 语句用于向当前或指定的 Catalog 中注册表、视图或函数。
ACID:
原子性:事务应该当作一个单独单元的操作,这意味着整个序列操作要么是成功,要么是失败的。
一致性:这表示数据库的引用完整性的一致性,表中唯一的主键等。
隔离性:可能同时处理很多有相同的数据集的事务,每个事务应该与其他事务隔离,以防止数据损坏。
持久性:一个事务一旦完成全部操作后,这个事务的结果必须是永久性的,不能因系统故障而从数据库中删除。
之前很多不懂的问题,现在回过头来看了之后,有了一点理解的头绪。
还有着许许多多的注释需要去一 一使用,掌握。
明天目标:
学习springJDBC
spring MVC
评论