Spring框架学习笔记(一)

一,Spring概述.

  •  Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,
  •  它是为了解决企业应用开发的复杂性而创建的.
  •  简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

   1.1,Spring的优点:

方便解耦,简化开发:

  • Spring就是一个大工厂(用于装很多对象,避免再次创建),专门负责生成Bean【Bean其实就是一个new好的对象】,可以将所有对象创建和依赖关系维护由Spring管理

AOP编程的支持:

  • Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能
  • 声明式事务的支持:
  • 只需要通过配置就可以完成对事务的管理,而无需手动编程

方便程序的测试:

  • Spring对Junit4支持,可以通过注解方便的测试Spring程序

方便集成各种优秀框架:

  • Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的支持

降低JavaEE API的使用难度 Spring:

  • 对JavaEE开发中一些难用的API(JDBC、JavaMail、远程调webservice用等),都提供了封装,使这些API应用难度大大降低

1.2 Spring体系结构

  Spring 框架是一个分层架构,,它包含一系列的功能要素并被分为大约20个模块。这些模块分为Core Container、Data Access/Integration、Web、AOP(Aspect Oriented Programming)、Instrumentation和测试部分,如下图所示:

web层:Struts,SpringMVC

dao层:Hibernate,mybatis

Spring框架学习笔记(一)_第1张图片

2. Spring入门  Spring官网(Spring.io)

如何在spring官网下载Jar包:

我参考的是这篇博客挺全的:spring官网下载Jar包教程

Jar包所在的位置:http://repo.spring.io/libs-release-local/

  • 下载Spring 开发包 Spring3.2.0下载地址
  • 导入Spring的jar包
  • 配置Spring的核心xml文件
  •  在程序中读取Spring的配置文件来获取Bean

Spring框架学习笔记(一)_第2张图片

2.1 Spring核心 .jar包及其作用

spring-core-3.2.2.RELEASE.jar

包含Spring框架基本的核心工具类,Spring其它组件要都要使用到这个包里的类,是其它组件的基本核心。

spring-beans-3.2.2.RELEASE.jar

所有应用都要用到的,它包含访问配置文件、创建和管理bean

以及进行Inversion of Control(IoC) / Dependency Injection(DI)操作相关的所有类

spring-context-3.2.2.RELEASE.jar

Spring提供在基础IoC功能上的扩展服务,此外还提供许多企业级服务的支持,

如邮件服务、任务调度、JNDI定位、EJB集成、远程访问、缓存以及各种视图层框架的封装等。

spring-expression-3.2.2.RELEASE.jar

Spring表达式语言

com.springsource.org.apache.commons.logging-1.1.1.jar

第三方的主要用于处理日志

jar升级后的配置:

红色标明的jar包.是spring框架开发的基础jar包. 必要jar包.
spring-core-4.1.6.RELEASE.jar
框架核心jar包.
spring-beans-4.1.6.RELEASE.jar
框架核心jar包. 管理bean对象的. 在Spring框架中,将所有管理的资源统称为bean.
spring-context-4.1.6.RELEASE.jar
spring-context-support-4.1.6.RELEASE.jar
上下文支持jar包.
spring-aop-4.1.6.RELEASE.jar
spring-aspects-4.1.6.RELEASE.jar
面向对象编程使用的jar包
spring-expression-4.1.6.RELEASE.jar
SpringEL表达式相关jar包.
spring-jdbc-4.1.6.RELEASE.jar
spring-orm-4.1.6.RELEASE.jar
spring-tx-4.1.6.RELEASE.jar
数据访问层框架需要的支持jar包.用于处理JDBC链接, ORM映射框架支持和事务管理.

spring-web-4.1.6.RELEASE.jar
网络支持jar包. 可以使用Spring框架的支持开发Servlet代码.
spring-webmvc-4.1.6.RELEASE.jar
SpringMVC插件框架. 是一个MVC控制层框架.
spring-instrument-4.1.6.RELEASE.jar
spring-instrument-tomcat-4.1.6.RELEASE.jar

插件开发的jar包.
spring-jms-4.1.6.RELEASE.jar
spring-messaging-4.1.6.RELEASE.jar
java message service辅助jar包. 学习ActiveMQ的时候,需要使用的jar包.
spring-oxm-4.1.6.RELEASE.jar
Object XML Mapping映射jar包. 类似ORM.
spring-test-4.1.6.RELEASE.jar
Spring提供的测试插件, 类似Junit.
spring-webmvc-portlet-4.1.6.RELEASE.jar
使用portlet设计思想,架构的MVC控制层框架. 类似SpringMVC.
spring-websocket-4.1.6.RELEASE.jar

