spring实战(第四版)读书笔记 附电子书网盘链接

本书PDF资源下载地址:链接:https://pan.baidu.com/s/1i6KASh3 密码:yfeo
第2章
2.1 Spring 配置的可选方案
2.1.1 在 XML 中进行显式配置。
2.1.2 在 Java 中进行显式配置。
2.1.3 隐式的 bean 发现机制和自动装配。(推荐使用)

Spring 从两个角度来实现自动化装配:
组件扫描( component scanning ): Spring 会自动发现应用上下文中所创建的 bean 。
自动装配( autowiring ): Spring 自动满足 bean 之间的依赖。

1.使用xml配置
容器类读取配置文件初始化,然后把Bean放到容器中,供getBean方法调用。
2.使用java代码配置
首先需要创建程序入口类(使用@ContextConfiguration注解标识),再编写配置类(使用@Configuration注解标识,并配置扫描基本包@ComponentScan,把所需类加载到spring容器中供调用或者装配其他的类)。
3.混合配置(一般都是混合配置)
新建配置类 在类上加@Configuration注解,也可以导入其他的配置类,避免把所有的Bean都挤在一个类中。
使用java代码加载Bean, 使用@Bean加载到spring容器中。

在类中可以加@ImportResource("*******.xml")导入xml配置文件,这样就实现了javaConfig和xml方式配置Bean整合。
上面说明了使用java配置整合xml. 如果用xml整合java咋搞
可以在xml配置文件中加载java配置类

通过以上两种方式将多种形式的配置整合起来、。

装配类的方式
1.使用java代码(推荐)
数值 @value,引用@autoWired – 不管是构造方法还是普通方法都可以使用。
2.使用xml
数值 value, 引用 ref,
构造方法使用,list set array可以装配list属性和set属性和数组
普通方法或者属性 使用
3.使用C命名空间/P命名空间
麻烦不学。

第三章
使用 profile 属性 配置多个环境(开发、测试、生产)的所需要的配置文件
java配置方式:在类上加@profile 本类下的@Bean按激活的profile加载
spring3.2 可以在方法上加@profile注解
xml配置方式 Beans根节有profile属性

激活 profile
java配置方式
在启动类加 @Activeprofiles注解

其他方式:
spring会在所有可能配置了这两个属性值得地方查找
spring.profiles.active
spring.profiles.default

1.作为 DispatcherServlet 的初始化参数;
2.作为 Web 应用的上下文参数;
作为 JNDI 条目;
作为环境变量;
作为 JVM 的系统属性;
在集成测试类上,使用 @ActiveProfiles 注解设置。

第1

在这里插入图片描述
第2
在web.xml配置这个
在这里插入图片描述
这样子以后spring就会在这几个地方找,这两个属性,找到谁就按照谁配置的profile属性加载对应的Bean,没有被激活的Bean不会加载。
spring4新功能
根据条件创建Bean

  1. 在Bean加@Conditional注解此参数是一个.class,这个类实现了一个匹配接口,返回布尔值,spring调用该接口的方法,ture就创建这个Bean,flase就不创建这个Bean.

3.3 处理自动装配的歧义性

仅有一个 bean 匹配所需的结果时,自动装配才是有效的。如果不仅有一个 bean 能够匹配结果的话,这种歧义性会阻碍 Spring 自动装配属
性、构造器参数或方法参数。

当@autowired一个接口时 有多个可选的实现类 spring 不知道选那个好咋地办?
1.给其中一个类设置首选 就是添加一个@Primary 注解 如下所示。

@Component
@Primary
public class SgtPeppers implements CompactDisc{
pub…
}
xml配置文件中是这个样子滴

2.使用限定符 @Qualifier注解,作用jiuTM选我标识的类

@Autowired
@Qualifier(“sss”)
private CompactDisc compactDisc;

3.直接使用Resource注解 这个注解相当于@Autowired
和@Qualifier(“sss”)的组合(应该是不然就是网上教学视频毒害了我)

@Resource(name=“sd”)
private CompactDisc compactDisc;

3.4 bean 的作用域
默认单例,就是所有的类让spring管理后,getBean时得到的都是一个对象,地址值一样。

