ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Spring1

2021-06-25 23:04:01  阅读:132  来源: 互联网

标签:Foo 对象 Spring Bean 创建 Spring1 JavaBean


一、Spring简介

Spring 是开源组织, 提供了一套软件解决方法, 其中包括
- Spring Framework: Spring 框架
- SpringBoot Spring框架的启动器
- Spring WebMVC
- Spring Cloud 等

学习路径: Spring Framework -> SpringBoot -> SpringMVC

使用Spring可以大大简化java软件的开发.

二、Spring Framework简介

Spring 框架, 有时候说的Spring就是特指Spring Framework.

Spring 框架, 是spring软件家族的核心, 提供了两大核心功能:

  • IoC/DI 控制反转/依赖注入
  • AOP 面向切面编程

三、IoC控制反转

控制反转:将对象的创建管理工作交出去,在使用对象的时候直接拿到对象后直接使用。

软件中:

  一般情况下简单对象使用主动控制方式创建管理对象

  一般情况下复杂对象使用控制反转的方式创建管理对象,可以简化开发过程。

Spring 框架提供了IOC功能: 创建控制管理对象, 在软件需要使用的时候, 可以从Spring中获取这个对象。

四、Spring IoC 使用步骤

1.创建maven项目导入spring框架核心包

2.声明一个JavaBean类

3.声明一个配置类, 在配置类中告诉Spring创建JavaBean对象

4.创建并初始化spring对象(构造器参数中填入配置类的类对象(例如:Context.class)),再启动spring, Spring会根据配置类, 自动创建管理的对象。

5.通过JavaBean类型或者类型和ID从Spring中获取创建好的JavaBean对象。

  例如:Foo foo=getBean(Foo.class);

注意:

  (1)创建JavaBean对象规则:

      ①需要定义包

      ②必须声明无参构造器,可以是默认构造器

      ③需要实现序列化接口Serializable

      ④使用getset方法访问属性

  (2)声明配置类:

 

      ①需要定义包

 

      ②使用spring提供的注解 @Configuration 标注在spring的配置类上,表示当前类是一个配置类。

 

      ③类名无限制

 

  (3)spring管理JavaBean对象的两种方法

 

      ①@Bean

        * 是Spring提供的注解,表示在Spring中管理一个对象;

        * 方法名无限制;

        * 方法的返回值就是IoC创建的对象;

        * Spring 启动的时候会自动调用该方法创建JavaBean类型的对象

        * 在配置类中使用

 

 

      ②@ComponentScan("包名")

 

        * 标注在配置类上,打开组件扫描功能,扫描参数的包和其子包中的类,如果类上标注了 @Component 注解,就会创建该类型的实例;

        * @Component 注解:标注在JavaBean上,当Spring 的组件扫描功能打开后并且扫描到标注了这个组件的类的时候,就会在Spring中创建一个这个JavaBean的类的对象;

 

  (4)对象的ID:

 

      在Spring中可声明两个以上类型相同的JavaBean对象

    @Bean
    public Foo foo(){
        return new Foo();
    }

    @Bean
    public Foo foo1(){
        return new Foo();
    }

 

      ②当声明两个以上类型相同的JavaBean对象时,如果调用getBean(Foo.class), 按照类型查找Foo对象, 则发生异常:

     No qualifying bean of type 'cn.tedu.bean.Foo' available: expected single matching bean but found 2: foo,foo1

 

      ③解决办法:

      * 利用对象的ID和类型获取指定的一个对象

      * 默认情况下创建对象方法的名称, 是对象的ID

对象 = ctx.getBean("对象ID", 对象类型);
Foo foo = ctx.getBean("foo1", Foo.class);

      ④Bean名称(Bean ID )的规则:

      * @Bean注解声明的JavaBean其Bean名称(BeanID) 是方法名称

      * @Component声明的JavaBean其名称:

        * 如果是标准的驼峰命名法, 则Bean 名称是类名首字母小写:

            如类名ExampleBean 则 Bean名称为 exampleBean

        * 如果类名中有连续两个以上大写字母, 则Bean名称为类名

            如类名 MYTestBean则Bean名称为 MYTestBean

        * @Component("自定义BeanID") 利用注解参数修改Bean名称

  (4)单例、多例:

      ① Spring 默认情况下, 其按照单例规则管理对象

        * Spring在容器启动时候, 会自动创建对象

        * 任何时候 getBean获取的对象都是同一个对象的引用

        * 在声明对象时候, 使用 @Scope("prototype")注解, Spring就按照多例管理对象, getBean获取的对象都是一个新的对象引用。

        * 尽量使用Spring提供的默认规则. 使用单例对象, 被重复使用.

        * 如果程序需要使用多个实例时候, 添加注解 @Scope("prototype")

 

 

 

 

 

 

 

标签:Foo,对象,Spring,Bean,创建,Spring1,JavaBean
来源: https://www.cnblogs.com/LJia-bky/p/14927017.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有