Spring入门到精通(二)
2017-07-15 08:55
113 查看
Spring的核心容器
1.什么是bean
bean是描述java的软件组件模型,有点类似于Microsoft的COM组件的概念,在java模型中,通过Bean可以无限扩充java程序的功能,通过bean的组合可以快速的生成新的对应的程序,对于开发人员来说,最重要的是Bean可以实现代码的重复利用2、bean的基础知识
在Spring中,有两个最基本的,最重要的包,即org.springframework.beans和org.springframework.context最重要的两个类 BeanFactory 和ApplicationContext
BeanFactory提供了一种先进的配置机制来管理任何种类的 Bean
ApplicationContext 建立在BeanFactory之上,并增加了其他的功能
config.xml代码示例
<bean id="Hello" class="com.dtl.Hello">
——-
<value>Hello</value>
</bean>
在Spring中可以用id或者name属性来指定Bean的id,并且在这两个或其中一个属性中至少有一个id,id和name的区别是:
ID属性允许指定一个Bean的id,并且它在XML DTD中作为一个正真的XML元素ID属性被标记。所以XML解析齐就能够在其他元素指向他的时候做一些额外的校验,但是在XML规范严格限定了在XML ID中合法的字符,如果在开发中有必要使用一些非法的字符,即不符合ID规定的字符,或者要给bean增加其他别名,则可以通过name属性指定一个或多个id,当多个id是要用逗号(,)或者分号(;)分隔。
注意
一个bean一般只有一个id;如果一个bean有超过一个id,那么另外的那些id可以认为是这个bean的别名bean的calss
calss属性指明了Bean的来源,即bean的实际路径注意
class 属性路径的完整性,例如,要写calss=”com.dtl.action.HelloWorld”,而不能写class=“HelloWorld”Sigleton的使用
Bean可以被定义为两种部署模式中的一种:singleton 或者 non-sigleton(prototype)。Spring默认为singleton模式**如果一个bean被定义为singleton模式。那么就只有一个共享的实例存在,所有对这个Bean的请求都会返回这个唯一的实例
**如果一个Bean被定义为non-singleton(prototype)模式。那么对这个Bean的每次请求都会创建一个新的Bean实例,读者可以把它当成类似new的操作
注意
Spring配置文档中所有的bean都默认为singleton,客户段每次向BeanFactory请求时,只返回一个实例,如果要客户段每次向BeanFactory请求时都创建新的实例,则要把 singleton=”true”改为”false”Bean的属性
在Spring中,Bean的属性值有两种注入方式,基于setter的依赖注入和基于构造函数的依赖注入,基于setter的依赖注入,是在调用无参的构造函数或者无参的静态工厂方法实例化配置文档中定义的Bean之后,通过调用Bean上的Setter方法实现的,基于构造函数的依赖注入,是通过调用带有许多参数的构造方法实现的,每个参数表示一个对象或者属性Bean的生命周期
Bean的定义, Bean的初始化,Bean的使用,Bean的销毁 四个阶段Bean的初始化方式
1、在配置文档中通过指定init-method属性来完成2、实现org.springframework.beans.factory.InitializingBean接口(如果一个bean实现了org.springframework.beans.factory.InitializingBean接口,则它的所有必需的属性被BeanFactory设置后,会自动执行它的afterPropertiesSet()方法)
Bean的使用方式
第一种、使用BeanWrapper。示例代码如下:HelloWorld helloWorld = new HelloWorld();
BeanWrapper bw = new BeanWrapperImpl(helloWorld);
bw.setPropertyValue("msg","HelloWorld");
System.out.println(bw.getPropertyValue("msg"));
第二种、使用BeanFactory。实例代码如下:
InputStream is = new FileInputStream("config.xml");
XmlBeanFactory factory = new XmlBeanFactory(is);
HelloWorld helloWrld =(HelloWorld)factory.getBean("HelloWorld")
相关文章推荐
- Spring boot入门实例 简易登录(精通Spring+4.x++企业应用开发实战 学习笔记二)
- 【Spring源码从入门到精通】(七)获取Document
- Spring Boot从入门到精通课程
- 【Spring源码从入门到精通】(八)解析及注册BeanDefinitions
- 一个资深程序员教你jvm,redis,spring boot,dubbo,tomcat入门到精通
- SpringBoot从入门到精通
- Java入门到精通——调错篇之EasyUI+SpringMVC Form表单提交到Contorller中文字出现乱码
- MyBatis从入门到精通和MAVEN搭建SPRING+MyBatis项目
- Java入门到精通——调错篇之Spring2.5使用AOP时报错only available on JDK 1.5 and higher
- Redis入门到精通-Redis与Spring整合
- 【Spring从入门到精通】(三)Spring的结构组成
- Java入门到精通——调错篇之EasyUI+SpringMVC Form表单提交到Contorller中文字出现乱码
- spring boot从入门到精通
- Java入门到精通——调错篇之Spring2.5使用AOP时报错only available on JDK 1.5 and higher
- 【Spring从入门到精通】(四)容器的基础XmlBeanFactory
- Spring从入门到精通 3.1 反向控制/依赖注入
- Java入门到精通——调错篇之Spring2.5利用aspect实现AOP时报错: error at ::0 can't find referenced pointcut XXX
- 【Spring从入门到精通】 (五)加载Bean
- Myeclipse——Spring 从入门到精通二 依赖注入
- SPRING-BOOT 教程,从入门到精通