`
JavaSam
  • 浏览: 951767 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring 配置文件学习

 
阅读更多
PropertyPlaceholderConfigurer使用笔记
简而言之:就是在spring的配置文件中(.xml)加入外部文件
	PropertyPlaceholderConfigurer是个bean工厂后置处理器的实现,也就是BeanFactoryPostProcessor接口的一个实现。关于BeanFactoryPostProcessor和BeanPostProcessor类似。我会在其他地方介绍。
PropertyPlaceholderConfigurer可以将上下文(配置文件)中的属性值放在另一个单独的标准java Properties文件中去。这样的话,我只需要对properties文件进行修改,而不用对xml配置文件进行修改。
作用是什么呢?
有一些属性值不需要经常变更,但是有一些属性值可能随时改变,把经常会改动的属性值放在另一个文件中的话,程序使用起来也更方便。
下面将通过一个例子来理解PropertyPlaceholderConfigurer。
首先是配置文件,代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util" xsi:schemaLocation="  http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd  http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd">
    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location" value="propertyPlaceHolder.properties"/>
    </bean>
    <bean id="student" class="co.jp.beanFactoryPost.Student">
        <property name="name">
            <value>
                ${name}
            </value>
        </property>
        <property name="age">
            <value>
                ${age}
            </value>
        </property>
        <property name="birth">
            <value>
                ${birth}
            </value>
        </property>
    </bean>
</beans>

在这个配置文件中最重要的就是下面这段代码,

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location" value="propertyPlaceHolder.properties"/>
</bean>


PropertyPlaceholderConfigurer会读取location所设定的属性文件,并将properties文件中的值,设定给${name},${age},${birth}从而完成依赖注入。
相应的properties文件的定义如下:
name=xiaohailinage=27birth=19820123
这里用到的student bean,的class的代码如下:
比较简单,主要是一个get,set方法
public class Student {
	private String name;
	private String age;
	private String birth;

	public void setName(String name) {
		this.name = name;
	}

	public void setAge(String age) {
		this.age = age;
	}

	public void setBirth(String birth) {
		this.birth = birth;
	}

	public String getName() {
		return this.name;
	}

	public String getAge() {
		return this.age;
	}

	public String getBirth() {
		return this.birth;
	}
}
接着,写一个测试的主类,代码如下:

 public class PropertyHolderPlaceDemo {
	public static void main(String[] args) {
		ApplicationContext ctx = new ClassPathXmlApplicationContext(
				"propertyPlaceHolder.xml");
		Student student = (Student) ctx.getBean("student");
		System.out.println(student.getAge());
		System.out.println(student.getBirth());
		System.out.println(student.getName());
	}
}

web.xml配置信息
<filter>
		<filter-name>springSecurityFilterChain</filter-name>
		<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter> 使用spring的代理filter






延迟初始化bean:lazy-init="true"/   <bean>标签属性 或者 <beans>标签上的default-lazy-init="true
需要说明的是,如果一个bean被设置为延迟初始化,而另一个非延迟初始化的singleton bean依赖于它,那么当ApplicationContext提前实例化singleton bean时,它必须也确保所有上述singleton 依赖bean也被预先初始化,当然也包括设置为延迟实例化的bean。因此,如果Ioc容器在启动的时候创建了那些设置为延迟实例化的bean的实例,你也不要觉得奇怪,因为那些延迟初始化的bean可能在配置的某个地方被注入到了一个非延迟初始化singleton bean里面。
自动装配(autowire)
表 3.2. Autowiring modes

模式

说明

no

 

byName

根据属性名自动装配。此选项将检查容器并根据名字查找与属性完全一致的bean,并将其与属性自动装配。例如,在bean定义中将autowire设置为by name,而该bean包含 master 属性(同时提供 setMaster(..) 方法),Spring就会查找名为 master 的bean定义,并用它来装配给master属性。

byType

如果容器中存在一个与指定属性类型相同的bean,那么将与该属性自动装配。如果存在多个该类型的bean,那么将会抛出异常,并指出不能使用 byType 方式进行自动装配。若没有找到相匹配的bean,则什么事都不发生,属性也不会被设置。如果你不希望这样,那么可以通过设置 dependency-check="objects" 让Spring抛出异常。

constructor

byType 的方式类似,不同之处在于它应用于构造器参数。如果在容器中没有找到与构造器参数类型一致的bean,那么将会抛出异常。

autodetect

通过bean类的自省机制(introspection)来决定是使用 constructor 还是 byType 方式进行自动装配。如果发现默认的构造器,那么将使用 byType 方式。

autowire-candidate = “false” 属性可以将设置不自动装配
default-autowire-candidates <bean>属性 可以使用bean名字进行自动装配
比如,将自动装配限制在名字以'Repository'结尾的bean,那么可以设置为"*Repository“

 idref元素






<bean id="theTargetBean" class="..."/>

<bean id="theClientBean" class="...">
    <property name="targetName">
        <idref bean="theTargetBean" />
    </property>
</bean>
上述bean定义片段完全地等同于(在运行时)以下的片段:
<bean id="theTargetBean" class="..." />

<bean id="client" class="...">
    <property name="targetName" value="theTargetBean" />
</bean>

 依赖检查
表 3.3. 依赖检查方式

模式

说明

none

没有依赖检查,如果bean的属性没有值的话可以不用设置。

simple

对于原始类型及集合(除协作者外的一切东西)执行依赖检查

object

仅对协作者执行依赖检查

all

对协作者,原始类型及集合执行依赖检查

方法注入()
lookup-method
replaced-method:不常使用
bean的作用域
表 3.4. Bean作用域

作用域

描述

singleton  

在每个Spring IoC容器中一个bean定义对应一个对象实例。

prototype  

一个bean定义对应多个对象实例。

request  

在一次HTTP请求中,一个bean定义对应一个实例;即每次HTTP请求将会有各自的bean实例, 它们依据某个bean定义创建而成。该作用域仅在基于web的Spring  ApplicationContext 情形下有效。

session  

在一个HTTP  Session 中,一个bean定义对应一个实例。该作用域仅在基于web的Spring  ApplicationContext 情形下有效。

global session  

在一个全局的HTTP  Session 中,一个bean定义对应一个实例。典型情况下,仅在使用portlet context的时候有效。该作用域仅在基于web的Spring  ApplicationContext 情形下有效。

根据经验
对有状态的bean应该使用prototype作用域,而对无状态的bean则应该使用singleton作用域。


初始化回调(如果想在初始化时做些事情可使用初始化回调)
方法一:
public class AnotherExampleBean implements InitializingBean {
    
    public void afterPropertiesSet() {
        // do some initialization work
    }
}
方法二:
<bean id="exampleInitBean" class="examples.ExampleBean" init-method="init"/>
public class ExampleBean {
    
    public void init() {
        // do some initialization work
    }
}

析构回调
析构回调的方式也有两种原理同初始化回调
implements DisposableBean
destroy-method="methodName
default-init-method="init"" : 可以配置全局初始化方法名称
0
0
分享到:
评论

相关推荐

    spring配置文件详细介绍

    下面是对Spring配置文件的详细介绍。 首先,Spring配置文件通常是以`.xml`为扩展名的文件,例如`beans.xml`。这些文件存储在项目的`src/main/resources`目录下,以便在运行时被自动加载。Spring容器...

    Spring自定义配置文件便签[Maven]工程可运行

    在Spring框架中,自定义配置文件和标签是提高代码可读性和灵活性的重要手段。这个名为"Spring自定义配置文件便签[Maven]工程可运行"的项目,显然是一个基于Maven构建的Spring 5.0应用程序,它包含了自定义配置文件和...

    Spring4 jar包和Spring配置文件

    Spring框架是Java开发中最常用的轻量级框架之一,它的核心在于IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented ...深入学习Spring4的jar包和配置文件,将使你更好地驾驭Java开发环境,提高软件工程能力。

    Spring源码学习七:web应用自动装配Spring配置文件1

    本文主要围绕"Spring源码学习七:web应用自动装配Spring配置文件1"这一主题,详细解析Web环境中Spring的初始化过程。 首先,我们注意到在传统的Java应用程序中,通常使用`ClassPathXmlApplicationContext`手动创建...

    模拟spring的xml配置文件注入

    在Spring框架中,XML配置文件是核心组成部分,它定义了bean的实例化、依赖注入以及其他的框架设置。本文将深入探讨如何模拟Spring的XML配置文件注入,并通过SAXBuilder解析XML文件来实现这一过程。 首先,理解XML...

    Eclipse spring基本配置步骤

    **步骤3:创建Spring配置文件** 1. 在项目的src目录下,新建一个名为`applicationContext.xml`的XML文件,这是Spring的主要配置文件。 **步骤4:配置Bean** 在`applicationContext.xml`中,定义Bean的基本结构。...

    Spring 集成 Kafka的配置文件及代码讲解

    在本文中,我们将深入探讨如何将Spring框架与Apache Kafka集成,以便实现...压缩包中的"Kafka与spring集成的代码"文件应该包含了这些示例的完整实现,供你参考和学习。记得根据实际的Kafka集群配置和业务需求调整代码。

    Spring学习笔记(18)----使用Spring配置文件实现事务管理

    这篇"Spring学习笔记(18)----使用Spring配置文件实现事务管理"着重讲解如何通过Spring的XML配置来管理应用中的事务。这里我们将深入探讨相关知识点。 首先,Spring提供了两种事务管理方式:编程式事务管理和声明式...

    Spring Boot Properties 全部配置文件,中文注释

    SpringBoot2.x properties全部配置文件总计1500+,每个配置文件写有中文解释。适用于系统学习springboot 深入学习springboot的同学。

    spring+springmvc+mybatis框架全部基础配置文件

    在提供的配置文件中,可能包含了`applicationContext.xml`,这是Spring容器的主要配置文件,用于定义Bean及其依赖关系。例如,你可以在这里看到DataSource的配置,用于连接数据库;还有Bean的定义,如Service和DAO,...

    Spring的基本配置

    一个基本的Spring配置文件可能包含以下元素: - `&lt;beans&gt;`:根元素,表示配置文件的开始。 - `&lt;bean&gt;`:用于定义一个Bean,包括其ID、类名、属性等。 - `&lt;property&gt;`:用于设置Bean的属性值,通过name或ref属性关联...

    MyBatis-Spring配置教程,非常适合初学者

    在Spring配置文件中,通过`&lt;mybatis:scan&gt;`标签扫描Mapper接口,并使用`&lt;bean&gt;`标签定义SqlSessionTemplate或SqlSessionDaoSupport来连接Mapper和SqlSessionFactory。 在Spring中,你可以利用@Autowired注解来注入...

    day38 15-Spring的配置文件引入的问题

    总的来说,理解Spring配置文件的结构和语法规则,以及如何正确处理配置文件的引入,是避免相关问题的关键。在遇到问题时,检查配置文件的语法、Bean定义、路径设置以及依赖关系是排查问题的常用步骤。同时,学习和...

    jbpm+spring配置

    在Spring配置文件中,你需要定义`JbpmConfiguration`和`JbpmRuntimeManagerFactoryBean`,它们负责创建jbpm的工作空间和获取运行时管理器。 4. **注册任务监听器和服务**:jbpm允许你注册监听器来处理流程事件,如...

    Spring学习笔记&源码

    3. **Bean的定义与配置**:讲解XML配置文件、注解配置以及Java配置三种方式创建Bean,包括属性注入、构造器注入等。 4. **AOP编程**:阐述AOP的基本概念,如切面、通知、连接点、切入点表达式等,以及如何实现方法...

    Spring各版本核心配置文件备份

    通过研究这些不同版本的核心配置文件,开发者可以深入理解Spring的发展历程,学习如何根据项目需求选择合适的配置方式,以及如何进行版本迁移。同时,对于新接触Spring的开发者来说,这些备份文件提供了学习不同配置...

    03、Spring Boot配置文件深入讲解.pdf

    Spring Boot 配置文件深入讲解 ...通过本节课的学习,我们掌握了 Spring Boot 配置文件的基本概念和使用方法,包括配置文件的类型、值的写法、对象和 Map 的写法、数组的写法、自定义配置属性和配置自动提示等。

    尚学堂Spring学习笔记

    本文档记录了尚学堂Spring学习笔记的重要知识点,涵盖了Spring配置文件的设置、普通属性的注入、自定义属性编辑器、公共属性的注入、Spring注解等内容。 一、Spring配置文件的设置 在MyEclipse中编写Spring配置...

    spring多配置文件(struts+hibernate+spring)

    这是一个struts+hibernate+spring得完成实例,大部分ssh实例都是在一个配置文件里进行hibernate+spring+struts的配置。我这个很清楚的分成了四个配置文件。非常适合大型项目的开发学习!

Global site tag (gtag.js) - Google Analytics