栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring框架——懒惰初始化+@Import

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring框架——懒惰初始化+@Import

Spring默认在启动后立即将Bean实例化,可立即使用,要用可以直接拿来用,但是缺点是浪费了资源,占用内存

针对这个问题,Spring提供了懒惰初始化的功能,使用注解@Lazy,可以在需要对象时才初始化对象,不使用的时候就可以不初始化对象,避免浪费。

@Lazy用法 1.与@Component一起用

实现代码

Bean组件

package cn.tedu.demo;

import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component;

@Component
@Lazy
public class Person {
    public Person(){
        System.out.println("创建Person");
    }

    @Override
    public String toString() {
        return "你好";
    }
}

 测试

@Test
    public void testLazy(){
        Person person=a.getBean("person", Person.class);
        System.out.println(person);
        System.out.println("ok");
    }

 结果

问题:

 为什么使用了@Lazy注解还是出现了Person构造器的打印语句??因为使用了Person类

为什么还会出现其他类的打印语句??因为扫描组件会扫描所有加有@Component注解的类,并出创建实例化对象

如何解决??加@Lazy注解,相当于与@Component注解一起出现

2.与@Bean一起用

测试代码

package cn.tedu.demo;

public class Student {
    public Student(){
        System.out.println("创建Student");
    }

    @Override
    public String toString() {
        return "你好";
    }
}

Config文件

@Bean
    @Lazy
    public Student getStudent(){
        return new Student();
    }

测试

 @Test
    public void testLazy2(){
        Student student=a.getBean("getStudent",Student.class);
        System.out.println(student);
        System.out.println("okkk");
    }
@import注解导入配置

Spring允许创建多个配置类,利用@import注解可以同时使用多个注解

 测试代码:

新建配置文件

package cn.tedu.sys;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.Date;

@Configuration
public class SysConfig {
    @Bean
    public Date getDate(){
        return new Date();
    }
}

主配置文件添加注解

@import({cn.tedu.sys.SysConfig.class})

测试

  @Test
    public void testSys(){
        Date date=a.getBean("getDate", Date.class);
        System.out.println(date);
    }

结果

 说明@import注解生效

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/298566.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号