spring

三层架构     

  • A 表现层   web层    MVC是表现层的一个设计模型 
  • B 业务层  service层
  • C 持久层  dao层

Spring 的 BeanFactory 容器

Bean 的作用域

<bean>标签中id和name属性的配置
从之前编写的Spring配置文件中,我们可以发现<bean>标签中有一个id属性,其实它还有一个和id属性类似的name属性,根据它俩的值均能得到配置对象。

id属性:在Spring配置文件中会有多个bean标签,但它们的id属性值是不能相同的。Bean起名字时,在约束中采用的是ID约束(唯一约束),而且名字必须以字母开始,可以使用字母、数字、连字符、下划线、句号、冒号等,但id属性值绝对不能有特殊符号;
name属性:没有使用约束中的唯一约束,理论上name属性值是可以出现重复的,但是这在实际开发中是不可能出现的,而且它里面可以出现特殊字符。

 

Singleton 是单例类型,就是在创建起容器时就同时自动创建了一个 bean 的对象,不管你是否使用,他都存在了,每次获取到的对象都是同一个对象。注意,Singleton 作用域是 Spring 中的缺省作用域

 

Prototype 是原型类型,它在我们创建容器的时候并没有实例化,而是当我们获取bean的时候才会去创建一个对象,而且我们每次获取到的对象都不是同一个对象。

生命周期回调方法 (创建-初始化-使用-销毁)

init-method 属性指定一个方法,在实例化 bean 时,立即调用该方法。

destroy-method 指定一个方法,只有从容器中移除 bean 之后,才能调用该方法。

Spring Bean 定义继承

使用 parent,可以定义一个父 bean 的定义作为模板和其他子 bean 就可以从父 bean 中继承所需的配置。

在定义一个 Bean 定义模板时,你不应该指定的属性,而应该指定带 true 值的抽象属性

依赖注入

基于构造函数注入和基于设值函数注入中的 Beans.xml 文件的区别。唯一的区别就是在基于构造函数注入中,我们使用的是〈bean〉标签中的〈constructor-arg〉元素,而在基于设值函数的注入中,我们使用的是〈bean〉标签中的〈property〉元素。
ref 传递引用  value 传递值

使用 p-namespace 实现 XML 配置

集合注入

引入注入

自动装配

autowire:  byName/byType

byName:在 XML 配置文件中 beans 的 auto-wire 属性设置为 byName将相同名称beans匹配连接,如果找到匹配项将注入,否则抛出异常

byType:在 XML 配置文件中 beans 的 autowire 属性设置为 byType。然后,如果它的 type 恰好与配置文件中 beans 名称中的一个相匹配,它将尝试匹配和连接它的属性。如果找到匹配项,它将注入这些 beans,否则,它将抛出异常。

constructor:它尝试把它的构造函数的参数与配置文件中 beans 名称中的一个进行匹配和连线。如果找到匹配项,它会注入这些 bean,否则,它会抛出异常。

 

注解:

@Component

@Service 服务层

@Repository 持久层

@controller web层 控制层

 

 

@Required 注释应用于 bean 属性的 setter 方法,它表明受影响的 bean 属性在配置时必须放在 XML 配置文件中,否则容器就会抛出一个 BeanInitializationException 异常。

 

值注入   @value 加到set方法 或者 局部变量

对象的注入   @Autowired   @Qualifier 相当于 @Resourse

 

 

 

Spring @Qualifier 注释 可能会有这样一种情况,当你创建多个具有相同类型的 bean 时,并且想要用一个属性只为它们其中的一个进行装配,在这种情况下,你可以使用 @Qualifier 注释和 @Autowired 注释通过指定哪一个真正的 bean 将会被装配来消除混乱。

@Scope  (bean作用域) 默认为单例模式

prototype  原型模式

 

@PostConstruct (bean初始化的回调函数)

@PreDestroy (bean销毁时的回调函数)

 

@import 注解允许从另一个配置类中加载

@Bean 定义

 

p名称空间的属性注入方式

  • 普通属性:p:属性名称=“值”
  • 对象类型的属性:p:属性名称-ref=“值”

SpEL表达式语言的属性注入(Spring3.0版本后提供的方式)

语法格式是#{SpEL}

  1. <dependency>

  2. <groupId>org.aspectj</groupId>

  3. <artifactId>aspectjweaver</artifactId>

  4. <version>1.6.8</version>

  5.  

Spring分模块开发的第一种配置方式就是指在加载配置文件的时候,一次加载多个配置文件。

Spring分模块开发的第二种配置方式就是指在一个配置文件中引入多个配置文件。

aop

在这里插入图片描述

引入aspectj

<dependency>

<groupId>org.aspectj</groupId>

<artifactId>aspectjweaver</artifactId>

<version>1.6.8</version>

</dependency>

 

Spring中切入点表达式的写法

Spring通过execution函数,可以定义切入点切入的方法。其语法为:[访问修饰符] 方法的返回值 包名.类名.方法名(参数)

aop 注解

@Aspect注解用于定义切面类

@Before  前置通知

@AfterReturning  后置通知  returning 代表返回的结果

@Around  代表环绕通知   throwing

@After //最终通知

@Pointcut注解来定义切入点

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值