Java学习记录 Spring核心loC

Spring IoC容器

Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想

Ioc 在开发中,无需自行实例对象,而是有 Spring Ioc容器 创建。Spring容器会负责控制程序之间的关系,而不是由代码直接控制,因此,控制权由 Spring容器 接管,控制权发生了反转,是Ioc设计思想

Spring 提供了两种 IoC 容器,分别为 BeanFactory 和 ApplicationContext.

BeanFactory

BeanFactory是一个管理Bean的工厂,根据xml配置文件中的定义Bean进行管理,主要负责初始化各种Bean,并调用他们的生命周期方法

加载xml配置文件,如下所示:(xml文件必须是绝对路径)

BeanFactory beanFactory = new XmlBeanFactory(new FileSystemResource("D:\applicationContext.xml"));

ApplicationContext

ApplicationContext 是 BeanFactory 的子接口,也是 应用上下文。BeanFactory 的所有功能,还添加了对 i18n(国际化)、资源访问、事件传播等方面的良好支持

ApplicationContext 接口有两个常用的实现类

ClassPathXmlApplicationContext

该类从类路径 ClassPath 中寻找指定的 XML 配置文件,找到指定xml文件加载实例化工作,如下所示

ApplicationContext applicationContext = new ClassPathXmlApplicationContext(Spring配
置文件的名称);

FileSystemXmlApplicationContext

该类从指定系统路径的文件 进行寻找指定 XML 配置文件,找到指定xml文件加载实例化工作,如下所示

ApplicationContext applicationContext = new FileSystemXmlApplicationContext(Spring配
置文件的路径和名称);

在读取 Spring 的配置文件时,FileSystemXmlApplicationContext 是通过参数指定配置文件的位置,它可以获取类路径之外的资源

Bean标签

XML 格式配置文件的根元素是 <beans>,该元素包含了多个 <bean> 子元素,每一个 <bean> 子元素定义了一个 Bean,并描述了该 Bean 如何被装配到 Spring 容器中。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">

    <!-- 使用id属性定义person1,其对应的实现类为com.mengma.person1 (类路径及包路径)-->
    <bean id="person1" class="com.mengma.person1 " />
    <!--使用name属性定义person2,其对应的实现类为com.mengma.domain.Person2 (类路径及包路径) -->
    <bean name="Person2" class="com.mengma.domain.Person2"/>
        
</beans>

bean属性

属性名称 描述
id 是一个 Bean 的唯一标识符,Spring 容器对 Bean 的配置和管理都通过该属性完成
name Spring 容器同样可以通过此属性对容器中的 Bean 进行配置和管理,name 属性中可以为 Bean 指定多个名称,每个名称之间用逗号或分号隔开
class 该属性指定了 Bean 的具体实现类,它必须是一个完整的类名,使用类的全限定名
scope 用于设定 Bean 实例的作用域,其属性值有 singleton(单例)、prototype(原型)、request、session 和 global Session。其默认值是 singleton
lazy-init 延迟加载(true/false 默认false)。通过getbean()方法获取对象时才会生效
init-method 初始化对象方法
destroy-method 销毁对象方法
list 用于封装 List 或数组类型的依赖注入
set 用于封装 Set 类型属性的依赖注入
map 用于封装 Map 类型属性的依赖注入

实例Bean

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

  1. 创建实体对象

    项目 src目录 下 com.People

    package com;
    
    public class People {
         
        int id;
        String name;
        
        public People() {
         
            System.out.println("无参实例");
        }
        public People(int id , String name) {
         
            System.out.println("有参实例");
            this.id = id;
            this.name = name;
        }
        
        @Override
        public String toString() {
         
            return "People{" +
                    "id=" + id +
                    ", name='" + name + '\'' +
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值