Spring IOC Bean标签属性介绍(内含教学视频+源代码)

news2025/2/23 18:21:27

Spring IOC Bean标签属性介绍(内含教学视频+源代码)

教学视频+源代码下载链接地址https://download.csdn.net/download/weixin_46411355/87442649

目录

  • Spring IOC Bean标签属性介绍(内含教学视频+源代码)
  • `教学视频+源代码下载链接地址`:[https://download.csdn.net/download/weixin_46411355/87442649](https://download.csdn.net/download/weixin_46411355/87442649)
    • 0.Bean标签属性介绍
    • 1.0 新建一个Maven工程
    • 1.1 pom.xml
    • 1.2 实体类JavaBean
      • 1.2.1 User类
    • 1.3 当Scope="singleton"时
    • 1.4 当 Scope="singleton" 且 lazy-init="true" 时
    • 1.5 当scope="prototype"时
    • 1.6 当scope="prototype" 且 lazy-init="true" 时
    • 1.7 小结
    • 1.8 depends-on
      • 1.8.0 实体类JavaBean
        • 1.8.0.1 Student类
      • 1.8.1 配置文件都不加lazy-init=true
      • 1.8.2 被依赖者(Student)加了lazy-init="true"
      • 1.8.3 依赖者(依赖其它类)(User)加了lazy-init="true"
      • 1.8.4 两者都加lazy-init="true"
    • 1.9 init-method和destroy-method
      • 1.9.1 实体类JavaBean User加自定义的初始化方法和销毁方法
      • 1.9.3 加了lazy-init="true"
    • 1.10 primary
      • 1.10.1 配置文件
      • 1.10.2 测试类
      • 1.10.3 测试效果

0.Bean标签属性介绍

id:是bean的唯一标识。一个bean,其id值只能有一个。在整个IOC容器中,id值不允许重复,使用id名称作为key。

name:一个bean的名称,可以存在多个,多个之间使用逗号分隔。不论bean有没有定义name属性,默认id都会当做name。

class:bean的具体的类型,即实体类JavaBean的全限定类名,由包名和类名组成。

scope:bean的作用域

prototype非单例,每次获取都会创建一个新的bean对象
singleton单例,多次获取永远同一个bean,默认值
request一次请求,基于web项目的bean的作用域
session一次会话,基于web项目的bean的作用域

lazy-init:延迟初始化,默认只要加载了配置文件,bean对象就会被初始化。lazy-init则是获取时才会初始化,只针对单例模式有效。 非单例每次都会创建,没有延迟初始化的意义。

depends-on:初始化时依赖的对象,当前对象初始化前需先初始化depends-on指定的对象

init-method:对象初始化后调用的方法

destroy-method:对象销毁时,调用的方法

autowire:属性自动装配。byName根据属性名称装配,byType根据类型装配。

autowire-candidate:是否允许作为自动装配的候选项。true作为自动装配的候选项,false不作为自动装配的候选项。

primary:优先使用该bean,因为Spring需要支持使用那些类型查找对象。在一个大类型下,可能存在多个小类型。如果根据大类型装配属性时,不知道使用哪个具体的对象,则可以根据Primary设置优先级。

1.0 新建一个Maven工程

1.1 pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.bjpowernode</groupId>
    <artifactId>02_IOCProject</artifactId>
    <version>1.0.0</version>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.18</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

</project>

1.2 实体类JavaBean

1.2.1 User类

com.bjpowernode.domain包下
User.java

package com.bjpowernode.domain;



import java.util.Objects;


public class User {
    private Long id;
    private String name;
    private Integer age;

    public User(){
        System.out.println("create User");
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

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


    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        User user = (User) o;
        return Objects.equals(id, user.id) && Objects.equals(name, user.name) && Objects.equals(age, user.age);
    }

}




1.3 当Scope="singleton"时

resources资源文件夹下
右击New->XML Configuration File->Spring config
命名为applicationContext
在这里插入图片描述

1.3.1 applicationContext.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">

    <!--配置要交给Spring管理的类的信息
    class属性     配置类的全限定名
    id属性        给当前bean对象,标注一个唯一标识 当前文档中只有一个
    name属性      可以设置多个name的值
    scope属性     表示作用域(指对象的创建是单例还是多例),singleton单例(默认值),prototype多例
    lazy-init    初始化对象的延迟,默认为false

    -->
    <bean id="user1" name="u,u1,u2" class="com.bjpowernode.domain.User" scope="singleton"></bean>

</beans>

1.3.2 测试类

     @Test
    public void testBeanLabel_ScopeSingleton() {
        //获取Spring容器
        System.out.println("------------------------初始化容器开始------------------------------");
        ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext("applicationContext1.xml");
        System.out.println("----------------------初始化容器结束--------------------------------");
        //从spring中获取bean对象
        User UserClass = classPathXmlApplicationContext.getBean(User.class);
        User user1Id = (User) classPathXmlApplicationContext.getBean("user1");
        User uName = (User) classPathXmlApplicationContext.getBean("u");
        User u2Name = (User) classPathXmlApplicationContext.getBean("u2");
        
        System.out.println("UserClass = " + UserClass.toString());
        System.out.println("user1Id = " + user1Id.toString());
        System.out.println("uName = " + uName.toString());
        System.out.println("u2Name = " + u2Name.toString());

        System.out.println(UserClass == user1Id);
        System.out.println(UserClass.equals(user1Id));
    }

1.3.3 测试结果
在这里插入图片描述
1.3.4 测试结果分析
说明初始化容器的过程中,就创建了对象
配置scope=“singleton”,打印出来的对象的地址是一样的

单例的饿汉式

1.4 当 Scope=“singleton” 且 lazy-init=“true” 时

1.4.1 applicationContext2.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">

    <!--配置要交给Spring管理的类的信息
    class属性     配置类的全限定名
    id属性        给当前bean对象,标注一个唯一标识 当前文档中只有一个
    name属性      可以设置多个name的值
    scope属性     表示作用域(指对象的创建是单例还是多例),singleton单例(默认值),prototype多例
    lazy-init    初始化对象的延迟,默认为false

    -->
    <bean id="user1" name="u,u1,u2" class="com.bjpowernode.domain.User" scope="singleton" lazy-init="true"></bean>
</beans>

1.4.2 测试类

  @Test
    public void testBeanLabel_ScopeSingleton_LazyInitTrue() {
        //获取Spring容器
        System.out.println("------------------------初始化容器开始------------------------------");
        ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext("applicationContext2.xml");
        System.out.println("----------------------初始化容器结束--------------------------------");
        //从spring中获取bean对象
        User UserClass = classPathXmlApplicationContext.getBean(User.class);
        User user1Id = (User) classPathXmlApplicationContext.getBean("user1");
        User uName = (User) classPathXmlApplicationContext.getBean("u");
        User u2Name = (User) classPathXmlApplicationContext.getBean("u2");

        System.out.println("UserClass = " + UserClass.toString());
        System.out.println("user1Id = " + user1Id.toString());
        System.out.println("uName = " + uName.toString());
        System.out.println("u2Name = " + u2Name.toString());

        System.out.println(UserClass == user1Id);
        System.out.println(UserClass.equals(user1Id));

    }

1.4.3 测试结果
在这里插入图片描述
1.4.4 测试结果分析
lazy-init:初始化对象的延迟,默认为false,设置为true,则在初始化容器结束之后创建对象
配置scope=“singleton”,打印出来的对象的地址是一样的

单例的懒汉式

1.5 当scope="prototype"时

1.5.1 applicationContext3.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">

    <!--配置要交给Spring管理的类的信息
    class属性     配置类的全限定名
    id属性        给当前bean对象,标注一个唯一标识 当前文档中只有一个
    name属性      可以设置多个name的值
    scope属性     表示作用域(指对象的创建是单例还是多例),singleton单例(默认值),prototype多例
    lazy-init    初始化对象的延迟,默认为false

    -->
    <bean id="user1" name="u,u1,u2" class="com.bjpowernode.domain.User" scope="prototype"></bean>

</beans>

1.5.2 测试类

  @Test
    public void testBeanLabel_ScopePrototype() {
        //获取Spring容器
        System.out.println("------------------------初始化容器开始------------------------------");
        ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext("applicationContext3.xml");
        System.out.println("----------------------初始化容器结束--------------------------------");
        //从spring中获取bean对象
        User UserClass = classPathXmlApplicationContext.getBean(User.class);
        User user1Id = (User) classPathXmlApplicationContext.getBean("user1");
        User uName = (User) classPathXmlApplicationContext.getBean("u");
        User u2Name = (User) classPathXmlApplicationContext.getBean("u2");

        System.out.println("UserClass = " + UserClass.toString());
        System.out.println("user1Id = " + user1Id.toString());
        System.out.println("uName = " + uName.toString());
        System.out.println("u2Name = " + u2Name.toString());

        System.out.println(UserClass == user1Id);
        System.out.println(UserClass.equals(user1Id));
    }

1.5.3 测试结果
在这里插入图片描述
1.5.4 测试结果分析
在容器初始化结束后创建bean对象
配置scope=“singleton”,打印出来的对象的地址是不同的,说明是多例

1.6 当scope=“prototype” 且 lazy-init=“true” 时

1.6.1 applicationContext4.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">

    <!--配置要交给Spring管理的类的信息
    class属性     配置类的全限定名
    id属性        给当前bean对象,标注一个唯一标识 当前文档中只有一个
    name属性      可以设置多个name的值
    scope属性     表示作用域(指对象的创建是单例还是多例),singleton单例(默认值),prototype多例
    lazy-init    初始化对象的延迟,默认为false

    -->
    <bean id="user1" name="u,u1,u2" class="com.bjpowernode.domain.User" scope="prototype" lazy-init="true"></bean>

</beans>

1.6.2 测试类

  @Test
    public void testBeanLabel_ScopePrototype_LazyInit() {
        //获取Spring容器
        System.out.println("------------------------初始化容器开始------------------------------");
        ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext("applicationContext4.xml");
        System.out.println("----------------------初始化容器结束--------------------------------");
        //从spring中获取bean对象
        User UserClass = classPathXmlApplicationContext.getBean(User.class);
        User user1Id = (User) classPathXmlApplicationContext.getBean("user1");
        User uName = (User) classPathXmlApplicationContext.getBean("u");
        User u2Name = (User) classPathXmlApplicationContext.getBean("u2");

        System.out.println("UserClass = " + UserClass.toString());
        System.out.println("user1Id = " + user1Id.toString());
        System.out.println("uName = " + uName.toString());
        System.out.println("u2Name = " + u2Name.toString());

        System.out.println(UserClass == user1Id);
        System.out.println(UserClass.equals(user1Id));
    }

1.6.3 测试结果
在这里插入图片描述
1.6.4 测试结果分析
在容器初始化结束后创建bean对象,和不配置lazy-init="true"结果一样,说明配置了scope="protoype"多例模式,默认就是init-lazy=“true”,即默认就是懒加载

配置scope=“singleton”,打印出来的对象的地址是不同的说明是多例

1.7 小结

当scope=“singleton”时
默认是单例的饿汉式,即创建bean对象,在初始化容器对象结束之前完成
如果在配置lazy-init=“true”,则就是单例的懒汉式,即创建bean对象,在初始化容器对象结束之后完成

当scope=“prototype”时
是多例,不管是否配置lazy-init=“true”,创建bean对象,都在初始化容器对象结束之后完成,即默认lazy-init=“true”

1.8 depends-on

1.8.0 实体类JavaBean

1.8.0.1 Student类

package com.bjpowernode.domain;

import java.util.Objects;

public class Student {
    private Long id;
    private String name;
    private Integer age;

    public Student(){
        System.out.println("create Student");
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

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

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return Objects.equals(id, student.id) && Objects.equals(name, student.name) && Objects.equals(age, student.age);
    }

}


1.8.1 配置文件都不加lazy-init=true

配置文件
applicationContext5.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">

    <!--配置要交给Spring管理的类的信息
    class属性     配置类的全限定名
    id属性        给当前bean对象,标注一个唯一标识 当前文档中只有一个
    name属性      可以设置多个name的值
    scope属性     表示作用域(指对象的创建是单例还是多例),singleton单例(默认值),prototype多例
    lazy-init    初始化对象的延迟,默认为false

    -->
    <bean id="user" name="u,u1,u2" class="com.bjpowernode.domain.User" depends-on="student"/>

    <bean id="student" class="com.bjpowernode.domain.Student"/>


</beans>

测试类

 @Test
    public void testBeanLabel_dependsOn(){
        //获取Spring容器对象
        System.out.println("------------------------初始化容器开始------------------------------");
        ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext("applicationContext5.xml");
        System.out.println("----------------------初始化容器结束--------------------------------");
        User UserClass = classPathXmlApplicationContext.getBean(User.class);
        System.out.println("UserClass = " + UserClass);
    }

测试结果
在这里插入图片描述
说明:
1、因为在bean中,user加了depends-on student,所以在创建User时会先创建Student对象
2、都在初始化容器结束之前,完成bean对象的创建

1.8.2 被依赖者(Student)加了lazy-init=“true”

配置文件
applicationContext6.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">

    <!--配置要交给Spring管理的类的信息
    class属性     配置类的全限定名
    id属性        给当前bean对象,标注一个唯一标识 当前文档中只有一个
    name属性      可以设置多个name的值
    scope属性     表示作用域(指对象的创建是单例还是多例),singleton单例(默认值),prototype多例
    lazy-init    初始化对象的延迟,默认为false

    -->
    <bean id="user" name="u,u1,u2" class="com.bjpowernode.domain.User" depends-on="student"/>

    <bean id="student" class="com.bjpowernode.domain.Student" lazy-init="true"/>


</beans>

测试类

  @Test
    public void testBeanLabel_dependsOnStudentLazyInit(){
        //获取Spring容器对象
        System.out.println("------------------------初始化容器开始------------------------------");
        ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext("applicationContext6.xml");
        System.out.println("----------------------初始化容器结束--------------------------------");
        User UserClass = classPathXmlApplicationContext.getBean(User.class);
        System.out.println("UserClass = " + UserClass);
    }

测试结果
在这里插入图片描述
说明:
1、因为在bean中,user加了depends-on student,所以在创建User时会先创建Student对象
2、都在初始化容器结束之前,完成bean对象的创建
3、被依赖者(Student)加了"lazy-init=true"没有变化

1.8.3 依赖者(依赖其它类)(User)加了lazy-init=“true”

配置文件applicationContext7.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">

    <!--配置要交给Spring管理的类的信息
    class属性     配置类的全限定名
    id属性        给当前bean对象,标注一个唯一标识 当前文档中只有一个
    name属性      可以设置多个name的值
    scope属性     表示作用域(指对象的创建是单例还是多例),singleton单例(默认值),prototype多例
    lazy-init    初始化对象的延迟,默认为false

    -->
    <bean id="user" name="u,u1,u2" class="com.bjpowernode.domain.User" depends-on="student" lazy-init="true"/>

    <bean id="student" class="com.bjpowernode.domain.Student" />


</beans>

测试类

 @Test
    public void testBeanLabel_dependsOnUserLazyInit(){
        //获取Spring容器对象
        System.out.println("------------------------初始化容器开始------------------------------");
        ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext("applicationContext7.xml");
        System.out.println("----------------------初始化容器结束--------------------------------");
        User UserClass = classPathXmlApplicationContext.getBean(User.class);
        System.out.println("UserClass = " + UserClass);
    }

测试效果
在这里插入图片描述
说明:
1、因为在bean中,user加了depends-on student,所以在创建User时会先创建Student对象
2、被依赖者(Student)在初始化容器结束之前,完成bean对象的创建
3、依赖者(依赖其它类)(User)加了lazy-init="true"发生变化,在初始化容器结束之后创建User bean 对象

1.8.4 两者都加lazy-init=“true”

配置文件applicationContext8.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">

    <!--配置要交给Spring管理的类的信息
    class属性     配置类的全限定名
    id属性        给当前bean对象,标注一个唯一标识 当前文档中只有一个
    name属性      可以设置多个name的值
    scope属性     表示作用域(指对象的创建是单例还是多例),singleton单例(默认值),prototype多例
    lazy-init    初始化对象的延迟,默认为false

    -->
    <bean id="user" name="u,u1,u2" class="com.bjpowernode.domain.User" depends-on="student" lazy-init="true"/>

    <bean id="student" class="com.bjpowernode.domain.Student" lazy-init="true" />


</beans>

测试类

  @Test
    public void testBeanLabel_dependsOnBothLazyInit(){
        //获取Spring容器对象
        System.out.println("------------------------初始化容器开始------------------------------");
        ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext("applicationContext8.xml");
        System.out.println("----------------------初始化容器结束--------------------------------");
        User UserClass = classPathXmlApplicationContext.getBean(User.class);
        System.out.println("UserClass = " + UserClass);
    }

测试效果
在这里插入图片描述
说明:
1、因为在bean中,user加了depends-on student,所以在创建User时会先创建Student对象
2、因为两个bean都加了lazy-init=“true”,所以都在初始化容器结束之后,完成bean对象的创建

1.9 init-method和destroy-method

1.9.1 实体类JavaBean User加自定义的初始化方法和销毁方法

在这里插入图片描述
User类

package com.bjpowernode.domain;



import java.util.Objects;


public class User {
    private Long id;
    private String name;
    private Integer age;

    public User(){
        System.out.println("create User");
    }

    public void MyInitMethod(){
        System.out.println("这是我自定义的初始化方法");
    }

    public void MyDestroyMethod(){
        System.out.println("这是我自定义的销毁方法");
    }

    public Long getId() {
        return id;
    }
```c
在这里插入代码片
public void setId(Long id) {
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public Integer getAge() {
    return age;
}

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


@Override
public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;
    User user = (User) o;
    return Objects.equals(id, user.id) && Objects.equals(name, user.name) && Objects.equals(age, user.age);
}

}

### 1.9.2 不加lazy-init="true"
配置文件
applicationContext9.xml

```c
<?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">

    <!--配置要交给Spring管理的类的信息
    class属性     配置类的全限定名
    id属性        给当前bean对象,标注一个唯一标识 当前文档中只有一个
    name属性      可以设置多个name的值
    scope属性     表示作用域(指对象的创建是单例还是多例),singleton单例(默认值),prototype多例
    lazy-init    初始化对象的延迟,默认为false

    -->
    <bean id="user1" name="u,u1,u2" class="com.bjpowernode.domain.User" scope="singleton" init-method="MyInitMethod" destroy-method="MyDestroyMethod" ></bean>

</beans>

测试类

  @Test
    public void testInitMethodAndDestroyMethod(){
        System.out.println("-------------------------初始化容器开始------------------------");
        ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext("applicationContext9.xml");
        System.out.println("--------------------------初始化容器结束-----------------------------");

        User UserClass = classPathXmlApplicationContext.getBean(User.class);
        System.out.println("UserClass = " + UserClass);

        classPathXmlApplicationContext.close();
    }

测试效果
在这里插入图片描述

1.9.3 加了lazy-init=“true”

配置文件
applicationContext10.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">

    <!--配置要交给Spring管理的类的信息
    class属性     配置类的全限定名
    id属性        给当前bean对象,标注一个唯一标识 当前文档中只有一个
    name属性      可以设置多个name的值
    scope属性     表示作用域(指对象的创建是单例还是多例),singleton单例(默认值),prototype多例
    lazy-init    初始化对象的延迟,默认为false

    -->
    <bean id="user1" name="u,u1,u2" class="com.bjpowernode.domain.User" scope="singleton" init-method="MyInitMethod" destroy-method="MyDestroyMethod" lazy-init="true"></bean>

</beans>

测试类

 @Test
    public void testInitMethodAndDestroyMethod_LazyInit(){
        System.out.println("-------------------------初始化容器开始------------------------");
        ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext("applicationContext10.xml");
        System.out.println("--------------------------初始化容器结束-----------------------------");

        User UserClass = classPathXmlApplicationContext.getBean(User.class);
        System.out.println("UserClass = " + UserClass);

        classPathXmlApplicationContext.close();
    }

测试效果
在这里插入图片描述

1.10 primary

1.10.1 配置文件

<?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">

    <!--配置要交给Spring管理的类的信息
    class属性     配置类的全限定名
    id属性        给当前bean对象,标注一个唯一标识 当前文档中只有一个
    name属性      可以设置多个name的值
    scope属性     表示作用域(指对象的创建是单例还是多例),singleton单例(默认值),prototype多例
    lazy-init    初始化对象的延迟,默认为false

    -->
    <bean id="user" name="u,u1,u2" class="com.bjpowernode.domain.User" depends-on="student" lazy-init="true"/>

    <bean id="student" class="com.bjpowernode.domain.Student" lazy-init="true" />

    <bean id="student1" class="com.bjpowernode.domain.Student" lazy-init="true" primary="true" >
        <property name="id" value="173020444"/>
        <property name="age" value="24"/>
        <property name="name" value="HHH"/>
    </bean>



</beans>


1.10.2 测试类

@Test
    public void testOPrimary(){
        ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext("applicationContext11.xml");
        Student student = classPathXmlApplicationContext.getBean(Student.class);
        System.out.println("student = " + student);

    }

1.10.3 测试效果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/340730.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

jetson nano(ubuntu)安装Cmake

文章目录安装环境一.命令行安装二.Cmake源码编译安装安装环境 jetson nano 系统&#xff1a;4.6.1 一.命令行安装 sudo apt install cmake这种直接安装cmake的方式&#xff0c;其实安装的版本都太老了&#xff0c;这种方式不推荐 二.Cmake源码编译安装 更新一下系统软件 su…

子词嵌入,词的相似性和类比任务

fastText模型提出了一种子词嵌入方法&#xff1a;基于word2vec中的跳元模型&#xff0c;它将中心词表示为其子词向量之和。 字节对编码执行训练数据集的统计分析&#xff0c;以发现词内的公共符号。作为一种贪心方法&#xff0c;字节对编码迭代地合并最频繁的连续符号对。 子…

文献阅读:Finetuned Language Models Are Zero-Shot Learners

文献阅读&#xff1a;Finetuned Language Models Are Zero-Shot Learners 1. 文章简介2. 方法介绍3. 实验 1. 数据集整理2. 基础实验3. 消解实验 1. finetune任务数量2. 模型size3. Instruct Tuning4. Few-Shot5. Prompt Tuning 4. 结论 文献链接&#xff1a;https://arxiv.o…

简单理解小目标分割中的weighted BCE Loss与weighted IoU Loss

这两个损失函数出自《FNet: Fusion, Feedback and Focus for Salient Object Detection》一文中&#xff0c;用于处理显著性检测(二分割)中小目标的问题。对于传统的BCE Loss&#xff0c;其存在以下三个问题&#xff1a; 只是简单的将每个像素求BCE再平均&#xff0c;忽视了目…

day5——冒泡排序,选择排序和插入排序的学习

选择排序冒泡排序插入排序 选择排序 选择排序的基本思路就是&#xff1a; 首先假定第一个的下表为所有元素中最小的一个&#xff0c; 然后用后面的每一个元素跟这个元素进行比较&#xff0c; 如果后面的元素比这个元素更小一点&#xff0c; 那么就将找到的最小的元素的下标和…

【c++】vector实现(源码剖析+手画图解)

vector是我接触的第一个容器&#xff0c;好好对待&#xff0c;好好珍惜&#xff01; 目录 文章目录 前言 二、vector如何实现 二、vector的迭代器&#xff08;原生指针&#xff09; 三、vector的数据结构 图解&#xff1a; 四、vector的构造及内存管理 1.push_back() …

《爆肝整理》保姆级系列教程python接口自动化(十二)--https请求(SSL)(详解)

简介 本来最新的requests库V2.13.0是支持https请求的&#xff0c;但是一般写脚本时候&#xff0c;我们会用抓包工具fiddler&#xff0c;这时候会 报&#xff1a;requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590) 小编…

C++:提高篇: 栈-寄存器和函数状态:windows X86-64寄存器介绍

寄存器1、什么是寄存器2、寄存器分类3、windows X86寄存器命名规则4、寄存器相关术语5、寄存器分类5.1、RAX(accumulator register)5.2、RBX(Base register)5.3、RDX(Data register)5.4、RCX(counter register)5.5、RSI(Source index)5.6、RDI(Destination index)5.7、RSP(stac…

iptables和nftables的使用

文章目录前言iptable简介iptable命令使用iptables的四表五链nftables简介nftables命令的时候nftables与iptables的区别iptables-legacy和iptables-nft实例将指定protocol:ip:port的流量转发到本地指定端口前言 本文展示了&#xff0c;iptables和nftable命令的使用。 # 实验环…

win10 安装rabbitMQ详细步骤

win10 安装rabbitMQ详细步骤 win10 安装rabbitMQ详细步骤win10 安装rabbitMQ详细步骤一、下载安装程序二、安装配置erlang三、安装rabbitMQ四、验证初始可以通过用户名&#xff1a;guest 密码guest来登录。报错&#xff1a;安装RabbitMQ出现Plugin configuration unchanged.问题…

力扣SQL刷题10

目录标题618. 学生地理信息报告--完全不会的新题型1097. 游戏玩法分析 V - 重难点1127. 用户购买平台--难且不会618. 学生地理信息报告–完全不会的新题型 max()函数的功效&#xff1a;&#xff08;‘jack’, null, null&#xff09;中得出‘jack’&#xff0c;&#xff08;nul…

基于微信小程序图书馆座位预约管理系统

开发工具&#xff1a;IDEA、微信小程序服务器&#xff1a;Tomcat9.0&#xff0c; jdk1.8项目构建&#xff1a;maven数据库&#xff1a;mysql5.7前端技术&#xff1a;vue、uniapp服务端技术&#xff1a;springbootmybatis本系统分微信小程序和管理后台两部分&#xff0c;项目采用…

索引的基本介绍

索引概述-优缺点 索引介绍&#xff1a;索引是一种高效获取数据的数据结构&#xff1b; 索引优点&#xff1a;提供查询效率&#xff1b;降低IO成本&#xff1b;怎么减低IO成本呢&#xff1f;因为数据库的数据是存放在磁盘的&#xff0c;你要操作数据就会涉及到磁盘IO&#xff0…

Windows11 安装Apache24全过程

Windows11 安装Apache24全过程 一、准备工作 1、apache-httpd-2.4.55-win64-VS17.zip - 蓝奏云 2、Visual Studio Code-x64-1.45.1.exe - 蓝奏云 二、实际操作 1、将下载好的zip文件解压放到指定好的文件夹。我的是D:\App\PHP下 个人习惯把版本号带上。方便检测错误。 2…

数组常使用的方法

1. join (原数组不受影响)该方法可以将数组里的元素,通过指定的分隔符,以字符串的形式连接起来。返回值:返回一个新的字符串const arr[1,3,4,2,5]console.log(arr.join(-)&#xff1b;//1-3-4-2-52. push该方法可以在数组的最后面,添加一个或者多个元素结构: arr.push(值)返回值…

(考研湖科大教书匠计算机网络)第四章网络层-第一、二节:网络层概述及其提供的服务

获取pdf&#xff1a;密码7281专栏目录首页&#xff1a;【专栏必读】考研湖科大教书匠计算机网络笔记导航 文章目录一&#xff1a;网络层概述&#xff08;1&#xff09;概述&#xff08;2&#xff09;学习内容二&#xff1a;网络层提供的两种服务&#xff08;1&#xff09;面向连…

nginx越界读取缓存漏洞(CVE-2017-7529)

range格式: Range: <unit><range-start>- Range: <unit><range-start>-<range-end> Range: <unit><range-start>-<range-end>, <range-start>-<range-end> range事例&#xff1a; Range: bytes500-999 //表示第…

Spring Security简介

前面我们已经完成了传智健康后台管理系统的部分功能&#xff0c;例如检查项管理、检查组管理、套餐管理、预 约设置等。接下来我们需要思考2个问题&#xff1a; 问题1&#xff1a;在生产环境下我们如果不登录后台系统就可以完成这些功能操作吗&#xff1f; 答案显然是否定的&am…

微前端-模块联邦

一、 Module Federation 模块联邦概述 Module Federation 即为模块联邦&#xff0c;是 Webpack 5 中新增的一项功能&#xff0c;可以实现跨应用共享模块。 二、快速上手 需求 通过模块联邦在容器应用中加载微应用。 应用结构 products ├── package-lock.json ├──…

程序的机器级表示part3——算术和逻辑操作

目录 1.加载有效地址 2. 整数运算指令 2.1 INC 和 DEC 2.2 NEG 2.3 ADD、SUB 和 IMUL 3. 布尔指令 3.1 AND 3.2 OR 3.3 XOR 3.4 NOT 4. 移位操作 4.1 算术左移和逻辑左移 4.2 算术右移和逻辑右移 5. 特殊的算术操作 1.加载有效地址 指令效果描述leaq S, DD…