修改<>符号
This commit is contained in:
parent
8d4c6dd309
commit
681210cd11
@ -3,9 +3,9 @@ id: "2018-10-21-10-38-05"
|
|||||||
date: "2018/10/21 10:38:05"
|
date: "2018/10/21 10:38:05"
|
||||||
title: "spring之最小化XML配置"
|
title: "spring之最小化XML配置"
|
||||||
tags: ["java", "spring"]
|
tags: ["java", "spring"]
|
||||||
categories:
|
categories:
|
||||||
- "java"
|
- "java"
|
||||||
- "spring学习"
|
- "spring学习"
|
||||||
---
|
---
|
||||||
|
|
||||||
## 一、自动装配
|
## 一、自动装配
|
||||||
@ -14,12 +14,12 @@ categories:
|
|||||||
|
|
||||||
| 类型 | 解释 | xml 配置 |
|
| 类型 | 解释 | xml 配置 |
|
||||||
| ---------- | -------------------------------------- | ---------------------------------------------- |
|
| ---------- | -------------------------------------- | ---------------------------------------------- |
|
||||||
| byName | 根据 Bean 的 name 或者 id | \<bean id="bean" class="…" autowire="byName"/> |
|
| byName | 根据 Bean 的 name 或者 id | <bean id="bean" class="…" autowire="byName"/> |
|
||||||
| ByType | 根据 Bean 类型自动装配 | \<bean id="bean" class="…" autowire="byType"/> |
|
| ByType | 根据 Bean 类型自动装配 | <bean id="bean" class="…" autowire="byType"/> |
|
||||||
| contructor | 根据 Bean 的构造器入参具有相同类型 | 同上 |
|
| contructor | 根据 Bean 的构造器入参具有相同类型 | 同上 |
|
||||||
| Autodetect | 首先使用 contructor,失败再尝试 byType | 同上 |
|
| Autodetect | 首先使用 contructor,失败再尝试 byType | 同上 |
|
||||||
|
|
||||||
  byType 在出现多个匹配项时不会自动选择一个然是报错,为避免报错,有两种办法:1.使用\<bean>元素的 primary 属性,设置为首选 Bean,但所有 bean 的默认 primary 都是 true,因此我们需要将所有非首选 Bean 设置为**false**;2.将 Bean 的`autowire-candidate`熟悉设置为**false**,取消 这个 Bean 的候选资格,这个 Bean 便不会自动注入了。
|
  byType 在出现多个匹配项时不会自动选择一个然是报错,为避免报错,有两种办法:1.使用<bean>元素的 primary 属性,设置为首选 Bean,但所有 bean 的默认 primary 都是 true,因此我们需要将所有非首选 Bean 设置为**false**;2.将 Bean 的`autowire-candidate`熟悉设置为**false**,取消 这个 Bean 的候选资格,这个 Bean 便不会自动注入了。
|
||||||
|
|
||||||
  contructor 自动装配和 byType 有一样的局限性,当发现多个 Bean 匹配某个构造器入参时,Spring 不会尝试选择其中一个;此外,如果一个类有多个构造器都满足自动装配的条件,Spring 也不会猜测哪个更合适使用。
|
  contructor 自动装配和 byType 有一样的局限性,当发现多个 Bean 匹配某个构造器入参时,Spring 不会尝试选择其中一个;此外,如果一个类有多个构造器都满足自动装配的条件,Spring 也不会猜测哪个更合适使用。
|
||||||
|
|
||||||
@ -27,11 +27,11 @@ categories:
|
|||||||
|
|
||||||
### 2、默认自动装配
|
### 2、默认自动装配
|
||||||
|
|
||||||
  如果需要为 Spring 应用上下文中的每个 Bean(或者其中的大多数)配置相同的 autowire 属性,可以在根元素\<beans>上增加一个 default-autowire 属性,默认该属性设置为 none。该属性只应用于指定配置文件中的所有 Bean,并不是 Spring 上下文中的所有 Bean。
|
  如果需要为 Spring 应用上下文中的每个 Bean(或者其中的大多数)配置相同的 autowire 属性,可以在根元素<beans>上增加一个 default-autowire 属性,默认该属性设置为 none。该属性只应用于指定配置文件中的所有 Bean,并不是 Spring 上下文中的所有 Bean。
