spring的基本配置和bean高级特性的介绍

一、spring的手动配置

 老规矩了分为两步,导jar包和配置文件

 1.导入的jar包

2.配置xml文件(applicationContext.xml)

   配置文件中注入依赖方式又分为两类

1)手动配置

   ①在xml文件中通过<bean>节点下配置

   ②在java代码中使用@Autowire或@Resource注解方式进行装配

        (1)需要引入表头信息

             xmlns:context="http://www.springframework.org/schema/context"

             xsi:schemaLocation下加入:

                http://www.springframework.org/schema/context
                http://www.springframework.org/schema/context/spring-context-2.5.xsd

        (2)xml中要先编写如下代码<context:annotation-config></context:annotation-config>

 

<?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:p="http://www.springframework.org/schema/p"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
		http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
		http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-2.5.xsd">
		
	<context:annotation-config></context:annotation-config>
	
	<bean id="t" class="com.bean.Teacher" init-method="st" p:tname="荆轲">
	</bean>
	<bean id="cl" class="com.bean.ClassInfo"></bean>
	<bean id="sd" abstract="true">
	<property name="cltitle" value="修道班"></property>
	</bean>
	<bean id="cl2" class="com.bean.ClassInfo" parent="sd"></bean>
</beans>

        (3)在相应的类字段属性中进行注解

package com.bean;

import javax.annotation.Resource;

import org.springframework.stereotype.Component;

@Component
public class ClassInfo {

	private String clid;
	private String cltitle;
	//使用@Resource进行注解
	@Resource(name="t")
	private Teacher teacher;
	public String getClid() {
		return clid;
	}
	public void setClid(String clid) {
		this.clid = clid;
	}
	public String getCltitle() {
		return cltitle;
	}
	public void setCltitle(String cltitle) {
		this.cltitle = cltitle;
	}
	public Teacher getTeacher() {
		return teacher;
	}
	public void setTeacher(Teacher teacher) {
		this.teacher = teacher;
	}
	public ClassInfo(String clid, String cltitle, Teacher teacher) {
		super();
		this.clid = clid;
		this.cltitle = cltitle;
		this.teacher = teacher;
	}
	public ClassInfo() {
		// TODO Auto-generated constructor stub
	}
}

 

2)自动装配

<bean id="..." class="..." auto>

autowire属性取值如下:
lbyType:按类型装配,可以根据属性的类型,在容器中寻找跟该类型匹配的bean。如果发现多个,那么将会抛出异常。如果没有找到,即属性值为null。
lbyName:按名称装配,可以根据属性的名称,在容器中寻找跟该属性名相同的bean,如果没有找到,即属性值为null。
lconstructor与byType的方式类似,不同之处在于它应用于构造器参数。如果在容器中没有找到与构造器参数类型一致的bean,那么将会抛出异常。
lautodetect:通过bean类的自省机制(introspection)来决定是使用constructor还是byType方式进行自动装配。
如果发现默认的构造器,那么将使用byType方式。
l不推荐使用。

 

二、bean的高级特性

1.bean的作用域

l使用scope属性定义bean的作用域。
l默认的scope为singleton。
lSpring支持的bean作用域
-singleton
容器只为bean创建一个实例。
-prototype
每次请求bean时。都会创建一个新的实例。
-request
用于web应用,bean在一次请求中有效。
-session
用于web应用,bean在整个会话中有效

2.bean的生命周期

lscope属性为prototype的bean
-客户端每次请求(调用getBean(“”)方法)都产生一个新的实例。
-实例化后,完全交给客户端代码管理,容器不再追踪其生命周期。并不知道bean何时销毁。
lscope属性为singleton的bean
-scope的默认属性值。
-客户端每次请求都返回一个共享实例。
-客户端不能控制bean的生命周期。
-由容器控制bean的产生,销毁。
3.bean的继承
lBean继承的作用
-减少重复定义,简化配置文件。
l在父类中定义共同部分,在子类中定义个性部分。子类的定义可以覆盖父类的定义。
l父类通常不需要实例化。可以abstract属性将父类设成抽象类。容器不会初始化抽象bean。
l子类使用parent属性引用父类定义。
<!-- 定义抽象父类-->
	<bean id="daoTemplate" abstract="true">
		<property name="sessionFactory" ref="sessionFactory"/>
	</bean>
	<!-- 继承父类-->
	<bean id="stateDao" class="org. dao.impl.StateDaoHibernate"
		parent="daoTemplate"/>

ApplicationContext app=new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml","car.xml"});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值