单例类需要保持无状态,不然下次复用或者同时使用会产生并发问题。
保持无状态就是类中没有普通成员变量。 如果是static成员变量的就没啥事了。
或者是顶层类 比如sqlsessionfactory类 全局只有一个。

单例( Singleton ):在整个应用中,只创建 bean 的一个实例。
原型( Prototype ):每次注入或者通过 Spring 应用上下文获取的时候,都会创建一个新的 bean 实例。
会话( Session ):在 Web 应用中,为每个会话创建一个 bean 实例。
请求( Rquest ):在 Web 应用中,为每个请求创建一个 bean 实例。

实现使用 @Scope注解

会话和请求作用域一般不用 可以有其他更通用的方法代替,比如使用cookies技术,数据库啥啥的。

3.5  运行时值注入

就是先把值写到外部配置文件中,spring运行时加载文件 从文件中取值 (key,value)再把值装配到Bean中,作用:避免硬编码。比如数据库的地址,端口,账号,,艹,打字真累。

1.属性占位符( Property placeholder )。
2.Spring 表达式语言( SpEL )。

第一种用java代码实现
在这里插入图片描述
1.读取外部配置文件解析后放到环境对象中
2.引用环境对象
3.调用方法getProperty()一般使用重载的两个参数的方法,作用是配置文件万一没有,给个默认值,别ta娘报错。

外部文件properties中的value 可以为string,int,或者是个类的二进制文件, getProperty()这里面都有对应的重载方法解析他们。

第二种 用xml配置文件实现

引入 properties文件
context:propertyplaceholder
使用 Spring 表达式语言进行装配

表达式语言 格式${…} 还有很多功能

  1. 最简单的如上 指代一个String 即 常量 也可以是数字
  2. 还可以指代一个类
  3. 还可以调用方法 {T(Math).sub(1,2)}
  4. 还可以指代做完运算后的值
  5. 正则表达式
  6. 集合操作

本章小结
1.多环境配置文件
2.Bean装配歧义性
3.spring表达式

第 4 章 面向切面的 Spring

cao

  1. aop基础功能 把通知织入切点 通知和切点没有联系 比如开启事务
  2. 把通知织入切点时,通知也获取到要传递给切点的参数先用用但是不改参数要不然就炸了,进行一顿操作 例子:
    /*
  • 定义一个切点表达式,表示要切谁
  • && 一个限定符用于说明参数在传递给被通知的类之前,先传递给通知用用。
  • 需要指定参数类型和参数名字,保证表达式中的和通知中的一样 fun3是通知
  • /
    @Pointcut("execution(
    soundsystem.CompactDisc.*(int))&& args(bad)")
    public void fun2(){}
    @Before(“fun2()”)
    public void fun3(int bad){
    System.out.println(bad);
    }
    3.使用aop为Bean添加新的方法(前两点都是对Bean已有的方法进行增强)
    先不学,用到在学

4.使用java注解和java代码配置必须要有通知类的源代码才行,如果没有只能使用xml方式配置了
xml提供了一种非侵入式配置方式。
一般使用aop:config以这个开头写配置
aop:config 顶层的 AOP 配置元素。大多数的aop:*元素必须包含在aop:config元素内

启动注解定义切面(谁切谁) 通知切切点
aop:aspectj-autoproxy 启用@AspectJ注解驱动的切面

使用xml定义切面(谁切谁2) 通知切切点
aop:aspect 定义一个切面

通知器就是不用上面两个的谁切谁了 , 有了通知器说明通知已经定义好了,只需要配置好切谁就行
aop:advisor 定义 AOP 通知器

定义通知
aop:before 定义一个 AOP 前置通知
aop:after 定义 AOP 后置通知(不管被通知的方法是否执行成功)
aop:after-returning 定义 AOP 返回通知
aop:after-throwing 定义 AOP 异常通知
aop:around 定义 AOP 环绕通知
定义切点
aop:pointcut 定义一个切点

没学
aop:declare-parents 以透明的方式为被通知的对象引入额外的接口

第五章 终于学完基础知识,来做一个真实的web应用吧亲

DispatcherServlet 加载包含 Web 组件的 bean ,如控制器、视图解析器以及处理器映射。ContextLoaderListener 要加载应用中的其他 bean 。这些 bean 通常是驱动应用后端的中间层和数据层组件。

加载这两个上下文需要

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值