|
||||||
|
|
||||||
### 3、混合使用自动装配和显式装配
|
### 3、混合使用自动装配和显式装配
|
||||||
|
|
||||||
  当我们对某个 Bean 使用了自动装配策略,并不代表我们不能对该 Bean 的某些属性进行显示装配,任然可以为任意一个属性配置\<property>元素,显式装配将会覆盖自动装配。**但是**当使用 constructor 自动装配策略时,我们必须让 Spring 自动装配构造器所有入参,不能使用\<constructor-arg>元素进行混合。
|
  当我们对某个 Bean 使用了自动装配策略,并不代表我们不能对该 Bean 的某些属性进行显示装配,任然可以为任意一个属性配置<property>元素,显式装配将会覆盖自动装配。**但是**当使用 constructor 自动装配策略时,我们必须让 Spring 自动装配构造器所有入参,不能使用<constructor-arg>元素进行混合。
|
||||||
|
|
||||||
## 二、注解装配
|
## 二、注解装配
|
||||||
|
|
||||||
|
@ -3,9 +3,9 @@ id: "2018-10-22-10-38-05"
|
|||||||
date: "2018/10/22 10:38:05"
|
date: "2018/10/22 10:38:05"
|
||||||
title: "spring之面向切面"
|
title: "spring之面向切面"
|
||||||
tags: ["java", "spring"]
|
tags: ["java", "spring"]
|
||||||
categories:
|
categories:
|
||||||
- "java"
|
- "java"
|
||||||
- "spring学习"
|
- "spring学习"
|
||||||
---
|
---
|
||||||
|
|
||||||
  Spring 的基础是 IOC 和 AOP,前面两节对 IOC 和 DI 做了简单总结,这里再对 AOP 进行一个学习总结,Spring 基础就算有一个初步了解了。
|
  Spring 的基础是 IOC 和 AOP,前面两节对 IOC 和 DI 做了简单总结,这里再对 AOP 进行一个学习总结,Spring 基础就算有一个初步了解了。
|
||||||
@ -87,9 +87,7 @@ categories:
|
|||||||
| @annotation | 限制匹配带有指定注解连接点 |
|
| @annotation | 限制匹配带有指定注解连接点 |
|
||||||
| bean() | 使用 Bean ID 或 Bean 名称作为参数来限制切点只匹配特定的 Bean |
|
| bean() | 使用 Bean ID 或 Bean 名称作为参数来限制切点只匹配特定的 Bean |
|
||||||
|
|
||||||
 其中只有 execution 指示器是唯一的执行匹配,其他都是限制匹配。因此 execution 指示器是
|
  其中只有 execution 指示器是唯一的执行匹配,其他都是限制匹配。因此 execution 指示器是我们在编写切点定义时最主要使用的指示器。
|
||||||
|
|
||||||
其中只有 execution 指示器是唯一的执行匹配,其他都是限制匹配。因此 execution 指示器是我们在编写切点定义时最主要使用的指示器。
|
|
||||||
|
|
||||||
### 2、编写切点
|
### 2、编写切点
|
||||||
|
|
||||||
@ -99,7 +97,7 @@ categories:
|
|||||||
execution(* com.test.Hello.sayHello(..))
|
execution(* com.test.Hello.sayHello(..))
|
||||||
```
|
```
|
||||||
|
|
||||||
方法表达式以**\* **号开始,说明不管方法返回值的类型。然后指定全限定类名和方法名。对于方法参数列表,我们使用(\*\*)标识切点选择任意的 sayHello()方法,无论方法入参是什么。
|
方法表达式以" \* "开始,说明不管方法返回值的类型。然后指定全限定类名和方法名。对于方法参数列表,我们使用(..)标识切点选择任意的 sayHello()方法,无论方法入参是什么。
|
||||||
|
|
||||||
  同时我们可以使用 (and),||(or),!(not)来连接指示器,如下所示:
|
  同时我们可以使用 (and),||(or),!(not)来连接指示器,如下所示:
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user