带你走进spring(二)

42 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

前言:今天继续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>