Java Web-Spring框架

1、几个框架简单介绍

2、Spring概念

Spring是一个开源的框架,是为了解决企业应用开发的复杂性而创建的。该框架的一个主要优势是其分层架构,Spring的核心是控制反转(IoC)和面向切面(AOP)

分层:web层(struts、spring-MVC)、service层(spring)、dao层(hibernate、mybatis、jdbcTemplate)

优点:方便解耦,简化开发。Spring就是一个大工厂(容器),用于生成bean,可以将所有对象创建和依赖关系维护,交给Spring管理;只需要通过配置就可以对事务进行管理,无需手动编程;等。

体系结构

核心容器:beans、core、context、expression

3、入门案例:IoC

一、导入jar包

4 + 1:四个核心、一个依赖

二、目标类

  • 提供UserService接口和实现类
  • 获得UserService实现类的实例
    之前的开发中,直接new一个对象即可。学习Spring之后,将由Spring创建对象实例,即IoC控制反转(Inverse of Control)。之后,需要实例对象时,从Spring工厂(容器)中获得,需要将实现类的全限定名称配置到xml文件中。
    创建接口类和接口实现类,如图:

三、配置文件

位置:任意,开发中一般在classpath下(src)
名称:任意,开发中常用applicationContext.xml
内容:添加schema约束
如图,第一张是全限定名称复制过程,第二张是配置文件内容。


四、测试

建立测试文件,如图:

4、入门案例:DI(依赖注入)

描述

DI(Dependency Injection),依赖注入。
is a :是一个,继承
has a :有一个成员变量,依赖

class B{
      private A a;    // B类依赖A类
}

依赖:一个对象需要使用另一个对象
注入:通过setter方法进行另一个对象实例设置。
例如:

class BookServiceImpl{
      //之前开发:接口=实现类(service和dao耦合)
      //private BookDao bookDao = new BookDaoImpl();
      //Spring之后(解耦:service实现类使用dao接口,不知道具体的实现类)
      private BookDao bookDao
      setter方法
}


一、 目标类

  • 创建BookService接口和实现类
  • 创建BookDao接口和实现类
  • 将dao和service配置到xml文件中
  • 使用api测试

dao

service


二、配置文件

三 、测试

总结,整个过程相当于通过一系列配置、编程实现了bookService可以直接调用addBook

5、核心API

API整体了解,之后不再使用,在学习过程中需要。

6、装配Bean基于XML

6.1、实例化方式

3种bean实例化方式:默认构造、静态工厂、实例工厂

一、默认构造

之前所有的都属于默认构造。

二、静态工厂

  • 常用于Spring整合其他框架(工具)。
  • 用于生成实例对象,所有的方法必须是static。
  • 配置如图:

    工厂

    spring配置

    再往后的开发中,工厂是别人已经写好的,需要写的是配置信息。相当于把别人的工厂拿来,说下方法名,把生产后的东西给spring,然后我们可以通过spring拿。如图:

三、实例工厂

  • 实例工厂,必须先有工厂实例对象,通过实例对象创建对象。提供所有的方法都是“非静态”的。

工厂

spring配置



6.2、Bean种类

6.3、作用域

作用域:用于确定spring创建bean实例个数。

取值:

singleton,单例,默认值。
prototype,多例,每执行一次getBean将获得一个实例。例如,struts整合spring,配置action多例。

配置信息:

6.4、生命周期

一、初始化和销毁

  • 目标方法执行前或执行后,将进行初始化或销毁。

    目标类

    spring配置

    测试

二、BeanPostProcessor(后处理Bean)

  • Spring提供了一种机制,只要实现此接口 BeanPostProcessor,并将实现类提供给spring容器,spring容器将自动执行,在初始化方法执行前执行befre(),在初始化方法后执行after()。配置信息
  • spring提供的工厂钩子,用来修改实例对象,可以生成代理对象,是AOP底层。

    编写实现类



    配置
  • 问题一:后处理bean作用某一个目标类,还是所有目标类?
    所有
  • 问题二:如何只作用一个?
    通过 “参数2” beanName进行控制

6.5、属性依赖注入

  • 依赖注入方式:手动装配 和 自动装配
  • 手动装配:一般进行配置信息都采用手动,基于xml装配:构造方法、setter方法;基于注解装配。
  • 自动装配:struts 和spring整合可以自动装配,byType:按类型装配;byName:按名称装配;constructor:构造装配;auto:不确定装配。

一、构造方法

目标类

spring配置

二、setter方法



三、P命名空间(了解)

  • 对 “setter方法注入” 进行简化,替换,而是在<bean p:属性名=“普通值”
    p:属性名-ref=“引用值”>
  • p命名空间使用的前提,必须添加命名空间


    四、SpEL(了解)


    6.6、集合注入


7、装配Bean基于注解

  • 注解:就是一个类,使用@注解名称
  • 开发中:使用注解取代 xml 配置文件。
  • 注解使用时前提,添加命名空间,让spring扫描含有注解的类,如图:

schema命名空间(回顾)

a、命名空间声明
默认:xmlns="" <标签名> -->
显示:xmlns:别名="" <别名:标签名> --> context:...
b、确定schema.xsd文件位置
xsi:schemaLocation=“名称 位置 名称2 位置2…”
内容都是成对[名称 位置]

一、@Component 取代

如图:


二、web开发中,提供了3个@Component 注解的衍生注解(功能一样)

@Repository : dao层
@Service : service层
@Controller : web层

三、依赖注入,给私有字段设置,也可以给setter方法设置

普通值:@Value("")
引用值:

四、例子

测试类,程序的入口,如下图:

根据测试类,进入action(StudentAction.java),如下图:

上图中,@Controller(“studentActionId”)取代的是bean的配置。接下来程序进入service层,如下图:

上图中@Service的含义如图:

接下来,程序进入dao层

关系如下图:

五、生命周期

两个注解,一个是初始化:@PostConstruct;另一个是销毁:@PreDestroy

六、作用域

@Scope(“prototype”) 多例

发布了25 篇原创文章 · 获赞 3 · 访问量 1323

猜你喜欢

转载自blog.csdn.net/Ydecube/article/details/95161373