名称:bean
类型:标签
所属:beans标签
功能:定义Spring核心容器管理的对象
格式:<beans>
<bean>
</bean>
</beans>
属性列表:id:bean的id,使用容器可以获取对应的bean,在一个容器中id值唯一
class:bean的类型,即配置的bean的全路径类名
范例:
ApplicationContext app = new ClassPathXmlApplicationContext("application.xml"); //app。getBean括号中的book就是下面bean标签的id bean标签中的class后面写的是包下的本类 BookDao bookDao= (BookDao) app.getBean("book") bookDao.sayhello();
<bean id="book" class="com.haina.Book.BookDao.BookDao">
</bean>
public class BookDao { public void sayhello(){ System.out.println("hello"); } }
Bean作用范围配置:
名称:scope
类型:属性
功能:定义bean的作用范围,可选范围如下:
singleton:单例
prototype:非单例
示例:
<bean id="book" class="com.haina.Book.BookDao.BookDao" scope="prototype">
bean默认是使用构造方法创建对象,如果本类没有构造方法将创建不了对象
使用静态方法创建对象,需要在bean标签的配置中写入factory-method=“getOrderDao”
使用动态方法创建对象,需要在bean标签的配置中写入factory-method=“实例方法名” factory-bean=“bean标签的id”
Bean的生命周期
生命周期:从创建到消亡的过程
bean的生命周期的控制:在bean创建到销毁的过程中做一些事情
A.初始化容器
1 创建对象(内存分配)
2 执行构造方法
3 执行属性注入(set方法)
4 执行bean初始化方法(init-method=“名称”)
B.使用Bean
1 执行业务操作
C。关闭容器
1 执行bean销毁方法(destroy-method=“名称”)
Bean注入数据的方式
1 使用set方法
2 使用构造方法
依赖注入方法
1 set注入
简单类型 :配置中使用property标签value属性注入简单类型数据
引用类型 :配置中使用property标签ref属性注入引用数据类型(里面写入为别的bean标签中的id)
2 构造器注入
简单类型 :配置中使用constructor-arg name(里面写入构造方法的形参)value(里面写入对应类型的数据)
引用类型 :配置中使用constructor-arg name(里面写入构造方法的形参)
也可使用 constructor-arg type(里面写入构造方法的类型)
也可使用 constructor-arg index(里面写入构造方法的形参顺序)
ref(里面写入别的bean标签中的id)
集合注入
在bean标签与bean结束标签中写入数据
property name(写入的是集合或者数组的名称)
在property name标签中创建一个以集合或者数组为名称标签
在标签内部写入数据
基本数据类型使用value写入
引用数据类型使用ref写入
数据源对象管理
导入druid做标
<dependency>
<groupId>com.alibaba</groupId>
<artifactIdSdruid</artifactId>
<version>1.1.16</version>
</dependency>
配置数据源对象作为spring管理的bean
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDatasource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/spring_db"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</bean>
开启context文件
<?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.xsd">
</beans>
使用context命名空间 加载指定properties
<context:property-placeholder location="jdbc.properties"/>(引号里写入文件的名字)
使用${}读取加载的属性值
<property name="username" value="${jdbc.username}"/>
,不加载系统属性
<context:property-placeholder location=“jdbc.properties" system-properties-mode="NEVER"/>
加载多个properties文件
<context:property-placeholder location="jdbc.properties,msg.properties"/>
。加载所有properties文件
<context:property-placeholder location="*.properties"/>
加载properties文件标准格式
<context:property-placeholder location="classpath:*.properties"/>
从类路径或jar包中搜索并加载properties文件
<context:property-placeholder location="classpath*:*.properties"/>
加载properties文件
方式一:类路径加载配置文件
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xm1");
方式二:文件路径加载配置文件
ApplicationContext ctx = new FileSystemXmlApplicationContext("D:\\applicationContext.xml");
加载多个配置文件
ApplicationContext ctx = new ClassPathXmlApplicationContext("bean1.xml","bean2.xml");
获取bean
方式一:使用bean名称获取
BookDao bookDao =(BookDao) ctx.getBean("bookDao");
方式二:使用bean名称获取并指定类型
BookDao bookDao = ctx.getBean("bookDao", BookDao.class);
方式三:使用bean类型获取
BookDao bookDao = ctx. getBean(BookDao.class);
容器相关
BeanFactory是IoC容器的顶层接口,初始化BeanFactory对象时,加载的bean延迟加载
ApplicationContext接口是Spring容器的核心接口,初始化时bean立即加载
ApplicationContext接口提供基础的bean操作相关方法,通过其他接口扩展其功能
ApplicationContext接口常用初始化类
ClassPathXmlApplicationContext
FileSystemXmlApplicationContext
bean相关
<bean
id="bookDao" bean的id
name="dao bookDaoImpl daoImpl" bean的别名
class="com.itheima.dao.impl.BookDaoImpl" bean类型 静态工厂类 FactoryBean类
scope="singleton" 控制bean的实例数量
init-method="init" 生命周期初始化方法
destroy-method="destory" 生命周期销毁方法
autowire="byType" 自动装配类型
factory-method="getInstance" bean工厂方法 应用于静态工厂和实例工厂
factory-bean="com.itheima.factory. BookDaoFactory" 实例工厂bean
lazy-init="true" 控制bean延迟加载
/>
依赖注入相关
<bean id="bookService" class="com.itheima.service.impl.BookServiceImpl">
<constructor-arg name="bookDao" ref="bookDao"/> 构造器注入引用数据类型
<constructor-arg name="userDao" ref="userDao"/>
<constructor-arg name="msg" value="WARN"/> 构造器注入简单数据类型
<constructor-arg type-"java.lang. String" index="3" value="WARN"> 类型匹配与索引匹配
<property name="bookDao" ref="bookDao"/> setter注入引用类型
<property name="userDao" ref="userDao"/>
<property name="msg" value="WARN"/> setter注入简单类型
<property name="names"> setter注入集合类型
<list> list集合
<value>itcast</value> 集合注入简单数据类型
<ref bean="dataSource"/> 集合注入引用数据类型
</list>
</property>
</bean>