博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring(1)--在IoC容器中添加bean
阅读量:5235 次
发布时间:2019-06-14

本文共 2562 字,大约阅读时间需要 8 分钟。

〇、整体架构

一、装配Bean

1 
2
3
4 5

二、依赖注入

1、属性注入

必须提供默认(无参)构造函数,使用Setter方法进行注入

1 
2
3
4
5
6
7
8 9 10
11
13 p:brand=""14 p:brand.name=""15 p:price=""16
17 p:car-ref="car"/>

 

注意事项:属性配置匹配的是Setter方法而不是私有字段。p命名空间需要进行配置定义。

2、构造函数注入

必须提供带参构造器

 

注意事项:当有构造器有循环依赖调用,造成类似死锁的情况时,使用属性注入。

 

3、工厂注入(不推荐)

在一些遗留系统或第三方类库中使用

 

 

注意事项:(1)变量的前两个字母要么全大写要么全小写。(2)特殊符号(<、>、&、“、‘)使用转义序列。(3)可以使用内部Bean,和内部类相似。(4)空值需要填入null;

三、方法注入

1、lookup方法注入(需要CGLib类包)

一般在希望通过一个singleton Bean 获取一个prototype Bean时使用

1 
3 4
5
6

2、方法替换

 用于替换他人的Bean必须实现MethodReplacer接口

用于替换掉同名的方法

1 
2
3
4 5

 

四、Bean之间的关系

1、继承

与代码的继承一样

1 <!--定义为抽象bean-->2 
3 <!--继承的bean-->4

 

2、依赖

当一个Bean初始化时保证其依赖的Bean已经被初始化

1 
2

 

 

3、引用

想在运行期通过getBean(beanName)方法获取对应的Bean

1 
2
3
4
5
6

 

五、整合多个配置文件

1 

 六、Bean作用域

scope=""  singleton prototype request session globalSession

非Web相关作用域引用Web相关作用域的Bean需要创建代理 (JDK只支持对接口的代理,引入CGLib才支持对类的代理)使用aop Schema

 

1 xmlns:aop="http://www.springframework.prg/schema/aop"2 
3
4
5 6
7
8

七、基于注解的配置

1 
2 3

使用类别regex可以完成所有类型的匹配。

<context:component-scan>有一个use-default-filters属性 默认为true 默认对以下进行扫描,优先级高于过滤器。

 

@Component(对进行标注)  {

@Repository(对DAO实现类),@Service(Service实现类),@Controller(Service实现类)}

1、自动装配Bean

1 import org.springframework.beans.factory.annotation.Autowired; 2 import org.springframework.beans.factory.annotation.Qualifier; 3 import org.springframework.stereotype.Service; 4  5 @Service @Scope("prototype") //注解形式的作用域设置 6 public class LoginService{ 7  8 @Autowired   //在Setter上使用同理,建议在方法上使用更好!! 9 private LogDao logDao;10 11 @Autowired(required=false)  //表明这个注入不是必须的,可以匹配不到12 private UserDao userDao;13 14 @Autowired15 @Qualifier("serveDao")         //匹配的类型有多个Bean,通过名称注入16 private serveDao serveDao;17 18 @Autowired  //会将所有符合类型的Bean都注入 可以在Plugin的实现类中使用@Order(value=1)进行按先后插入,数字越小越先插入。19 private List
plugins;20 21 @Autowired22 private List
plugins;//key是Bean的名字 value是所有实现了Plugin的Bean23 }

 

八、基于Java类的配置

 

九基于Groovy DSL的配置

 

转载于:https://www.cnblogs.com/WutingjiaWill/p/7766121.html

你可能感兴趣的文章
Python 的 sys 模块常用方法?
查看>>
Java hashCode() 方法深入理解 ...
查看>>
Modbus TCP 示例报文
查看>>
spring的annotation
查看>>
go 学习笔记(4) ---项目结构
查看>>
如何解决ORA-01033问题(转)
查看>>
分割线细线
查看>>
java 中的一些运算符问题
查看>>
c# 操作ftp
查看>>
css切换--使用cookie
查看>>
C#运算符之异或运算
查看>>
C语言与C++ <string.h> memchr出现的问题
查看>>
java中静态代码块的用法 static用法详解
查看>>
用于代码检查的错误列表
查看>>
Java线程面试题
查看>>
C#2.0 读word的多个表格到DataGridView或是其它控件 XP Vista
查看>>
sql script: Graphs, Trees, Hierarchies and Recursive Queries
查看>>
Paper Reading: Relation Networks for Object Detection
查看>>
Android中点中overlay弹出带尾巴的气泡的实现
查看>>
Mybatis接口中传递多个参数
查看>>