Spring框架概要

来源:互联网 发布:20级研究所升级数据 编辑:程序博客网 时间:2024/06/05 02:56

1、框架是软件的半成品,将常用的代码模型化,用于代码复用。Java Web开发构图如下,其中包括Spring集成框架及SSH框架。


2、Spring发明者是Rode Johnson,此人本科为计算机,硕士和博士为音乐专业。开发当时是SUN公司的EJB大行其道,但该框架太为复杂,于是此人独自开发了Spring框架,后被纳入SUN公司管理。

3、Spring是一个轻量级的用来解决企业级开发的开源框架,可以帮我们简化开发,进行模块解耦,可以集成其他框架使用,如任务调度框架(Quartz)。

4、Spring容器用于管理对象,可以创建对象(无参构造器、静态工厂方法、实例工厂方法)、管理对象的生命周期(init-method="",destroy-method="")、作用域管理(scope="singleton"默认值,scope="prototype")、延迟加载(lazy-init="true")、建立对象之间的依赖关系。编程的时候就是接口,Spring容器有BeanFactory和ApplicationContext两种接口,ApplicationContext继承自BeanFactory接口。

5、(1)Spring IOC:控制反转,管理对象及对象的关系,降低他们的耦合度。对象的依赖关系交给容器来管理(传统做法:对象的依赖关系由对象自己来负责)。IOC是其他功能的基础。Spring容器是IOC的核心。

             DI:依赖注入,容器通过调用对象的set方法或者构造器来建立依赖关系。<1>set方法方式:需要有无参构造器和set方法<property name="" value=.../><2>构造器方式:有对应的构造器<constructor-arg index="".../><3>自动装配方式:byName、byType(如果有多个符合类型的,会报错)、constructor(底层调构造器)。 依赖注入的类型应该用接口类型。

     (2)Spring AOP:面向切面(方面)编程。Filter可以统一处理多个Servlet共同的业务,AOP可以统一处理一切对象的共同业务,可以降低共同业务和对象之间的耦合度。

     (3)Spring MVC:自动实现MVC,给代码分层,进一步降低Servlet及JSP内部的耦合度。

     (4)Spring JDBC:Spring对JDBC的封装,提高开发效率。

     (5)Spring MyBatis:Spring可以整合MyBatis,提高开发效率,降低核心对象的耦合度。

     (6)Spring Hibernate:Spring可以整合Hibernate,提高开发效率,降低核心对象的耦合度。

     (7)Spring Struts2:Spring可以整合Struts2,提高开发效率,降低核心对象的耦合度。

6、Spring容器创建Bean对象的方法有3种:用构造器来实例化、使用静态工厂方法实例化、使用实例工厂方法实例化。

     (1)用构造器实例化:用构造器创建Bean对象示例图如下:


     (2)通过静态工厂方法创建对象:调用某类的静态方法来创建对象。

     (3)通过实例工厂方法创建对象:调用某类的非静态方法来创建对象。

7、Spring IOC是由依赖注入(DI)实现的,包括2种注入方式:setter注入、构造器注入。

     (1)setter注入:通过bean的set方法给bean注入参数。 

     (2)构造器注入:通过bean的构造器(有参构造器),给它注入参数,这种注入方式比setter更严格,往往是为了强制注入这些参数,即这些参数只能取这些值。

     自动装配主要包括byName和byType,底层是通过setter注入实现的。

     参数值注入通过bean对象的set方法,即setter注入方式实现的。

8、基于注解的配置

     组件扫描:Spring容器启动之后,会读取配置文件,如果配置文件中配置了<context:component-scan base-package="com"/>,即组件扫描,则容器会扫描com包及其子包下面所有的类,如果该类包含了特定的注解,则容器会将这个类纳入容器进行管理(相当于在配置文件中,配置了一个bean)。

     @Component:通用注解,所有层都可以用。

     @Repository:持久化层组件注解。

     @Service:业务层组件注解。

     @Controller:控制层组件注解。

     如何进行组件扫描?

     step1. 在配置文件当中,添加<context:component-scan base-package="com"/>。

     step2. 在类名前,添加上述注解,使用ref属性注入该集合。

     对象管理的注解:

     @Scope:作用域,singleton或prototype。

     @Lazy:true表示延迟加载,false表示立即加载,默认值。

     @PostConstruct:初始化方法。该方法所在的包来自于JavaEE,或者Tomcat,而不在Spring中。

     @PreDestroy:销毁方法。该方法所在的包来自于JavaEE,或者Tomcat,而不在Spring中。

     依赖注入的注解:

     使用@Autowired来完成依赖注入(set方法):@Autowired/@Qualifier:set方法前放@Autowired,set方法的参数对象前放@Qualifier。默认情况下,如果没有指定被注入的bean的id,则它会按照byType方式注入,如果这样的类型有多个,会报错,所以用@Qualifier("")指定id,即按照byName方式注入。@Autowired和@Qualifier("")也可以放在属性前面,底层用Java的反射机制,自己不用写set方法,但也只能实现赋值,不能像前一种方法在set方法中写其他代码。

     使用@Autowired来完成依赖注入(构造器方式):@Autowired/@Qualifier:类的带参构造器前面放@Autowired,参数前面放@Qualifier。

     @Resource:只能处理Setter注入,但大部分情况都是Setter注入。该注解来自JavaEE,但Spring也支持。@Resource(name="wt"),name属性指定被注入的bean的id,如果不指定,会按照byType的方式来注入。该注解可以添加到set方法前面或者属性前面。

     使用注解的方式来运用Spring表达式。

     @Value("#{config.pagesize}")可以放在pagesize属性前,也可以放在set方法前,用于为属性注入值。


0 0
原创粉丝点击