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());
// 第二種形式账千,已經(jīng)廢棄是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()時赊淑,相當于執(zhí)行newXxxBean()
request :每次HTTP請求都會創(chuàng)建一個新的Bean初嘹,該作用域僅適用于WebApplicationContext環(huán)境
session :同一個HTTP Session共享一個Bean蜒蕾,不同Session使用不同的Bean,僅適用于WebApplicationContext環(huán)境
global-session :一般用于Portlet應用環(huán)境焕阿,該運用域僅適用于WebApplicationContext環(huán)境
對有狀態(tài)的bean應該使用prototype作用域咪啡,而對無狀態(tài)的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連個屬性
// 根據(jù)繼承定義模板
<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>