目录

Bean配置

# Bean配置

属性:

  1. name - 别名,除了id外还允许其他命名,property标签中ref也支持name
  2. scope - 生成模式,默认情况是单例
    • 可选值:
      • singleton: 单例
      • prototype: 多例

# Bean实例化

先前我们通过classid属性能够将类的实例化托管给IoC,对象其实是通过无参构造器实例化的。经过测试得知,无参构造器无论是public还是private,都能够成功实例化,private也能实例化,这说明了底层是通过反射机制实现的。内部实例化时,必须为类提供无参构造器,否则会出现BeanCreationException错误

# 静态工厂

早期为了解决业务层与数据层的耦合,开发者还会用到工厂模式,那么Spring的IoC如何管理静态工厂模式所生成的对象呢?

首先需要创建一个工厂类,假设是StaticFactory.class,然后写一个静态的方法返回一个新创建的类

public class StaticFactory {  
    public static UserDao getUserDao(){  
        return new UserDaoImpl();  
    }  
}
1
2
3
4
5

之后在applicationContext.xml设置类的路径 <bean id="userDao" class="com.project.factory.StaticFactory" factory-method="getUserDao"></bean>

# 生命周期

  • init-method: 初始化
  • destroy-method: 销毁

以上两个配置都是在<bean>标签下的,假设你有一个UserDaoImpl类用于实例化。

public class UserDaoImpl implements UserDao {  
    public void init(){  
        System.out.println("init!!!");  
    }  
  
    public void destroy(){  
        System.out.println("destroy!!!");  
    }  
}
1
2
3
4
5
6
7
8
9

当然你可以决定任意方法名,这不受限制。在设置完对应方法后,你可以在applicationContext.xml中绑定这些方法

<?xml version="1.0" encoding="UTF-8"?>  
<beans xmlns="http://www.springframework.org/schema/beans"  
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">  
    <bean id="userDao" class="com.project.dao.impl.UserDaoImpl" init-method="init" destroy-method="destroy"></bean>  
</beans>
1
2
3
4
5
6
最近更新
01
基本知识
07-18
02
卷积神经网络识别图像
07-18
03
损失函数
07-18
更多文章>