Spring基础知识汇总
来源:互联网 发布:怎样通过网络找人 编辑:程序博客网 时间:2024/05/20 02:55
Sping 的 BeanFactory 容器:XmlBeanFactory
这个容器从一个 XML 文件中读取配置元数据,由这些元数据来生成一个被配置化的系统或者应用。
XmlBeanFactory factory = new XmlBeanFactory(new ClassPathResource("Beans.xml"));
Spring ApplicationContext 容器:
FileSystemXmlApplicationContext:该容器从 XML 文件中加载已被定义的 bean。在这里,你需要提供给构造器 XML 文件的完整路径
ApplicationContext context = new FileSystemXmlApplicationContext("C:/Users/ZARA/workspace/HelloSpring/src/Beans.xml");
ClassPathXmlApplicationContext:该容器从 XML 文件中加载已被定义的 bean。在这里,你不需要提供 XML 文件的完整路径,只需正确配置 CLASSPATH 环境变量即可,因为,容器会从 CLASSPATH 中搜索 bean 配置文件。
ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");
WebXmlApplicationContext:该容器会在一个 web 应用程序的范围内加载在 XML 文件中已被定义的 bean。
2.Bean作用域:
singleton 在每一个 Spring IoC 容器中只有一个实例
prototype 每次需要bean时都会创建一个新的实例
request 每次http请求会创建一个新的实例。只在Web Spring ApplicationContext的上下文中有效。
session 每次http会话会创建一个新的实例。只在Web Spring ApplicationContext的上下文中有效。
global-session 每次全局http会话会创建一个新的实例。只在 Web Spring ApplicationContext 的上下文中有效。
<bean id="helloWorld" class="com.tutorialspoint.HelloWorld"
scope="singleton">
</bean>
3.依赖注入类型:
Constructor-based dependency injection
当容器调用带有多个参数的构造函数类时,实现基于构造函数的 DI,每个代表在其他类中的一个依赖关系。
<bean id="textEditor" class="com.tutorialspoint.TextEditor">
<constructor-arg ref="spellChecker"/>
</bean>
<!-- Definition for spellChecker bean -->
<bean id="spellChecker" class="com.tutorialspoint.SpellChecker">
</bean>
Setter-based dependency injection
基于 setter 方法的 DI 是通过在调用无参数的构造函数或无参数的静态工厂方法实例化 bean 之后容器调用 beans 的 setter 方法来实现的。
<!-- Definition for textEditor bean -->
<bean id="textEditor" class="com.tutorialspoint.TextEditor">
<property name="spellChecker" ref="spellChecker"/>
</bean>
<!-- Definition for spellChecker bean -->
<bean id="spellChecker" class="com.tutorialspoint.SpellChecker">
</bean>
4.自动装配模式:
no 这是默认的设置,它意味着没有自动装配,你应该使用显式的bean引用来连线。你不用为了连线做特殊的事。在依赖注入章节你已经看到这个了。
<!-- Definition for textEditor bean -->
<bean id="textEditor" class="com.tutorialspoint.TextEditor">
<property name="spellChecker" ref="spellChecker" />
<property name="name" value="Generic Text Editor" />
</bean>
<!-- Definition for spellChecker bean -->
<bean id="spellChecker" class="com.tutorialspoint.SpellChecker">
</bean>
byName 由属性名自动装配。Spring 容器看到在 XML 配置文件中 bean 的自动装配的属性设置为 byName。然后尝试匹配,并且将它的属性与在配置文件中被定义为相同名称的 beans 的属性进行连接。
<!-- Definition for textEditor bean -->
<bean id="textEditor" class="com.tutorialspoint.TextEditor"
autowire="byName">
<property name="name" value="Generic Text Editor" />
</bean>
<!-- Definition for spellChecker bean -->
<bean id="spellChecker" class="com.tutorialspoint.SpellChecker">
</bean>
byType 由属性数据类型自动装配。Spring 容器看到在 XML 配置文件中 bean 的自动装配的属性设置为 byType。然后如果它的类型匹配配置文件中的一个确切的 bean 名称,它将尝试匹配和连接属性的类型。如果存在不止一个这样的 bean,则一个致命的异常将会被抛出。
<!-- Definition for textEditor bean -->
<bean id="textEditor" class="com.tutorialspoint.TextEditor"
autowire="byType">
<property name="name" value="Generic Text Editor" />
</bean>
<!-- Definition for spellChecker bean -->
<bean id="SpellChecker" class="com.tutorialspoint.SpellChecker">
</bean>
constructor 类似于 byType,但该类型适用于构造函数参数类型。如果在容器中没有一个构造函数参数类型的 bean,则一个致命错误将会发生。
public TextEditor( SpellChecker spellChecker, String name ) {
this.spellChecker = spellChecker;
this.name = name;
}
<!-- Definition for textEditor bean -->
<bean id="textEditor" class="com.tutorialspoint.TextEditor"
autowire="constructor">
<constructor-arg value="Generic Text Editor"/>
</bean>
<!-- Definition for spellChecker bean -->
<bean id="SpellChecker" class="com.tutorialspoint.SpellChecker">
</bean>
5.注解:
@Required
@Required 注解应用于 bean 属性的 setter 方法。它表明受影响的 bean 属性在配置时必须放在 XML 配置文件中,否则容器就会抛出一个 BeanInitializationException 异常。
@Autowired
@Autowired 注解可以应用到 bean 属性的 setter 方法,非 setter 方法,构造函数和属性。
(1)Setter 方法中的 @Autowired:当 Spring遇到一个在 setter 方法中使用的 @Autowired 注释,它会在方法中视图执行 byType 自动连接。
(2)属性中的 @Autowired:当时使用 为自动连接属性传递的时候,Spring 会将这些传递过来的值或者引用自动分配给那些属性。
(3)构造函数中的 @Autowired:一个构造函数 @Autowired 说明当创建 bean 时,即使在 XML 文件中没有使用 元素配置 bean ,构造函数也会被自动连接。
@Qualifier
通过指定确切的将被连线的 bean,@Autowired 和 @Qualifier 注解可以用来消除混乱。
JSR-250 Annotations
Spring 支持 JSR-250 的基础的注解,其中包括了 @Resource,@PostConstruct 和 @PreDestroy 注解。
- spring基础知识汇总
- Spring基础知识汇总
- Spring基础知识汇总
- Spring基础知识汇总
- Spring基础知识汇总
- spring基础知识汇总
- Spring基础知识汇总
- Spring基础知识汇总
- Spring基础知识汇总
- Spring基础知识汇总
- Spring基础知识汇总
- Spring基础知识汇总
- Spring基础知识汇总
- Spring基础知识汇总
- Spring 基础知识汇总
- Spring基础知识汇总
- Spring基础知识汇总
- Spring 基础知识汇总
- vivado xsim仿真error:module 'xpm_memory_sdpram' not found
- Packagist / Composer(中国全量镜像)
- iOS中的crash防护(一)unrecognized selector sent to instance
- safari浏览器
- spring cloud简介
- Spring基础知识汇总
- Windows HTTP服务(WinHTTP)介绍
- 文本关键词提取算法
- Kettle乱码解决方案
- [Maven]在Eclipse中执行并添加Maven命令
- java笔记
- [LeetCode]109. Convert Sorted List to Binary Search Tree
- 安卓中的上下文操作模式ActionMode:email列表多选中用到的
- npm和webpack下的angular-demo