【Spring】bean的基础配置

  1. bean的别名

    当在Spring config文件中定义name作为别名后:
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">
    <!--1. 导入spring的坐标spring-context-->

    <!--2. 配置bean-->
    <!--bean标签标示配置bean
    id属性标示给bean起名字
    class属性标示给bean定义的类型
    -->
    <bean id="bookDao" name="dao" class="com.example.demo231116.dao.impl.BookDaoImpl" />

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

我们在getBean()的时候也可以用name里面的名字进行调用:

java 复制代码
package com.example.demo231116;

import com.example.demo231116.dao.BookDao;
import com.example.demo231116.service.BookService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Demo231116Application2 {
    public static void main(String[] args) {
        // 3. 获取IoC容器
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        // 4. 获取bean
//        BookDao bookDao = (BookDao) ctx.getBean("bookDao");
//        bookDao.save();
        BookService bookService = (BookService) ctx.getBean("service");
        bookService.save();
    }
}
  1. bean的作用范围
    在如下代码中,默认会打印出两个相同的结果:
java 复制代码
BookDao bookDao = (BookDao) ctx.getBean("dao");
BookDao bookDao1 = (BookDao) ctx.getBean("dao");
System.out.println(bookDao);
System.out.println(bookDao1);
bash 复制代码
com.example.demo231116.dao.impl.BookDaoImpl@309e345f
com.example.demo231116.dao.impl.BookDaoImpl@309e345f

这是因为默认不会创造多个实例,假如每调用一次创建一个新的实例将会是很大的内存消耗。 使用scopre属性进行配置,在xml文件中在bookDao后面配置scopre属性为prototype后,结果会是

bash 复制代码
com.example.demo231116.dao.impl.BookDaoImpl@309e345f
com.example.demo231116.dao.impl.BookDaoImpl@56a6d5a6
相关推荐
电商API_1800790524712 分钟前
第三方淘宝商品详情 API 全维度调用指南:从技术对接到生产落地
java·大数据·前端·数据库·人工智能·网络爬虫
一点程序25 分钟前
基于SpringBoot的选课调查系统
java·spring boot·后端·选课调查系统
C雨后彩虹27 分钟前
计算疫情扩散时间
java·数据结构·算法·华为·面试
2601_9498095931 分钟前
flutter_for_openharmony家庭相册app实战+我的Tab实现
java·javascript·flutter
vx_BS813301 小时前
【直接可用源码免费送】计算机毕业设计精选项目03574基于Python的网上商城管理系统设计与实现:Java/PHP/Python/C#小程序、单片机、成品+文档源码支持定制
java·python·课程设计
2601_949868361 小时前
Flutter for OpenHarmony 电子合同签署App实战 - 已签合同实现
java·开发语言·flutter
达文汐1 小时前
【困难】力扣算法题解析LeetCode332:重新安排行程
java·数据结构·经验分享·算法·leetcode·力扣
培风图南以星河揽胜1 小时前
Java版LeetCode热题100之零钱兑换:动态规划经典问题深度解析
java·leetcode·动态规划
启山智软2 小时前
【中大企业选择源码部署商城系统】
java·spring·商城开发
我真的是大笨蛋2 小时前
深度解析InnoDB如何保障Buffer与磁盘数据一致性
java·数据库·sql·mysql·性能优化