Spring5
Spring5
该项目的代码仓库地址: https://gitee.com/laobai1230/spring_learning
1. 初始化配置
1 |
|
2. IoC(控制反转)
2.1 理解
- 要实现不同的操作,不用在程序中进行改动,修改配置文件即可
- 一句话概括就是,对象由Spring 创建 管理 装配
2.2 构造对象的方法
下标赋值
1
2
3
4<!-- 第一种方式 下标赋值 -->
<bean id="user1" class="com.laobai.pojo.User">
<constructor-arg index="0" value="老白1230"/>
</bean>类型
1
2
3
4<!-- 第二种方式 类型 -->
<bean id="user2" class="com.laobai.pojo.User">
<constructor-arg type="java.lang.String" value="老白2001"/>
</bean>参数名
1
2
3
4<!-- 第三种方式 参数名 -->
<bean id="user3" class="com.laobai.pojo.User">
<constructor-arg name="name" value="老白011230"/>
</bean>在配置文件加载的时候,容器中管理的对象就已经初始化了
3. DI依赖注入
3.1 构造器注入
3.2 set方式注入
- 测试对象
1 | public class Student { |
完成注入
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="address" class="com.laobai.pojo.Address">
<property name="actualAddress" value="重庆"/>
</bean>
<bean id="student" class="com.laobai.pojo.Student">
<!-- 第一种 普通值注入 value -->
<property name="name" value="老白"/>
<!-- 第二种 Bean注入,ref-->
<property name="address" ref="address"/>
<!-- 数组注入 ref -->
<property name="books">
<array>
<value>A</value>
<value>B</value>
<value>C</value>
<value>D</value>
</array>
</property>
<!-- List -->
<property name="hobbies">
<list>
<value>Football</value>
<value>Volleyball</value>
<value>Tabletennis</value>
</list>
</property>
<!-- Map -->
<property name="card">
<map>
<entry key="身份证" value="500xxxyyyymmddabcd"/>
<entry key="生日" value="20011230"/>
</map>
</property>
<!-- Set -->
<property name="games">
<set>
<value>LOL</value>
<value>DOTA</value>
<value>MC</value>
</set>
</property>
<!-- null -->
<property name="wife">
<null/>
</property>
<!-- Properties -->
<property name="info">
<props>
<prop key="学号">2052526</prop>
<prop key="性别">男</prop>
<prop key="姓名">老白</prop>
</props>
</property>
</bean>
</beans>
3.3 扩展注入
3.3.1 p命名空间和c命名空间注入
先在xml中加入标签
1 | xmlns:p="http://www.springframework.org/schema/p" |
1 |
|
c命名空间需要有参构造
User类中既有有参构造器也有无参构造器
4. Bean的作用域
- 单例模式 很重要!!!
5. Bean的自动装配
- 自动装配是Spring满足bean依赖的一种方式
- Spring会在上下文中自动寻找,并自动给bean装配属性
在Spring中有三种装配的方式
- xml中显式配置
- 在java显式配置
- 隐式的自动装配(重要)
6. 注解实现自动装配
- 添加context配置 导入约束支持
7. 静态代理
8. 动态代理
- 利用反射生成代理类【重点理解】
- 动态代理的是接口
9. AOP
面向切面编程
附: IDEA中的一些快捷键操作
- CPXAC -- ClassPathXmlApplicationContext(大写首字母匹配)
- 后缀 .castvar -- 强制类型转换并声明变量
- alt+insert 生成
- alt+enter
- ctrl+/ 注释
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 The Coding Odyssey | Chronicles of a Software Developer!