xml配置bean
package com.sptest;
import com.sptest.bean.User;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
web.xml
public class SpringTest {
public static void main(String[] args){
// 获取context上下文对象并载入xml配置
System.out.println(ApplicationContext.class);
ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
System.out.println(1);
// 强制类型转换
User user = (User) context.getBean("User");
System.out.println(user.getPassword());
// 第二种形式,已经废弃是applicationContext父接口
XmlBeanFactory factory = new XmlBeanFactory(new ClassPathResource("spring.xml"));
User user1=(User) factory.getBean("User");
System.out.println(user1);
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="User" class="com.sptest.bean.User">
<property name="username" value="zs"/>
<property name="password" value="123456"/>
</bean>
</beans>
ClassPathXmlApplicationContext classpath相对路径加载
FileSystemXmlApplicationContext 全路径加载
WebXmlApplicationContext web容器范围内加载、
bean的定义
作用域 scope
singleton :在spring IoC容器仅存在一个Bean实例,Bean以单例方式存在,默认值
prototype :每次从容器中调用Bean时,都返回一个新的实例,即每次调用getBean()时,相当于执行newXxxBean()
request :每次HTTP请求都会创建一个新的Bean,该作用域仅适用于WebApplicationContext环境
session :同一个HTTP Session共享一个Bean,不同Session使用不同的Bean,仅适用于WebApplicationContext环境
global-session :一般用于Portlet应用环境,该运用域仅适用于WebApplicationContext环境
对有状态的bean应该使用prototype作用域,而对无状态的bean则应该使用singleton作用域。
生命周期
Bean的定义——Bean的初始化——Bean的使用——Bean的销毁
<bean id="helloWorld"
class="com.tutorialspoint.HelloWorld"
init-method="init" destroy-method="destroy">
<property name="message" value="Hello World!"/>
</bean>
bean的继承,其实就是配置的继承
<bean id="ChildStudent" class="com.sptest.bean.ChildStudent" parent="ParentStudent">
<property name="sex" value="男"/>
</bean>
<bean id="ParentStudent" class="com.sptest.bean.ParentStudent">
<property name="username" value="zs"/>
<property name="password" value="123456"/>
</bean>
// 前提是ChildStudent中也有username和password连个属性
// 根据继承定义模板
<bean id="beanTeamplate" abstract="true">
<property name="username" value="zs"/>
<property name="password" value="123456"/>
<property name="sex" value="男"/>
</bean>
<bean id="ChildStudent" class="com.sptest.bean.ChildStudent" parent="beanTeamplate"</bean>
网友评论