SpringDay03
<!-- 引用外部属性文件 -->
<!-- 连接池作为单实例是最好的,一个项目就是一个连接池,
连接池里面管理很多连接,连接是直接从连接池中获取 -->
<!--可以让Spring帮我们创建连接池对象,(管理连接池) -->
<context:property-placeholder location="classpath:dbconfig.properties"/>
<!--${key}动态取出配置文件中某个key对应的值 -->
<bean id="DataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<!-- username是spring中的一个关键字 ,为防止冲突 可在变量名前加前缀-->
<property name="user" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
<property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
<property name="driverClass" value="${jdbc.driverClass}"></property>
</bean>
测试类
//从容器中拿到连接池
//DataSource bean = (DataSource) ioc.getBean("DataSource");
//按照类型获取组件,可以获取这个类型下的所有实现类子类等等
DataSource bean= ioc.getBean(DataSource.class);
System.out.println(bean.getConnection());
<bean id="car" class="com.lmh.bean.Car">
<property name="carName" value="宝马"></property>
<property name="color" value="green"></property>
</bean>
<!-- 为person里面的自定义类型的属性赋值
property: 手动为属性赋值
自动赋值:(自动装配) 仅限于对自定义类型的属性有效
autowire="default"/no:不进行自动装配
byName: 按照名字
private Car car;以属性名作为id去容器中找到这个组件,并进行赋值;如果找不到就装配null
car = ioc.getBean("car");
byType:
1)、以属性的类型作为查找的依据去容器中找到组件,如果容器中有同类型的bean有两个则报错
2)、没有找到响应的组件 装备null
car = ioc.getBean("Car.class");
constructor:按照构造器进行赋值;
1)、先按照有参构造器参数的类型进行装配,没有就直接为组件装配null
2)、如果按照类型找到多个,参数的名作为id继续匹配,找到就装配,否则装配null
3)、不会报错
-->
<bean id="person" class="com.lmh.bean.Person" autowire="byType">
</bean>
<!-- List<Book> books:容器可以把容器中的所有book封装list赋值给这个属性 -->
<bean id="book01" class="com.lmh.bean.Book">
<property name="name" value="book01"></property>
</bean>
<bean id="book02" class="com.lmh.bean.Book">
<property name="name" value="book02"></property>
</bean>
<bean id="book03" class="com.lmh.bean.Book">
<property name="name" value="book03"></property>
</bean>
<bean id="car" class="com.lmh.bean.Car">
<property name="carName" value="宝马"></property>
<property name="color" value="green"></property>
</bean>
<!-- SpEL测试(Spring Expression Language) Spring 表达式语言
在SpEL中使用字面量、
引用其他bean、
引用其他bean的某个属性值
调用非静态方法
调用静态方法
使用运算符; 所有的运算符都支持
-->
<bean id="person01" class="com.lmh.bean.Person">
<!-- 字面量: ${}; #{} -->
<property name="age" value="#{22*3}"></property>
<!-- 引用其他bean的某个属性值 -->
<property name="name" value="#{car.color}"></property>
<!-- 引用其他bean -->
<!-- <property name="car" value="#{car}"></property> -->
<!-- 调用静态方法: UUID.randomUUID().toString()
#{T(全类名).静态方法名(1,2)}
-->
<property name="email" value="#{T(java.util.UUID).randomUUID().toString()}"></property>
<!-- 调用非静态方法: 对象.方法名 -->
<property name="gender" value="#{car.getColor()}"></property>

浙公网安备 33010602011771号