J2EE之Spring中Bean的作用域、外部属性文件、SpEL
作用域:
代码:
Car.java:
package com.mooc.spring.beans.autowire;
public class Car {
private String brand;
private double price;
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
@Override
public String toString() {
return "Car [brand=" + brand + ", price=" + price + ", getBrand()=" + getBrand() + ", getPrice()=" + getPrice()
+ ", getClass()=" + getClass() + ", hashCode()=" + hashCode() + ", toString()=" + super.toString()
+ "]";
}
public Car(){
System.out.println("car' Constructro.....");
}
}
main.java:
package com.mooc.spring.beans.scope;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.mooc.spring.beans.autowire.Car;
public class main {
public static void main(String[] args) {
ApplicationContext context=new ClassPathXmlApplicationContext("beans-scope.xml");
Car car=(Car) context.getBean("car");
Car car2=(Car) context.getBean("car");
System.out.println(car == car2);
}
}
beans-scope.xml:
<?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.xsd">
<!--
使用bean的scope属性来配置bean的作用域
singleton:默认值,容器初始化时创建bean实例,在整个容器生命周期内只创建这么一个bean。单例的
prototype:原型的,容器初始化时不创建bean的实例,而在每次请求时都创建一个新的bean实例并返回
-->
<bean id="car" class="com.mooc.spring.beans.autowire.Car" scope="prototype">
<property name="brand" value="Audi"></property>
<property name="price" value="30000"></property>
</bean>
</beans>
外部属性文件:
代码:
beans-properties.xml:
<?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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
<context:property-placeholder location="classpath:db.properties"/>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="user" value="${suer}"></property>
<property name="password" value="${password}"></property>
<property name="driverClass" value="${driverclass}"></property>
<property name="jdbcUrl" value="${jdbcurl}"></property>
</bean>
</beans>
main.java:
package com.mooc.spring.beans.properties;
import java.sql.SQLException;
import javax.sql.DataSource;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class main {
public static void main(String[] args) throws SQLException{
ApplicationContext context=new ClassPathXmlApplicationContext("beans-properties.xml");
DataSource dataSource=(DataSource) context.getBean("dataSource");
System.out.println(dataSource.getConnection());
}
}