2.2 Spring配置文件

一. Bean标签基本配置

默认它调用类中的 无参构造函数,如果没有无参构造函数则不能创建成功。

基本属性: id: Bean实例在Spring容器中的唯一标识,class: Bean的全限定名称

二.Bean标签范围配置

scope:

singletion: 

1、单例的。 2、实例数:1个, 3、实例化时机:当Spring核心文件被加载时,实例化配置的Bean实例。4、对象运行:只要容器在,对象一直活着。5、销毁:应用卸载,销毁容器,对象被销毁。

prototype:

1、多例的。2、实例数:多个,3、实例化时机:当调用getBean()方法时实例化Bean。4、对象运行:只要对象在使用中,就一直活着。5、销毁:当对象长时间不用,被Java的垃圾回收器回收了。

三. Bean生命周期配置:

init-method: 指定类中的初始化方法名称。

destroy-method: 指定类中销毁方法名称。

四.Bean实例化三种方式:

无参构造方法实例化

工厂静态方法实例化

<bean id="userDao" class="com.it.factory.StaticFactory" factory-method="getUserDao"></bean>
public class StaticFactory {
    public static UserDao getUserDao() {
        return new UserDaoImpl();
    }
}

工厂实例方法实例化

<bean id="factory" class="com.it.factory.DynamicFactory"></bean>
<bean id="userDao" factory-bean="factory" factory-method="getUserDao"  />
package com.it.factory;

import com.it.dao.UserDao;
import com.it.dao.impl.UserDaoImpl;

public class DynamicFactory {
    public UserDao getUserDao() {
        return new UserDaoImpl();
    }
}

五.Bean的依赖注入:

1、Set方式

<bean id="userDao" class="com.it.dao.impl.UserDaoImpl"></bean>
<!-- 底下第一个  <property name="userDao"  是 UserServiceImpl setUserDao方法去掉set UserDao 再把U小写 得到 userDao -->
<!-- 第二个      <property ref="userDao"> 是 <bean id="userDao" class="com.it.dao.impl.UserDaoImpl"></bean> 这个beand-->
<bean id="userService" class="com.it.service.impl.UserServiceImpl" >
    <property name="userDao" ref="userDao"></property>
</bean>
package com.it.service.impl;

import com.it.dao.UserDao;
import com.it.service.UserService;

public class UserServiceImpl implements UserService {
    private UserDao userDao;
    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }

    @Override
    public void save() {
        //ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
        //UserDao userDao = (UserDao) app.getBean("userDao");
        //userDao.save();
        this.userDao.save();
    }
}

Set注入方法还有一个简便的方法,使用P命名空间,可以省去子标签

1、引入P命名空间

xmlns:p="http://www.springframework.org/schema/p"
    <bean id="userService" class="com.it.service.impl.UserServiceImpl" p:userDao-ref="userDao" ></bean>

2、有参构造

package com.it.service.impl;

import com.it.dao.UserDao;
import com.it.service.UserService;

public class UserServiceImpl implements UserService {
    private UserDao userDao;

    public UserServiceImpl(UserDao userDao) {
        this.userDao = userDao;
    }

    public UserServiceImpl() {
    }
    /*public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }*/

    @Override
    public void save() {
        //ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
        //UserDao userDao = (UserDao) app.getBean("userDao");
        //userDao.save();
        this.userDao.save();
    }
}
 <bean id="userService" class="com.it.service.impl.UserServiceImpl">
        <constructor-arg name="userDao" ref="userDao"></constructor-arg>
 </bean>

 

六、 Bean的依赖注入的数据类型

注入数据的三种数据类型

  • 普通数据类型
  • 引用数据类型
  • 集合数据类型

普通数据的注入:

 private int age;
    private String name;

    public void setAge(int age) {
        this.age = age;
    }

    public void setName(String name) {
        this.name = name;
    }
 <bean id="userService" class="com.it.service.impl.UserServiceImpl">
        <constructor-arg name="userDao" ref="userDao"></constructor-arg>
    </bean>

    <bean id="userDao" class="com.it.dao.impl.UserDaoImpl">
        <property name="name" value="zhangsna" />
        <property name="age" value="100" />
    </bean>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值