使用java代码,开发基于HTTP协议的网络应用. 如: 开发一个Tomcat.支持TCP/IP协议,UDP协议等.

IDEA高效编码

psvm 加ab键   mian方法快速生成

sout 加tab键   输出打印快捷键

alt+insert      快速生成get  set 方法

总结

【Ioc】:

      IoC   >反转控制的概念,就是将原本在程序中手动创建UserService对象的控制权,交由Spring框架管理,简单说,就是创建UserService对象控制权被反转到了Spring框架

                     

【DI】:

Dependency Injection 依赖注入,在Spring框架负责创建Bean对象时,动态的将依赖对象注入到Bean组件。

    eg; 在UserService中提供一个get/set的name方法,在beans.xml中通过property去注入

        Spring框架学习笔记(一)_第3张图片

        

       相当于 UserService service=new UserService();

                    service.setName(" ");

3.加载Spring容器的三种方式

    (1)类路径获得配置文件

         ApplicationContext context = new ClassPathXmlApplicationContext(" beans.xml");

    (2)文件系统路径获得获得配置文件

        ApplicationContext context=new FileSystemXmlApplicationContext(" src\\beans.xml");

    (3)使用BeanFactory(了解,已经过时了)

4,BeanFactory和ApplicationContext对比

  • BeanFactory 采取延迟加载,第一次getBean时才会初始化Bean调用构造方法
  • ApplicationContext是对BeanFactory扩展,提供了更多功能
  1. 国际化处理
  2. 事件传递
  3. Bean自动装配
  4. 各种不同应用层的Context实现

5,装配Bean(xml)

实例化Bean的三种方式

  1.   使用构造方法实例化
  2.   使用静态工厂方法实例化
  3.   实例工厂方法实例化

Bean.xml


 
 

 
 
 
 
 
 



等价于  第三种 实例化工厂方式

       Spring框架学习笔记(一)_第4张图片

test

@Test
public void test1(){
    ApplicationContext context = new ClassPathXmlApplicationContext("beans3.xml");

    //new 对象
    //IUserService userService1 = (IUserService) context.getBean("userService1");
    //userService1.add();


    //静态工厂
    //IUserService userService2 = UserSereviceFactory1.createUserService();
    //IUserService userService2 = (IUserService) context.getBean("userService2");
    //userService2.add();


    //实例工厂
    //1.创建工厂
   // UserSereviceFactory2 factory2 = new UserSereviceFactory2();
    //IUserService userService3 = factory2.createUserService();

    IUserService userService3 = (IUserService) context.getBean("userService3");
    userService3.add();
}

 

bean的作用域

  掌握红色两个常用的即可

类别

说明

singleton

在Spring IoC容器中仅存在一个Bean实例,Bean以单例方式存在,默认值

prototype

每次从容器中调用Bean时,都返回一个新的实例,即每次调用getBean()时 ,相当于执行new XxxBean()

request

每次HTTP请求都会创建一个新的Bean,该作用域仅适用于WebApplicationContext环境

session

同一个HTTP Session 共享一个Bean,不同Session使用不同Bean,仅适用于WebApplicationContext 环境

globalSession

一般用于Portlet应用环境,该作用域仅适用于WebApplicationContext 环境

案例

Spring框架学习笔记(一)_第5张图片

Spring框架学习笔记(一)_第6张图片

bean的生命周期

              Spring框架学习笔记(一)_第7张图片

生命周期图解释

1.instantiate bean对象实例化

2.populate properties 封装属性

3.如果Bean实现BeanNameAware 执行 setBeanName

4.如果Bean实现BeanFactoryAware 执行setBeanFactory ,获取Spring容器

5.如果存在类实现 BeanPostProcessor(后处理Bean) ,执行postProcessBeforeInitialization

6.如果Bean实现InitializingBean 执行 afterPropertiesSet

7.调用 指定初始化方法 init

8.如果存在类实现 BeanPostProcessor(处理Bean) ,执行postProcessAfterInitialization

执行业务处理

9.如果Bean实现 DisposableBean 执行 destroy

101.调用 指定销毁方法 customerDestroy

 

 

依赖注入Bean属性(xml)

手动装配,使用xml配置

   一,构造方法注入

         Spring框架学习笔记(一)_第8张图片

          Spring框架学习笔记(一)_第9张图片

二,属性setter方法注入

setter方法有两种注入,一般使用第一种直观

Spring框架学习笔记(一)_第10张图片

三,p命名空间注入【了解】

Spring框架学习笔记(一)_第11张图片

Spring框架学习笔记(一)_第12张图片

 

你可能感兴趣的:(Spring)