Spring -bean的 配置

容器的定义,

            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>

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值