为了账号安全,请及时绑定邮箱和手机立即绑定

Spring框架小白的蜕变

难度初级
时长 3小时50分
学习人数
综合评分9.77
78人评价 查看评价
9.7 内容实用
9.8 简洁易懂
9.8 逻辑清晰
  • 懒加载适用场景:

    如果某个Bean在程序整个运行周期都可能不会被使用,那么可考虑设定该Bean为懒加载。

    优点:尽可能的节省了资源。

    缺点:可能会导致某个操作响应时间增加。

    查看全部
    0 采集 收起 来源:Bean的懒加载

    2020-08-03

  • 实现懒加载的两种方式:

    • 为某个Bean设置懒加载

    • 为所有Bean设置懒加载

    查看全部
    0 采集 收起 来源:Bean的懒加载

    2020-08-03

  • Bean的懒加载概念:

    Spring容器会在创建容器时,提前初始化Singleton(单例)作用域的bean,但是如果Bean被标注了lazy-init=“true,则该Bean只有在其在被需要的时候才会被初始化。

    注意:只对Singleton(单例)作用域的bean有效,其他作用域如多例并不知道什么这个bean才会被需要实例化。

    查看全部
    0 采集 收起 来源:Bean的懒加载

    2020-08-03

  • 代码回顾

    SimpThreadScope

    查看全部
    0 采集 收起 来源: 自定义作用域

    2020-08-03

  • 代码回顾

    自定义作用域(spring.xml部分)

    查看全部
    0 采集 收起 来源: 自定义作用域

    2020-08-03

  • 代码回顾

    自定义作用域(自定义类部分)

    查看全部
    0 采集 收起 来源: 自定义作用域

    2020-08-03

  • 测试方法,如图

    创建线程的方法为

    new Thread(new Runnable() {
        @Override
        public void run() {
            Bean bean = context.getBean("bean",Bean.class);
            System.out.println("bean = " + bean);
        }
    }).start();


    查看全部
    0 采集 收起 来源: 自定义作用域

    2020-08-03

  • 使用SimpleThreadScope作用域

    该作用域的作用是,在每一个线程里spring会提供一个全新的实例。在同一个线程多次向spring上下文申请实例的时候spring会提供同一个实例。但如果在多个线程里面每一个线程都向spring上下文申请一个实例,那么spring会给每一个线程申请一个新的实例。

    先定义出SimpleThreadScope的实例

    <bean class="org.springframework.context.support.SimpleThreadScope" id="SimpleThreadScope"/>

    然后再在CustomScopeConfigurer的实例中加上

    <entry key="simplethreadScope" value-ref="SimpleThreadScope"/>
    查看全部
    0 采集 收起 来源: 自定义作用域

    2020-08-03

  • 在spring.xml中,修改

        <bean class="com.imooc.spring.ioc.class009.MyScope" id="myScope"/>
        <bean class="org.springframework.context.support.SimpleThreadScope" id="SimpleThreadScope"/>
        <bean class="org.springframework.beans.factory.config.CustomScopeConfigurer">
            <property name="scopes">
                <map>
                    <entry key="myScope" value-ref="myScope"/>
                </map>
            </property>
        </bean>
    
        <bean id="bean" class="com.imooc.spring.ioc.class009.Bean" scope="myScope"/>
    查看全部
    0 采集 收起 来源: 自定义作用域

    2020-08-03

  • 自定义作用域

    需要引用Scope接口,注意是

    import org.springframework.beans.factory.config.Scope;

    然后实现这个接口的方法。

    重点关注get 和 remove方法,如图为实现双例模式(每一个Bean对应两个实例)。

    public Object get(String s, ObjectFactory<?> objectFactory) {
        if(!map1.containsKey(s)){
            Object o = objectFactory.getObject();
            map1.put(s,o);
            return o;
        }
        if(!map2.containsKey(s)){
            Object o = objectFactory.getObject();
            map2.put(s,o);
            return o;
        }
        //若map1 和 map2都存在s,则随机返回一个
        int i = new Random().nextInt(2);//0 or 1
        if(i == 0){
            return map1.get(s);
        }else {
            return map2.get(s);
        }
    }
    
    public Object remove(String s) {
        if(map2.containsKey(s)){
            Object o=map2.get(s);
            map2.remove(s);
            return o;
        }
        if(map1.containsKey(s)){
            Object o=map1.get(s);
            map1.remove(s);
            return o;
        }
        return  null;
    }


    查看全部
    0 采集 收起 来源: 自定义作用域

    2020-08-03

  • 总结

    • reuqest:每个request请求都会创建一个单独的实例。

    • session:每个session都会创建一个单独的实例。

    • application:每个sercletContext都会创建一个单独的实例。

    • websocket:每个websocket链接都会创建一个单独的实例。

    查看全部
    0 采集 收起 来源:web相关作用域

    2020-08-03

  • 该测试需要配置好Tomcat...

    查看全部
    0 采集 收起 来源:web相关作用域

    2020-08-02

  • 之后在spring.xml中加上3个类的Bean

    查看全部
    0 采集 收起 来源:web相关作用域

    2020-08-02

  • 创建ApplicationController、RequestController、SessionController类

    修改RequestController类中代码,如图

    其余两个类也做相同修改,只不同

    @RequestMapping("testApplication")
    @RequestMapping("testSession")


    查看全部
    0 采集 收起 来源:web相关作用域

    2020-08-02

  • 在web.xml中配置spring的web上下文环境

    查看全部
    0 采集 收起 来源:web相关作用域

    2020-08-02

举报

0/150
提交
取消
课程须知
需要具备Java语法基础,了解Java Web基础知识。
老师告诉你能学到什么?
1、什么是IoC 2、Spring Bean的管理 3、什么是懒加载

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!