Spring-依赖注入(DI)入门案例及bean基础配置

目录

一、DI入门案例思路分析

二、DI入门案例

三、bean基础配置

bean别名配置

bean作用范围配置


一、DI入门案例思路分析

1、基于IoC管理bean

2、Service中使用new形式创建Dao对象是否保留?(否)

3、Service中需要Dao对象如何进入到Service中?(提供方法)

4、Service与Dao间的关系如何描述?(配置)

二、DI入门案例

BookService接口:

public interface BookService {
    public void save();
}

BookServiceImpl实现类:

import com.itheima.dao.BookDao;
import com.itheima.service.BookService;

public class BookServiceImpl implements BookService {
    //5.删除业务层中使用new的方式创建的dao对象
    private BookDao bookDao;

    public void save() {
        System.out.println("book service save ...");
        bookDao.save();
    }
    //6.提供对应的set方法
    public void setBookDao(BookDao bookDao) {
        this.bookDao = bookDao;
    }
}

applicationContext.xml代码:

<bean id="bookService" class="com.itheima.service.impl.BookServiceImpl">
        <!--7.配置server与dao的关系-->
        <!--property标签表示配置当前bean的属性
        name属性表示配置哪一个具体的属性
        ref属性表示参照哪一个bean-->
        <property name="bookDao" ref="bookDao"/>
    </bean>

App2:

import com.itheima.service.BookService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App2 {
    public static void main(String[] args) {
        //获取IoC容器
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        //获取bean(根据bean配置id获取)

        BookService bookService = (BookService) ctx.getBean("bookService");
        bookService.save();

    }
}

执行结果:

cb269e7865174060a26bff5caa63564a.png

三、bean基础配置

类别描述
名称bean
类型标签
所属beans标签
功能定义Spring核心容器管理的对象
格式

<beans>

        <bean/>

        <bean></bean>

</beans>

属性列表

id:bean的id,使用容器可以通过id值获取对应的bean,在一个容器中id值唯一

class:bean类型,即配置的bean的全路径类名

范例

<bean id="bookDao" class="com.itheima.dao.impl.BookDaoIml"/>

<bean id="bookService" class=“com.itheima.service.iml.BookServiceIml”></bean>

bean别名配置

类别描述
名称name
类型属性
所属bean标签
功能定义bean的别名,可定义多个,使用逗号(,)分号(;)空格( )分隔
范例

<bean id="bookDao" name=“dao bookDaoImpl” class="com.itheima.dao.impl.BookDaoImpl"/>

<bean name="service,bookServiceImpl" class="com.itheima.service.impl.BookServiceImpl"/>

注意事项:

获取bean无论是通过id还是name获取,如果无法获取到,将抛出异常NoSuchBeanDefinitionException

NoSuchBeanDefinitionException:No bean named 'bookServiceImpl' available

bean作用范围配置

类别描述
名称scope
类型属性
所属bean标签
功能

定义bean的作用范围,可选范围如下

singleton:单例(默认)

prototype:非单例

范例<bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl" scope="prototype"/>

为什么bean默认认为单例?

适合交给容器进行管理的bean

■ 表现层对象

■ 业务层对象

■ 数据层对象

■ 工具对象

不适合交给容器进行管理的bean

■ 封装实体的域对象

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏志121

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值