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

Spring注解开发-02-Bean的作用范围和生命周期

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

Spring注解开发-02-Bean的作用范围和生命周期

一、@Scope

1、@Scope注解是springIoc容器中的一个作用域

2、Spring IoC 容器中具有以下几种作用域:基本作用域singleton(单例)、prototype(多例),Web 作用域(reqeust、session、globalsession),自定义作用域

常用的是:singleton(单例)、prototype(多例)

3、使用默认的@Scope

package com.gg.dao.impl;

import com.gg.dao.BookDao;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Repository;


@Repository("bookDao")
@Scope
public class BookDaoImpl implements BookDao {
    @Override
    public void save() {
        System.out.println("book dao save");
    }
}

测试

package com.gg;

import com.gg.config.SpringConfig;
import com.gg.dao.BookDao;
import com.gg.service.BookService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;


public class App2 {
    public static void main(String[] args) {
        ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);
        //  使用id获取
        BookDao bookDao = (BookDao) context.getBean("bookDao");
        BookDao bookDao2 = (BookDao) context.getBean("bookDao");
        System.out.println(bookDao);
        System.out.println(bookDao2);
    }
}

 测试结果

 4、使用prototype(多例)

给@Scope设置作用域

 测试结果

 二、Bean的生命周期

@PostConstruct:这个注解是由Java提供的,它用来修饰一个非静态的void方法。它会在服务器加载Servlet的时候运行,并且只运行一次。

@PreDestroy:@PreDestroy修饰的方法会在服务器卸载Servlet的时候运行,并且只会被服务器调用一次,类似于Servlet的destroy()方法。被@PreDestroy修饰的方法会在destroy()方法之后运行,在Servlet被彻底卸载之前。执行顺序如下所示。

package com.gg.dao.impl;

import com.gg.dao.BookDao;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Repository;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;


@Repository("bookDao")
public class BookDaoImpl implements BookDao {
    @Override
    public void save() {
        System.out.println("book dao save");
    }

    @PostConstruct
    void init(){
        System.out.println("初始化.....");
    }
    @PreDestroy
    void destroy(){
        System.out.println("销毁");
    }
}
package com.gg;

import com.gg.config.SpringConfig;
import com.gg.dao.BookDao;
import com.gg.service.BookService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;


public class App2 {
    public static void main(String[] args) {
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);
        //  使用id获取
        BookDao bookDao = (BookDao) context.getBean("bookDao");
        System.out.println(bookDao);
        context.close();
    }
}

执行结果

 

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

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

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