w3school上面spring文档笔记。


核心容器由spring-core spring-beans spring-context,spring-context-support 等
spring-core提供了ioc和依赖注入功能
spring-beans提供了beanfactory 工厂模式实现
context是建立在core和beans模块上的 类似JNDI注册方式访问对象
然后是数据访问部分,这一层包括JDBC ORM OXM JMS和事务处理 其中jpa数据orm
orm提供了对流行对象关系的映射api
web层提供了web web-mvc web-socket web-portlet组成
还有aop模块儿
在这里插入图片描述
bean是通过配置元数据来初始化bean,其中包括了很多东西,比如初始方法,初始值,销毁方法,bean的作用域
在这里插入图片描述
默认情况下是singleton每次都返回统一个bean
singleton在你建立容器的时候就自动创建了,它相当于一个缺省作用域
在这里插入图片描述
下面来介绍一下bean的生命周期,
在这里插入图片描述bean中还有定义继承,这个和Java中的继承不一样,但是概念一样
在这里插入图片描述
指定这个parent
同样还有一个定义模板
在这里插入图片描述
;看其中的abstract,上面那个模板是不实例化的。
因为她不是完整的。

下面再介绍一下依赖注入依赖注入
为什么需要依赖注入,是因为你这个bean的初始化函数加了一个参数,那么容器就给需要知道你这个参数具体指的是那个bean,那么这个时候你需要指定一下。
在这里插入图片描述
每个基于应用程序的 java 都有几个对象,这些对象一起工作来呈现出终端用户所看到的工作的应用程序。当编写一个复杂的 Java 应用程序时,应用程序类应该尽可能独立于其他 Java 类来增加这些类重用的可能性,并且在做单元测试时,测试独立于其他类的独立性。依赖注入(或有时称为布线)有助于把这些类粘合在一起,同时保持他们独立。

上面这个是基于构造函数注入的配置,其中的constructor-arg ref 就是提示了这个构造函数的参数
在这里插入图片描述
在这里插入图片描述
Java中有内部类,那么也会有bean内部注入,如果这内部的bean不需要单独定义出来,那么就可以再内部直接注入。
在这里插入图片描述
如果你想要直接往里面放入多个值,比如list那么这个
在这里插入图片描述
https://www.w3cschool.cn/wkspring/kp5i1ico.html
这个我就不贴图了,太多了,直接看网址把。

下面引入spring中bean的自动装配进行依赖注入。bean标签里面有autowire属性为一个bean定义指定自动装配模式。
在这里插入图片描述

下面讲一下自动装配的byname、
在这里插入图片描述
在这里插入图片描述
他这个不仅仅是只能再构造函数上面使用,只要是需要构造的地方都可以使用。
byname是检查的class字段
如果byname找不到相应的bean,那么就会抛出一个异常。
下面再讲一下bytype
在这里插入图片描述
这个时候你发现他这个东西大写了,说明一点同样是去找相应的id的名称,但是这个bean是通过她的函数的形参的类型去匹配的。
下面再介绍构造函数的自动装配
在这里插入图片描述
看看这个其实质就是bytype但是她应用于构造函数。
在这里插入图片描述
在这里插入图片描述
之前的都应用于普通的函数。

上界面介绍的所有的自动装配都不妨碍你再指定property或者constructor-arg啥的。反而这两种东西可以互补。

下面到了我们之前用过的基于注解的bean配置上面了。
首先在spring中他的使用注解不是默认打开的,二十需要手动在配置文件里面指定打开。
在这里插入图片描述
注解你的代码表明spring因该自动连接值到属性,方法和构造函数。
第一个@require
用于setter方法,表明bean属性在配置的时候必须放在xml配置文件中。
在这里插入图片描述
其实我感觉这个和不带注解差不多,只不过带了注解就直接制定了必须从xml中获取这个东西,但是之前的例子没有让我发现除了xml还能获取什么东西。但是有一点说就是这个require是可以多次指定的,如果一个一个require没有实现,那么就会直接抛出异常。
@Autowired注释
可以在setter方法中被用于自动连接bean。这个也是实质上是bytype。】
可以用在方法中,还可以用在属性中,还可以用在构造函数中。
那么对应的xml文件中就不需要写什么property constructor啥的了。
同时Autowire还有一个用法,就是默认下面autowire是必须要依赖好的,类似于require但是可以用在这里插入图片描述指定关闭默认。如果关闭了默认的话,那么就算这个没有被注入也是可以运行的。在这里插入图片描述下面再介绍一个之前没有碰到过的注释。@Qualifier注释在这里插入图片描述
这个是如果你再xml中注册了多个相同bean,那么再使用的时候想要只对这一个组件使用多个bean其中的一个。这个是搭配着使用的在这里插入图片描述
在这里插入图片描述
现在介绍一下不用xml就能描述spring基于Java的配置。
@configuration,带有这个就说明他是个配置类。
带有@Configuration的注解类,注意是注解类,说明这个类可以作为ioc定义bean的来源,只是来源,但是并没有说明这个类要被注册为bean。
在这里插入图片描述
@bean注解告诉spring,一个带有@bean注解的方法将返回一个对象。而且这个对象应该被注册在spring上下文。
bean注解的方法名称作为bean的id,定义了配置类,就可以使用 AnnotationConfigApplicationContext来加载他们并提供给spring容器。
在这里插入图片描述
看看这个代码已经没有xml文件了,单独的只需要用加了@configuration的配置类就直接可以定义bean。
如果需要依赖注入的话,也不需要太多的代码,只是用一个bean方法来调用另外一个bean方法就行。
在这里插入图片描述
下面再介绍一下@import注释,这个注释允许从另外一个配置类中加载@bean定义。
在这里插入图片描述
具体就是这个,写的明明白白的。
这样的话,在实例化上下文时候,不需要同时指定两个配置类。也就是说工厂方法只需要一个实现就行了。
@bean定义支持指定初始化和销毁的方法。
在这里插入图片描述
同时也支持改写单实例属性。
在这里插入图片描述
这个介绍的是上下文的事件处理机制。
https://www.w3cschool.cn/wkspring/reap1icq.html

