容器的定义,
ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
<bean id="helloworld" class="a.b.c.Hellowoed">
<property name="name" value="Spring"></property>
<property name="age" value="17"></property>
<property name="sex" value="woman"></property>
</bean>
<bean id="Car" class="a.b.c.Car">
<constructor-arg value="baoma" index="0"></constructor-arg>
<constructor-arg value="aijuntao" type="java.lang.String" index="1"></constructor-arg>
<constructor-arg value="188888" type="int"></constructor-arg>
</bean>
<bean id="p1" class="a.b.c.Person" p:name="xxx" p:age="1111" p:car-ref="Car">
</bean>
<bean id="p2" class="a.b.c.Person">
<property name="name" value="lll"></property>
<property name="age" value="44"></property>
<property name ="car">
<bean id="car_" class="a.b.c.Car">
<property name="band" value="baoma"></property>
<property name="user" value="lll"></property>
<property name="price" value="14000000"></property>
</bean>
</property>
<property name="cars">
<list>
<ref bean="Car"/>
<bean id="car_" class="a.b.c.Car">
<property name="band" value="baoma"></property>
<property name="user" value="lll"></property>
<property name="price" value="14000000"></property>
</bean>
</list>
</property>
</bean>
读取属性文件进行配置:
<context:property-placeholder location="classpath:conn.properties"/>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="user" value="${user}"></property>
<property name="password" value="${password}" ></property>
<property name="driverClass" value="${driverclass}"></property>
<property name="jdbcUrl" value="${jdbcurl}"></property>
</bean>
conn.properties属性文件:
user=root
password=password
driverclass=com.mysql.jdbc.Driver
jdbcurl=jdbc:mysql:///student
获取<bean> 的属性值:
#{bean的id.属性名}
配置工厂:
静态方法获取静态对象:
package a.b.e;
import java.util.HashMap;
import java.util.Map;
public class instantfactory {
private static Map<String,Car> cars=new HashMap<String,Car>();
static {
cars.put("audi",new Car("audi"));
cars.put("xiali",new Car("xiali"));
}
public static Car getCar(String brand) {
return cars.get(brand);
}
<bean id="car1" class="a.b.e.instantfactory" factory-method="getCar">
<constructor-arg value="audi"></constructor-arg>
</bean>
对象方法获取对象:
package a.b.e;
import java.util.HashMap;
import java.util.Map;
public class instantFactory2 {
private Map<String,Car> cars=new HashMap<String,Car>();
public instantFactory2() {
cars.put("audo", new Car("audo"));
cars.put("xiali", new Car("xiali"));
}
public Car getCar(String brand) {
return cars.get(brand);
}
}
<bean id="Factory" class="a.b.e.instantFactory2">
</bean>
<bean id="car2" factory-bean="Factory" factory-method="getCar">
<constructor-arg value="xiali"></constructor-arg>
</bean>
配置bean 的初始函数,与销毁函数:
<bean id="car" class="a.e.Car" init-method="inti" destroy-method="destory"></bean>
<bean id="car1" class="a.e.Car" init-method="inti" destroy-method="destory"></bean>
package a.e;
public class Car {
private String brand;
public void inti() {
System.out.println("init....");
}
public void destory() {
System.out.println("destory....");
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
@Override
public String toString() {
return "Car [brand=" + brand + "]";
}
}
配置初始化前处理函数与初始化处理函数:在这个配置文件中的所有bean 都要执行 这两个函数
<bean class="a.e.MyBeanPostProcessor"></bean>
package a.e;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
public class MyBeanPostProcessor implements BeanPostProcessor {
@Override
public Object postProcessAfterInitialization(Object arg0, String arg1) throws BeansException {
System.out.println("before ____ Bean");
return arg0;
}
@Override
public Object postProcessBeforeInitialization(Object arg0, String arg1) throws BeansException {
// TODO Auto-generated method stub
System.out.println("after ____ Bean");
return arg0;
}
建立数据库连接池,并从中获取连接:
package a.c;
import java.sql.SQLException;
import javax.sql.DataSource;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class propertt_ {
public static void main(String arg[]) throws SQLException {
ApplicationContext ctx=new ClassPathXmlApplicationContext("conn.xml");
DataSource dataSource=(DataSource) ctx.getBean("dataSource");
System.out.println(dataSource.getConnection());
}
}
<context:property-placeholder location="classpath:conn.properties"/>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="user" value="${user}"></property>
<property name="password" value="${password}" ></property>
<property name="driverClass" value="${driverclass}"></property>
<property name="jdbcUrl" value="${jdbcurl}"></property>
</bean>