1.bean的继承关系
<!-- 抽象bean 这样的bean的abstarct为true ,无法由ioc实例化,只能继承
若一个bean无class属性,肯定是抽象bean
depend-on则初始化时必须关联一个bean,否则报错
-->
<!-- bean的配置的继承,parent指向被继承的bean,userf继承user -->
<bean id = "user" p:name = "haha" abstract="true"> </bean>
<bean id = "userf" class="beanrelation.User" parent="user" depends-on="person"></bean>
<!-- 构造器注入 -->
<bean id = "person" class = "test.Person">
<constructor-arg value="tom" name="name"></constructor-arg>
<constructor-arg value="12"></constructor-arg>
</bean>
2.bean的作用域
<!-- bean的作用域:Spring 只为每个在 IOC 容器里声明的 Bean 创建唯一一个实例,
整个 IOC 容器范围内都能共享该实例:所有后续的 getBean() 调用和 Bean 引用
都将返回这个唯一的 Bean 实例.
该作用域被称为 singleton, 它是所有 Bean 的默认作用域
prototype每次调用getBean都会返回一个新的实例
补充:singleton会在创建ioc容器时创建单例bean
prototype在ioc容器初始化时不创建bean,每次请求返回一个新的bean
即:new ClassPathXmlApplicationContext()是否会创建bean
-->
<bean id = "userpro" class= "beanrelation.User" scope="prototype"></bean>
bean的作用域
3.bean的外部属性文件(db.properties)
spring的xml配置
<!-- 引用外部文件 -->
<context:property-placeholder location="classpath:db.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>
外部db.properties
user=root
password=12345
driverClass=com.mysql.jdbc.Driver
jdbcUrl=jdbc:///test
代码使用
DataSource dataSource = (DataSource) c.getBean("dataSource");
dataSource.getConnection();
网友评论