下面来介绍aop编程,这个叫做面向方面编程。
oop中关键单元模块是类,但是aop中是方面,依赖注如帮助你对于应用程序对象相互解耦,aop可以帮助你从他们所影响的对象中对横切关注点解耦。
aop提供拦截器来拦截一个应用程序。执行一个方法是,可以在方法执行执勤或之后添加额外的功能。
下面来介绍一些aop概念和术语。
在这里插入图片描述这个是五种工作类型
在这里插入图片描述
下面举例子。
在这里插入图片描述
第一个红线说明定义了一个面,第二个说明定义了一个切点,一个面里面可以有多个切点,所以第三第四都必须给指定切点
在这里插入图片描述。再来看这个对应的aop中的aspect,她提供了很多api,实现多种事件提醒。其中在返回值后触发的这个方法还有接受值,object类型,具体接受的是return的东西。
异常的那个抛出也是接受的异常类。
https://www.w3cschool.cn/wkspring/omps1mm6.html因为太多了,所以我就i直接把链接放上来了。
上面介绍的是基于xml配置的aop,下面来介绍注解实现aop
在这里插入图片描述
前面这个具体我也不是很懂。应该是spring中有一个基于架构的xml配置文件,但是我在spring boot里面没有遇见过。
在这里插入图片描述
上面这个图的xml是等价配置。
在这里插入图片描述
这个图你可以发现,那个切入点是个方法,一开始看差点没看懂,好像只有这个方法的名字有用,因为毕竟是作为切入点的名字来说的。
在这里插入图片描述
然后这个定义的切面aspect需要的方法api ,
pointcut指向的是切点的名字。
在这里插入图片描述
这个还没搞懂。
https://www.w3cschool.cn/wkspring/k4q21mm8.html具体的再把原链接贴上面,看最后的发现上面这些都是合成在一个类中。和xml定义的那个整体格式类似。

再下面咱们来介绍spring的jdbc框架。
在这里插入图片描述
感觉这个图说的比较对,当时看jsp的时候各种打开连接关闭连接,虽然别的还没看,但是已经认识到了原始的方法的麻烦。
用的是jdbctemplate类。
在这里插入图片描述
这个还是线程安全的,之前稍微了解了一下线程知识确实知道了线程安全是多么的重要。
安全注入到多个daos中。
在这里插入图片描述
这个需要xml配置数据源。我感觉和spring boot中那个配置文件差不多,数据库连接字段也类似。
有了dao之后那么就很容易用一些数据访问技术比如jdbc hibernate jpa jdo啥的访问数据库。
下面据一些例子。
在这里插入图片描述
上面这两个语法我给忘了,但是我印象中好像没有见过,看后面那个string.class传入了一个class类,表示这个是string,上面那个没有,我觉得可能是默认的就是int类型。
下面这个返回一个对象需要引起注意了。
在这里插入图片描述
算了我觉得jdbc这里我可以先略过,毕竟以后要什么还不一定呢。

下面来介绍spring web mvc框架。
mvc,之前了解过,模型(POJO)
在这里插入图片描述
视图(生成客户端浏览器可以解析的html输出) 控制器(处理用户请求,选择合适的模型输出到视图)。
下面来补充一些controller的知识,这些东西之前接触过,但是唯一一点就是modelmap这个东西没见过。
简单介绍一下modelmap这个对象。
在这里插入图片描述
在这里插入图片描述
首先,我们知道了它原来是用于给页面传输值的对象,类似于request请求中的setattribute这个方法,modelmap自己的addattribute方法哦通过键值对的方式传入值。
然后你会疑惑,为什么一个控制器方法接受的是一个类似request对象的东西呢,那么看下面这张图。
在这里插入图片描述、我们知道了modelmap实例是mvc框架自动创建的,并作为控制器参数传入,用户自己不需要创建,那么既然是框架自己创建的,那么咱们也就懂了。modelmap自己不能设置页面跳转,但是可以通过return返回页面字符串来实现跳转。
return跳转的原因:一个定义的 service 方法可以返回一个包含视图名称的字符串用于呈现该模型。这个示例返回 “hello” 作为逻辑视图的名称。(之前controller和service分开了,但是controller里面可以实现service,所以上面这句话的service应该是指的controller)
下面介绍一下spring mvc的视图创建。包括jsp html pdf excel工作表 json 一堆。
在这里插入图片描述
这个message和modelmap有关。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值