itheima-SSM 学习笔记

itheima-SSM 学习笔记

Day1 Spring-Bean相关知识

1.bean基础配置

 <bean id="bookDao" name="dao" class="com.itheima.dao.impl.BookDaoImpl"/>
    <bean id="bookService" name="service" class="com.itheima.service.impl.BookServiceImpl">
<!--        property标签表示当前bean的属性-->
<!--        name属性表示配置哪一个具体属性 此处是BookServiceImpl中的bookDao-->
<!--        ref属性表示参照哪一个bean 此处是上面com.itheima.dao.impl.BookDaoImpl的id bookDao-->
        <property name="bookDao" ref="bookDao"/>
    </bean>

可以通过name给bean起别名。
可以用property标签表示当前bean的属性,个人理解是把IOC里面的两个bean关联起来,service里面要使用dao层里面的bean所以service的ref为dao层的bean。

2.bean的三种实例化方式

(1)构造方法(常用)
  • 提供可访问的构造方法
Public class BookDaoImpl implements BookDao {
    <!--public BookDaoImpl() {}-->
    public void save() {
        System.out.println("save...");
    }
}
  • 配置
<bean
    id = "bookDao"
    class = "com.itheima.dao.impl.BookDaoImpl"
    />

bean实例化对象采用构造方法。
并且不论是public的构造方法还是private构造方法,它都能调到。(通过反射访问私有构造方法)
但是它只能通过无参构造方法实例化对象。
无参构造方法如果不存在,将抛出BeanCreationException。

(2)静态工厂(了解)
  • 静态工厂
Public class OrderDaoFactory {
    public static orderDao getOrderDao() {
        return new orderDaoImpl;
    }
}
  • 配置
<bean
    id = "orderDao"
    class = "com.itheima.factory.orderDaoFactory"
    factory-method = "getOrderDao"
    />

其中class为工厂类名,还需要配工厂里面造对象的方法名factory-method

(3)实例工厂(了解)
  • 实例工厂
Public class UserDaoFactory {
    public userDao getUserDao() {
        return new userDaoImpl;
    }
}
  • 配置
<!--先配置工厂的bean-->
<bean id = "userDaoFactory" class = "com.itheima.factory.UserDaoFactory" />
<!--再配置工厂的bean里面的method-->
<bean
    id = "userDao"
    factory-bean = "userDaoFactory"
    factory-method = "getUserDao"
    />
(3*)实例工厂变种-FactoryBean(重要,实用)
  • FactoryBean
Public class UserDaoFactoryBean implements FactoryBean<UserDao>{
    <!--代替原始实例工厂中创建对象的方法-->
    public userDao getObject() throws Exception {
        return new userDaoImpl;
    }
    public Class<?> getObjectType() {
        return userDao.class;
    }
}
  • 配置 (相对于实例工厂,配置得到了简化)
<bean
    id = "userDao"
    clasd = "com.itheima.factory.UserDaoFactoryBean"
    />

还可以通过实现isSingleton()方法来控制,
默认为单例模式
return false;表示非单例模式
return true;表示单例模式

public boolean isSingleton() {
    return false;
}

3.bean的生命周期

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
执行结果:(先set 后service init)
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
4.setter注入
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值