马士兵Spring学习笔记
来源:互联网 发布:linux 禁止用户登录 编辑:程序博客网 时间:2024/06/09 21:25
1. Spring的注入的三种方式:
详见博文,以作参考:
http://blessht.iteye.com/blog/1162131
http://jnotnull.iteye.com/blog/153406
http://www.blogjava.net/jiadong/archive/2007/08/29/140962.html
a) setter方法注入 (重点)
【1】 Java Bean中要有相应成员变量的gettter,setter方法
【2】 Spring配置文件中如下配置:
<bean id=”xxx”class=”包名.类名”>
<property name=”成员变量名1” ref=”另外一个bean的id”>
<property name=” 成员变量名2” value=”Xxx”>
</bean>
(准确地说,name=”成员变量名”这个说法不准确,应该指一个setter方法应该是这个name中的文字首字母变为大写并加前缀“set”,即setXxx()正好是JavaBean中的一个setter方法;
<propertyname=” 成员变量名2” value=”Xxx”>一般使用vaule=”Xxx”,功能为给JavaBean某个成员直接赋值,这种成员类型一般为String或简单值类型。也须添加getter,setter方法。
)
b) 构造方法注入(可以忘记)
在JavaBean中使用Eclipse中的快捷键Alt+R+A使用字段生成构造器
(Spring中一般使用默认构造函数即无参构造函数通反射机制实例化Java Bean,如果JavaBean添加了重载构造函数,请显式添加无参构造器,以防别处实例化时出问题),如:
1)
2)在Spring的配置文件中使用如下格式的有关构造器的配置:
以上是单行XML标签格式,也可以使用嵌套标签格式,两者效果一致
在<bean>中使用子标签<constructor-arg>,index从0开始,表示重载构造器的参数顺序,ref引用其它bean id来实例化对应的成员。
c) 接口注入 (可以忘记)
略…
2. Spring给简单属性赋值
a)比较简单,一般是采用如下标签:
<bean id=”Xxx” class=”包名.类名”>
<property name=”Xxx” value=”Yyy” /> value里直接填值,一般给String或简单值类型赋值
</ bean>
或 使用子标签形式
<bean id=”Xxx” class=”包名.类名”>
<property name=”Xxx”>
<value> Yyy </value>
</ property>
</ bean>
b)使用Spring为开发者预写好的bean作为<value />的值
3. Spring中bean的生命范围 scope.
Spring中bean的生命周期默认为单例模式。
在<bean ….>中加入属性 scope=”singleton” (单例模式) scope=”prototype”(原型,即每次都new一个实例)
4. Spring中的Collection集合类型成员的注入
List,Set,Map,Properties类型变量对应的注入配置方法如下示例:
5. Spring自动装置AutoWire
意思为自动根据Spring配置文件的上下文寻找合适的其它bean并注入当前bean中的属性中,这样就可以省略编写<property>标签及其内容
(实际上该功能用得很少,以免出错)
在<bean …autowire=””>使用,autowire有5个选项,
autodetect:和构造器相关的
byName:通过检索与当前bean成员同名的<beanname=”…”>的name值相关的bean, name默认和id相同
byType:通过当前bean中成员的类型检索上下文相同类型的bean
constructor,
default:继承来自父标签<beans>的default-autowire属性,可在<beans ..>中增default-autowire属性,该属性选项和autowire一样
no:不进行自动装配,开发者自己手动装配。
6. Spring中的生命周期:
a)<bean ….lazy-init=”true”>中设置lazy-init属性指,当用到当前bean时才进行实例化,而不是在容器加载Spring的时候就进行实例化。
在父标签<beansdefault-lazy-init=”true”></ beans>中设置default-lazy-init属性,指为全局设置lazy-init属性,子标签<bean>如果不显式指定lazy-init属性,则默认继承父标签的这一属性,从而不必一一指定该属性。
b)在<bean…init-method=”init” destroy-method=”destory”>中配置此两属性,指容器在初始化bean时执行init()方法,在容器销毁bean执行destory()方法,为此,要在对应的java bean文件中添加int()和destory()方法,书写方法体。
<bean scope=”singleton/prototype”>中为singleton单例时,多次调用singleton,也只执行一次init()和destory();为prototype时,(马士兵讲解)显示只调用init()方法,因此建议init-method=”init” destroy-method=”destory”不要和scope=”prototype”组合使用
7. Spring中的IoC Annotation注解(以版本spring-framework-3.0.5.RELEASE为例)
a) 在使用Annotation注解之前,请在Spring配置文件中头文档下,<beans></beans>中增加xml命名空间说明,并加上标签<context:annotation-config />
xmlns:context="http://www.springframework.org/schema/context"
完整<beans>结构如下:
<?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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:annotation-config/>
</beans>
b) 自动装配 @Autowired
写在setter方法之上。默认使用 byType注入。可放在setter方法,其它方法,构造器,fields成员变量等之上。如要使用byName注入,请使用@Qualifier,不建议写在private fields上,因为破坏封装性。
@Qualifier
中文意思为“合格者”,使用@Qualifier(“beannameXxx”)表示指定符合当前注入的name为Xxx的bean。
如果写在settter上,@Qualifier需要要写在参数上。
@Required
写在setter方法之上,表示在编译时必须装配,否则不予通过编译,从而避免空指针异常等错误或异常。
@Resource
可写在fields (不推荐)和setter方法之上。
默认首先使用byName进行装配。若指定name参数,则按name的值Xxx进行查找name为Xxx的bean;若没有指定,如果写在fields之上,则按照fields (即成员变量)的名字匹配相应的name为fields的bean,如果写在setter方法之上,则使用去除set前缀之后的首字母改为小写的String作为查找依据。
若使用byName查找不到指定的bean,则Spring再使用byType进行查找。
@Component
写在类名之上,表示作为一个bean,可以被其它bean用来依赖注入,从而省去仍然要在Spring配置文件里手动配置bean的要求。
默认采用ByName形式表示name.若不手动指定name,,则name为当前类名的首字母小写形式,也可以手动指定name。
要使用该@Component,请先作如下配置:
增加<beans …>相关的xml命名空间xmlns:并增加如下语句:
<context:component-scan base-package="org.example"/>
其中base-package为你自己定义的包名,指到你指定的包名下扫描所有class.
<?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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:component-scan base-package="org.example"/>
</beans>
@Scope
写在类名之上,指定当前Class对应的Bean的生命范围,@Scope(“singleton”) @Scope(“prototype”)
@PostConstruct
放在某一普通方法之上,相当于<beaninit-method=”Xxx” ></bean>,初始化bean后自动调用的方法
@PreDestory
放在某一普通方法之上,相当于<beandestroy-method=”Xxx”></bean>,从内存中销毁当前类对象前自动调用的方法。
- 马士兵Spring学习笔记
- 马士兵Spring学习笔记
- spring 马士兵 学习笔记
- Spring学习流程(马士兵笔记)
- Spring学习流程(马士兵笔记)
- spring笔记 马士兵
- spring 马士兵笔记
- Spring学习笔记(马士兵spring视频笔记)
- 马士兵spring视频笔记
- 马士兵 spring 视频笔记
- spring学习笔记(基于马士兵视频教程)
- 马士兵hibernate学习笔记
- 马士兵 struts 学习笔记
- hibernate 学习笔记 马士兵
- hibernate 马士兵学习笔记
- 马士兵Hibernate学习笔记
- 马士兵Struts2学习笔记
- oracle学习笔记(马士兵)
- Linux环境变量
- Linux下DNS域名解析的配置文件 resolv.conf
- java线程学习3——线程的停止
- 修改浏览器图标为自己想要的LOGO
- Binder驱动
- 马士兵Spring学习笔记
- <s:action>的用法
- power deginer 创建数据库表
- 韩顺平_php从入门到精通_视频教程_第11讲_初识css_类选择器_id选择器_html选择器_学习笔记_源代码图解_PPT文档整理
- Centos配置
- Android大话设计模式 第二章----单一职责原则 乔峰VS慕容复
- ABI EABI
- 设计模式之四-观察者模式
- ActiveMQ学习(二)——MQ的工作原理