本文已参与「新人创作礼」活动,一起开启掘金创作之路。
前言:今天继续spring的学习~
-
bean 的作用域
-
singleton单例(默认)[加载配置文件时对象就会创建]
<bean id="user1" class="com.zjj.demo02.UserImple" name="name" value="张三" scope="singleton"></bean> -
prototype多例[调用getbean()才会创建对象]
<bean id="user1" class="com.zjj.demo02.UserImple" name="name" value="张三" scope="prototype"></bean> -
request 【对象会放在request域中】
-
session【对象会放在会话域中】
-
-
bean的声明周期
- 通过构造器创建bean实例(无参构造方法)
- 为bean的属性设置值和对其他bean引用(调用set方法)
- 把bean的实例传递给bean的后置处理器的方法(xml中添加实现BeanPostProcessor接口的类)
- 调用bean的初始化方法(需要进行配置初始化方法)
- 把bean的实例传递给bean的后置处理器的方法
- bean对象的使用
- 当容器关闭时,调用bean的销毁方法(需要进行配置销毁的方法)
<bean id="user" class="com.zjj.demo02.dao.UserImple" p:name="老李" init-method="init" destroy-method="destroy"></bean> <bean id="postProcessor" class="com.zjj.demo02.Post"></bean>//后置处理器 package com.zjj.demo02; import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.BeanPostProcessor; public class Post implements BeanPostProcessor { @Override public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { System.out.println("bean 初始化之前"); return bean; } @Override public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { System.out.println("bean 初始化之后"); return bean; } } -
自动装配【autowire】
- byName注入【属性名称要和bean id一致】
- byType 【属性类型要和bean一致且bean唯一】
<bean id="user" class="com.zjj.demo02.dao.UserImple" autowire="byName"></bean>
<bean id="user" class="com.zjj.demo02.dao.UserImple" autowire="byType"></bean>
-
引入外部属性文件
<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"> <context:propertity-placeholder location="classpath:jdbc.properties"/> <bean id="dataSource" class="com.alibaba.druid.pool.DruiDataSource"> <property name="driverClassName" value="${prop.driver}"></property> <property name="url" value="${prop.url}"></property> <property name="root" value="${prop.root}"></property> <property name="password" value="${prop.password}"></property> </bean> </beans>