-------------------------------------------------------------------------------------------------------------------------------------
spring简介:
struts是web层的框架,hibernate是持久层框架,spring是综合层。spring是个轻量级框架,不依赖于与J2EE容器,在J2SE环境下也能使用。
实际上的四层架构。
1.表现层:
a.对request和response的处理。
b.对数据 的显示。
c.非业务逻辑的验证。
d.异常的处理。
2.持久层:
a.ORM
b.提供面向对象的查询语言。
3.域层:业务逻辑的一部分。
4.服务层:
a.给业务逻辑暴露服务。
b.容器级别的服务怎么去实现。
--------------------------------------------------------------------------------------------------------------------------------------
spring的作用:
1.创建和管理业务逻辑对象(javabean)对象
2.管理业务逻辑之间的依赖关系。
3.让业务逻辑层中的javabean与集成层进行结合。
4.让业务逻辑层与表现层进行结合。
通过依赖注入来实现对象的关联关系的建立,降低了耦合度,支持了测试驱动开发;没有J2EE照样可以使用声明式事务,声明式事务不再依赖于容器;通过spring和其他框架集成,使得使用其他框架变得简单。
--------------------------------------------------------------------------------------------------------------------------------------
spring的特点:
1.在sprring框架中,把check类型的异常全部转化为uncheck类型,因为spring认为try--catch代码会污染业务逻辑。checked还是unchecked是针对编译器说的。
2.spring框架包含了很多的模块,我们可以使用spring提供的一个或者几个模块。spring可以定制服务,每种服务都是模块化的而且可伸缩的。
3.采用spring开发应用非常好,而且开发出来的东西是可重用的。
--------------------------------------------------------------------------------------------------------------------------------------
spring框架的组成
1.spring core:提供了IOC容器,是一个核心模块,其它所有模块以此为基础,提供了管理javabean对象和维护对象之间的依赖关系的功能。
2.spring aop:提供了面向切面编程的功能,有了IOC,才可以使用声明式事务。
3.spring dao:对jdbc做了轻量级的封装,简化jdbc编程。----->jdbcTemplate
4.spring context:是核心模块的一个扩展,提供了比核心模块core更多的功能,提供了更强大的功能。
5.spring orm:提供了集成持久层框架的能力,提供了跟其它框架集成的功能。
6.spring web:提供了web层框架的能力,提供了跟其他web框架的功能。
7.spring web mvc:是一个基于mvc的web框架的实现。
--------------------------------------------------------------------------------------------------------------------------------------
IOC控制反转
依赖注入是控制反转的一种方式,依赖注入有三种方式:接口注入、构造器注入、setter方法注入。
1.setter方法注入
如果在配置一个bean(bean类是标准的javaBean),采用的注入方式是setter注入,那么spring容器在创建bean时首先调用bean的无参构造函数,然后调用bean的setter方法,把它所依赖的对象注入进来。
<beans>
<bean name="example" class="com.spring.ioc.ExampleBean">
<property name="anotherBean">
<ref bean="anotherBean"/>
</property>
<property name="value">
<value>4321</value>
</property>
</bean>
<bean name="anotherBean" class="com.spring.ioc.AnotherBean">
<property>
<value>2008</value>
</property>
</bean>
</beans>
2.构造器注入
如果在配置一个bean时,采用的注入方式是构造器注入,那么spring容器在创建bean时调用有参的构造器,并且把它所依赖的对象注入进来。
<beans>
<bean name="example"
class="com.spring.ioc.ExampleBean">
<constructor-arg index="0">
<ref bean="anotherBean"/>
</constructor-arg>
<property
name="1">
<value>4321</value>
</property>
</bean>
<bean
name="anotherBean" class="com.spring.ioc.AnotherBean">
<constructor-arg>
<value>2008</value>
</constructor-arg>
</bean>
</beans>
注:如果配置一个bean时,既声明了构造器注入,又声明了setter注入,那么spring容器在创建bean时首先调用有参构造器进行注入,然后调用setter方法注入。
三种不同类型的数据注入的声明方式
1.基本数据类型<value></value>
2.其它的bean对象<ref bean="otherBean">
3.集合类型<list></list>,<map></map><set></set><props></props>
-----------------------------------------------------------------------------------------------------------------------------------
在spring中创建非javabean类型的对象有三种方式:
1.静态工厂方法
a.创建一个工厂类,提供一个静态的工厂方法。
b.配置一个产品的bean class为工厂类,另外还要指定工厂方法的名字。
如下:<bean name="connection" class="***" factory-method="getConnection"><bean>
其中getConnection是"***"中的静态方法,返回值是一个需要的对象。
2.实例工厂方法
a.创建一个工厂类,提供一个非静态的工厂方法的名字。
b.配置一个工厂的bean
c.配置一个产品的bean,指定工厂bean的名字,以及工厂方法的名字。
如下:<bean name="factory" class="***"/>
<bean name="beanId" factory-bean="factory" factory-method="getConnection"></bean>
其中getConnection是"***"中的非静态方法,返回值是一个需要的对象。
3.提供工厂类,实现factoryBean接口。
配置一个产品的bean默认为singleton;
---------------------------------------------------------------------------------------------------------------------------------
singletons:spring中的bean对象是唯一的,只创建一次。
prototypes:只要使用一次getBean,就创建一个bean对象。
在BeanFactory中的bean对象默认为singleton。
在BeanFactory中的bean对象是延迟创建的。
---------------------------------------------------------------------------------------------------------------------------------
bean的生命周期
创建过程:
1.容器寻找bean的定义信息并且将其实例化。
2.使用依赖注入,Spring按照bean定义信息完成依赖注入。
3.如果bean实现了BeanNameAware接口,工厂调用setBeanName方法。
4.如果bean实现了BeanFactoryAware接口,工厂调用setBeanFactory方法传入工厂本身。
5.如果bean实现了InitializingBean接口,则调用afterPropertiesSet方法。
6.如果bean指定了init-method方法,它将被调用。
销毁过程:
1.如果Bean实现了DisposableBean接口,则调用destory接口。
2.如果Bean实现了destory-method,则调用它。
---------------------------------------------------------------------------------------------------------------------------------
applicationContext
1.对BeanFactory实现了功能上的扩展。
2.预先实例化单例的Bean
3.提供对BeanPostProcessor以及对BeanFactoryProcessor的注册和检查。
4.支持嵌套的Context。
5.提供事件处理机制。
6.支持国际化。
---------------------------------------------------------------------------------------------------------------------------------
Aop的一些概念
1.关注点:
是指一个系统需要关注的一些主要问题,可以分成两大类,核心关注点和横切关注点。
其中业务关注点是指业务逻辑。
2.横切关注点:
是指系统级别的服务,实现代码散落在多个类或者方法中的关注点。比如日志、事务、安全。
3.方面(abject)
方面就是对横切关注点的模块化。把那些散落在各处的用于实现这个关注点的代码整到一处。
4.连接点
就是整个程序运行过程中的某一点。
一般是指:方法调用;属性访问;异常抛出。
5.增强=====
在特定连接点执行的动作就是增强。
1.前增强:就是在目标对象方法调用之前执行的动作。
2.后增强:就是在目标对象方法调用之后执行的动作。
3.环绕增强:就是在目标对象方法调用前后都会执行的动作。
4.抛出增强:就是在目标对象方法中抛出异常之后执行的动作。
6.切入点:一组连接点的总称。
7.目标对象:被拦截器拦截的对象。
8.代理对象:目标对象增强一些额外功能之后产生的对象,称为代理对象。
9.织入:就是给目标对象加上额外功能产生代理对象的整个过程称为织入。
----------------------------------------------------------------------------------------------------------------------------------
Aop编程的过程:
1.定义目标对象
2.定义拦截器
3.定义代理对象
----------------------------------------------------------------------------------------------------------------------------------
spring中的DAO
1.使用jdbc
配置DataSource
配置一个 DataSource的Bean,(1)类型为org.apache.commons.dbcp.BasicDataSource.然后给他指定一些参数。
(2)类型为org.springFramework.jndi.JndiObjectFactoryBean.这个类型是实现FactoryBean接口的,生产的产品为通过jndi查找到的对象。
2.使用hibernate
配置SessionFactory
配置一个SessionFactory的bean
类型为org.springFramework.orm.hibernate3.LocalSessionFactoryBean
或者类型为org.springFramework.jndi.JndiObjectFactoryBean.这个类型是实现FactoryBean接口的,
生产的产品为通过jndi查找到的对象。
-----------------------------------------------------------------------------------------------------------------------------------
spring中的web
spring跟struts集成使用
1.在web.xml中配置一个监听器,用来初始化spring上下文;它会创建ApplicationContext对象ac,并且把ac放到ServletContext中。
2.在struts-config.xml文件中配置一个action,类型为spring框架提供的一个类型。主要工作是从ServletContext中取到ApplicationContext对象ac。然后从ac中找到名字为action path的那个bean,并且调用这个bean的execute方法。
3.在spring的配置文件中配置一个bean,类型为真正的action的类型,bean的名字必须跟struts-config.xml中配置的action的path一致。
分享到:
相关推荐
Spring、SpringMVC和Mybatis是Java开发中最常用的三大开源框架,它们的整合使用,通常被称为SSM框架。这个框架组合提供了完整的后端服务解决方案,包括依赖注入(DI)、面向切面编程(AOP)、模型-视图-控制器(MVC...
弃用了struts,用spring mvc框架做了几个项目,感觉都不错,而且使用了注解方式,可以省掉一大堆配置文件。本文主要介绍使用注解方式配置的spring mvc,之前写的spring3.0 mvc和rest小例子没有介绍到数据层的内容,...
Spring Integration + Spring WS 整合 在 Java 领域中,Spring Integration 和 Spring WS 是两个常用的框架,它们分别负责集成系统和 Web 服务。今天,我们将探讨如何将这两个框架整合在一起,实现一个完整的 Web ...
### Spring Boot、Spring Cloud、Spring Boot Alibaba及其配套组件版本关系详解 #### 一、引言 随着微服务架构的流行,Spring Boot、Spring Cloud、Spring Boot Alibaba等技术栈成为构建现代分布式系统的基石。然而...
包含spring 3.0.5的所有jar文件: org.springframework.aop-3.0.5.RELEASE.jar org.springframework.asm-3.0.5.RELEASE.jar org.springframework.aspects-3.0.5.RELEASE.jar org.springframework.beans-3.0.5.RELEASE...
Spring Batch是一个轻量级的,完全面向Spring的批处理框架,可以应用于企业级大量的数据处理系统。Spring Batch以POJO和大家熟知的Spring框架为基础,使开发者更容易的访问和利用企业级服务。Spring Batch可以提供...
Spring框架是Java应用程序开发中的一个核心组件,它提供了一个丰富的IOC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)功能,使得开发者能够更方便地管理对象和实现模块化...
在Java开发领域,Spring Boot和Spring Batch的整合是构建高效批处理系统的一种常见方式。Spring Boot以其简洁的配置和快速的启动能力深受开发者喜爱,而Spring Batch作为Spring框架的一部分,专注于批量处理任务,...
在构建分布式系统时,Spring Cloud Gateway 作为微服务架构中的边缘服务或 API 网关,扮演着至关重要的角色。它负责路由请求到相应的微服务,并可以提供过滤器功能,如限流、熔断等。而Spring Security 则是 Java ...
spring3.1官方所有的jar包 org.springframework.aop-3.1.RELEASE.jar org.springframework.asm-3.1.RELEASE.jar org.springframework.aspects-3.1.RELEASE.jar org.springframework.beans-3.1.RELEASE.jar org....
这篇文章将教你快速地上手使用 Spring 框架. 如果你手上有一本《Spring in Action》, 那么你最好从第三部分"Spring 在 Web 层的应用--建立 Web 层"开始看, 否则那将是一场恶梦! 首先, 我需要在你心里建立起 Spring...
Getting started with Spring Framework (4th Edition) is a hands-on guide to begin developing applications using Spring Framework 5. The examples (consisting of 88 sample projects) that accompany this ...
Spring 详细讲解 Spring 是一个功能强大且功能齐全的 Java 应用程序框架,提供了一个通用的基础结构来支持开发企业级应用程序。 Spring 框架的核心是控制反转(IoC)和依赖注入(DI)模式,它们使得应用程序更加...
介绍一个基于Spring Boot 3.0、Spring Cloud 2022 & Alibaba的微服务RBAC权限管理系统。该系统可以实现微服务RBAC权限管理,通过RBAC权限管理机制对用户访问系统的权限进行限制,从而提高系统的安全性和可用性。同时...
项目原型:Struts2.3.16 + Spring4.1.1 + Hibernate4.3.6 二、 项目目的: 整合使用最新版本的三大框架(即Struts2、Spring4和Hibernate4),搭建项目架构原型。 项目架构原型:Struts2.3.16 + Spring4.1.1 + ...
Spring Cloud和Spring Boot是两个非常重要的Java开发框架,它们在微服务架构中扮演着核心角色。Spring Boot简化了创建独立的、生产级别的基于Spring的应用程序的过程,而Spring Cloud则为开发者提供了快速构建分布式...
《Spring AI Core 0.8.1:开启人工智能之旅》 在现代软件开发领域,Spring框架以其强大的功能和灵活性,已经成为Java开发中的首选框架之一。而Spring AI Core则是Spring生态系统中专门为人工智能(AI)和机器学习...
《Spring技术内幕:深入解析Spring架构与设计原理(第2版)》从源代码的角度对Spring的内核和各个主要功能模块的架构、设计和实现原理进行了深入剖析。你不仅能从本书中参透Spring框架的出色架构和设计思想,还能从...
Spring 框架是 Java 开发中的一个核心组件,它为构建企业级应用程序提供了全面的编程和配置模型。Spring 4.3.14 是该框架的最后一个4.x系列正式版,发布于2018年2月24日。这个版本在Spring 5.0发布之前提供了一个...
在IT行业中,Spring框架是Java应用开发中的一个关键组件,它提供了一整套服务来简化企业级应用的构建。RabbitMQ则是一个流行的开源消息队列系统,它基于AMQP(Advanced Message Queuing Protocol)协议,用于高效地...