Spring1

一、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")

 

 

 

 

 

 

 

上一篇:4-2 SpringBoot properties 配置 置入JavaBean中


下一篇:JSP+Servlet+JavaBean模式+实现登录注册