Spring入门

目录

  • Spring简介
  • Bean的自动配置

Spring简介

  Spring是为了解决企业应用开发的复杂度,是一个轻量级的控制反转(将对象的创建权反转给Spring)和面向切面的容器

  • 从大小与开销两方面而言Spring都是轻量的,完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。
  • 通过控制反转(IOC)的技术达到松耦合的目的
  • 提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务进行内聚性的开发
  • 包含并并管理应用对象的配置和声明周期,这个意义上是一种容器
  • 将简单的组件配置,组合成复杂的应用,这个意义上是一种框架

  IOC:控制反转,控制权的转移,应用程序本身不负责依赖对象的创建和维护,而是由外部容器负责创建和维护

  DI:依赖注入,是其一种实现方式

  目的:创建对象并且组装对象之间的关系

特点

  1. 容器
    Spring是一个轻量级容易,可以管理对象的生命周期、对象与对象之间的依赖关系。可以通过配置文件来定义对象,以及设置其他对象的依赖关系
  2. IOC
    控制反转(Inversion of control),即创建被调用的实例不是由调用者完成,而是由Sprig容器完成,并注入调用者
  3. AOP
    面向切面编程,是一种编程思想,通过分离应用的业务逻辑与系统服务(日志和事务管理)进行开发。应用对象只需要完成业务逻辑,并不负责系统级的关注点。可以把日志、安全、事务管理等服务理解成一个“切面”,把很多被业务逻辑反复使用的服务完全剥离出来,以达到复用。然后将“切面”动态的“织入”到业务逻辑中,让其享受此“切面”的服务
  4. 非侵入编程
    Spring框架的API不会出现在业务逻辑上,即业务逻辑是POJO。由于业务逻辑中没有Spring的API,所以业务逻辑可以从Spring移植到其他框架上,基于Spring开发的应用对象不依赖于Spring的API

优点

  • 方便解耦,简化开发
    Spring就是一个容器,管理着所有对象的创建和依赖关系维护
  • AOP面向切面编程
    Spring提供面向切面编程,可以实现对程序的权限拦截、运行监控等功能
  • 声明式事务的支持
    只需要通过配置就可以完成对事务的管理,而无需手动编程
  • 方便集成各种优秀的框架
    Spring其内部提供了对各种优秀框架的支持(Struts、Hiberbate、Mybatis、Quartz等)
  • 降低Java EE开发中难用的API
  • Spring对Java EE开发中难用的API(JDBC、JavaMall、远程调用等),都提供了封装,降低了操作难度

作用

  • 容器
  • 提供了对多种技术的支持
    • JMS、MQ支持、UnitTest
  • AOP(事务管理、日志)
  • 提供了众多方便应用的辅助类(JDBC Template等)
  • 对主流应用框架提供了良好的支持

Spring注入

  Spring注入是指在启动Spring容器加载bean配置的时候,完成对变量赋值行为

  常用的两种注入方式

  • 属性注入
  • 构造注入

属性注入

  • 属性注入即通过setter方法注入Bean的属性值或依赖的对象
  • 属性注入使<property>元素,使用name属性指定Bean的属性名称,value属性或<value>子节点指定属性值
  • 属性注入是实际应用中最常用的注入方式
<!--  通过全类名的方式配置bean-->
    <bean id="helloWorld" class="com.atguigu.spring.beans.HelloWorld">
            <property name="name" value="Spring"></property>
    </bean>

构造方法注入

  • 通过构造方法注入Bean的属性值或依赖对象,它保证了Bean实例在实例化后就可以使用。
  • 构造器注入在<constructor-arg>元素里声明属性,<constructor-arg>中没有name属性
<!-- 通过构造方法来配置bean的属性 -->
    <bean id="car" class="com.atguigu.spring.beans.Car">
            <constructor-arg value="ordi" index="0"></constructor-arg>
            <constructor-arg value="3000" index="1"></constructor-arg>
    </bean>

 

 

应用

搭建Spring开发环境:
把以下jar包加入到工程的classPath下:
commons-logging-.jar
spring-beans.jar
spring-aop.jar
spring-core.jar
spring-expression.jar

Spring的配置文件:一个典型的Spring项目需要创建一个或多个Bean配置文件,这些配置文件用于Spring IOC容器里配置Bean。Bean的配置文件可以方法在classpath下,也可以放在其他目录下。

HelloWord类

public class HelloWorld {
    private String name;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public void hello() {
        System.out.println("hello:"+name);
    }
}
View Code

由调用者本身创建

public class Main {
    public static void main(String[] args) {
        HelloWorld helloWorld=new HelloWorld();
        helloWorld.setName("atguigu");
    此时这两步交给Spring管理
    
        //调用hello方法
        helloWorld.hello();        
    }

  -->hello:atguigu

将对象的创建和属性的赋值交给Spring来管理

  1. 在src路径下创建名为applicationContext.xml的Spring Bean Configration File
  2. 在XML文件中配置Bean
    <!--  配置bean-->
        <bean id="helloWorld" class="com.atguigu.spring.beans.HelloWorld">
                <property name="name" value="Spring"></property>
        </bean>
        用反射的方式,用id标识这个对象
        将name值赋为Spring,
  3. 调用方式
    //1、创建Spring的IOC容器对象
    ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
            
    //2、从IOC容器中获取Bean示例
    HelloWorld helloWorld=(HelloWorld)ctx.getBean("helloWorld");
            
     //调用hello方法
    helloWorld.hello();
    当ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml")时,IOC容器它会自动初始化类的构造方法和对属性进行赋值

 

本文转发整合:

  

posted @ 2019-07-21 11:43  echola_mendes  阅读(137)  评论(0)    收藏  举报