Spring中的Bean

如果把Spring看做一个大型工厂,则Spring容器中的Bean就是该工厂的产品。要想使用这个工厂生产和管理Bean,就需要在配置文件中告诉它需要哪些Bean,以及需要使用何种方式将这些Bean装配到一起。

Bean:Bean的本质就是Java中的类,而Spring中的Bean其实就是对实体类的引用,来生产Java类对象,从而实现生产和管理Bean ;

 

Bean的配置:

Spring容器最常用的配置文件是:XML文件和Properties.通过这样注册并管理Bean之间的依赖关系;(一般都用XML文件配置)

 

Bean实例化的三种方式:构造器实例化、静态工厂实例化、实例工厂实例化

1.构造器实例化

每个类系统都会默认定义一个构造函数,直接通过XML文件即可在Spring中配置,作为工厂生产该类的对象;

2.静态工厂实例化:

如下图:类MyBean2Factory 静态方法生产类Bean2对象

XML文件中配置信息如下:需要指明工厂的生产方法

 <bean id="bean2" class="com.itheima.instance.static_factory.MyBean2Factory"   factory-method="createBean" />

3.动态工厂实例化

1.如下图:类MyBean3Factory 通过createBean方法生产类Bean3对象

public class MyBean3Factory {
    public Bean3 createBean(){
         return new Bean3();
         }
}

2.注册工厂

3.使用工厂实例化对象

<bean id="myBean3Factory" class="com.itheima.instance.factory.MyBean3Factory" />

<bean id="bean3" factory-bean="myBean3Factory" factory-method="createBean" />

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Bean的装配方式:Bean的装配可以理解为依赖关系注入,Bean的装配方式即Bean依赖注入的方式。

Spring容器支持多种形式的Bean的装配方式 ;如基于XML的装配、基于注释的装配和自动装配

 

1.基于XML的装配:

1.1设值注入:

1.Bean类必须有一个无参构造方法

2.Bean类必须为属性提供setter方法()

注意:list-value 是set方法

 

 

1.2构造注入

1.Bean类必须提供有参构造方法

例如:Bean类中两个字符串变量 一个字符串数组变量

 

 

2.基于注解(Annotation)的装配

注释如下:

 

方法一:

在类中注入另一个Bean

 

 

如下是application.xml的配置

<context:annotation-config />
<bean id="userDao" class="com.itheima.annotation.UserDaoImpl" />
<bean id="userService" class="com.itheima.annotation.UserServiceImpl" />
<bean id="userController" class="com.itheima.annotation.UserController" 

 

方法二:扫描包来进行配置

注意:不管是上面哪种方法通过添加context注释来配置XML文件时,添加一个xmls:context 和xsi:schemaLocation 即可;

 

 

 

3.自动装配


1.自动装配对注入的Bean需要setter方法实例化:

UserServiceImple和UserController,分别增加类属性的setter方法;

2.修改Spring配置文件,使用autowire属性配置Bean;

<bean id="userDao" class="com.itheima.annotation.UserDaoImpl" />
<bean id="userService" class="com.itheima.annotation.UserServiceImpl" autowire="byName" />
<bean id="userController" class="com.itheima.annotation.UserController" autowire="byName" />

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值