Spring是一个开源的控制反转和面向切面的容器框架,它的主要目的是简化企业开发。
使用Spring的好处:
1,降低组件之间的耦合度,实现软件各层之间的解耦。
2,可以使用容器提供的 众多服务。如:事务管理服务,消息服务等等。当我们使用容器管理事务时,开发人员就不再需要手工控制事务,也不需要处理复杂的事务传播。
3,容器提供单例模式支持,开发人员不再需要自己编写实现代码。
4,容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监控等功能。
5,容器提供的众多辅助类,使用这些类能够加快应用的开发,如:JdbcTemplate,HibernateTemplate。
6,Spring对应主流的应用框架提供了集成支持,如;集成Hibernate,JPA,Struts等,这样更便于应用的开发。
轻量级和重量级概念的划分:
划分一个应用是否属于轻量级还是重量级,主要看它使用了多少服务。使用的服务越多,容器要为普通java对象做的工作就越多,必然会影响到应用的发布时间或者是运行性能。
对于Spring容器,它提供了很多服务,但这些服务并不是默认为应用打开的,应用需要某种服务,还需要指明使用该服务,如果应用使用的服务很少,如:只使用了spring核心服务,那么我们可以认为此时应用属于轻量级的,如果应用使用了spring提供的大部分服务,这时应用就属于重量级。目前EJB容器就因为它默认为应用提供了EJB规范中所有的功能,所以它属于重量级。
实例化spring容器常用的两种方式:
方法一:
在类路径下寻找配置文件来实例化容器
ApplicationContext ctx = new ClassPathXmlApplicationContext("application.xml");
方法二:
在文件系统路径下寻找配置文件来实例化容器
ApplicationContext ctx = new FileSystemXmlApplicationContext("d:\\beans.xml");
模拟spring对bean的管理程序:
1,创建解析xml并生成bean对象的类。解析xml文件,使用dom4j解析xml文档,获取配置的bean信息,将id和className构造成一个beanInfo对象保存到list中去。
2,然后,通过该list中的beanInfo对象,以id为键,以className利用反射机制new出的bean对象作为值,保存到一个map中去。
3,在测试程序中,调用该解析类。在解析类中也有getBean方法,只是简单的从map中根据键取值而已。
所谓依赖注是指:在运行期,有外部容器动态将依赖对象注入到组件中。
三种实例化bean的方式:
1,使用类构造器实例化
<bean id="orderService" class="cn.itcast.OrderServiceBean"/>
2,使用静态工厂方法实例化
<bean id="personService" class="cn.itcast.service.OrderFactory" factory-method="createOrder"/>
public class OrderFactory{
public static
OrderServiceBean createOrder(){
return new OrderServiceBean();
}
}
3,使用实例化工厂方法实例化
<bean id="personServiceFactory" class="cn.itcast.service.OrderFactory"/>
<bean id="personService" factory-bean="personServiceFactory" factory-method="createOrder"/>
public class OrderFactory{
public OrderServiceBean createOrder(){
return new OrderService();
}
}
bean的作用域:
.singleton
在每个spring IOC容器中一个bean定义只有一个对象实例。默认情况下会在容器启动时初始化bean,但我们可以指定Bean节点的lazy-init="true"来延迟初始化bean,这时候,只有第一次获取bean会才初始化bean。如:
<bean id="xxx" class="cn.itcast.OrderServiceBean" lazy-init="true"
/>
如果想对所有bean都应用延迟初始化,可以在根节点beans设置default-lazy-inti="true",如下:
<beans default-lazy-init="true"...>
.prototype
每次从容器获取bean都是新的对象。
<bean id="orderService" class="cn.itcast.OrderServiceBean" scope="prototype"
/>
指定bean的初始化方法和销毁方法
<bean id="xxx" class="cn.itcast.OrderServiceBean" init-method="init" destroy-method="close"/>
注入依赖对象:
基本类型对象注入:
<bean id="orderService" class="cn.itcast.service.OrderServiceBean">
<constructor-arg index="0" type="java.lang.String" value="xxx"/>构造器注入
<property name="name" value="zhao"/>//属性setter方法注入
</bean>
注入其他bean:
方式一:
<bean id="orderDAO" class="cn.itcast.service.OrderDaoBean"/>
<bean id="orderService" class="cn.itcast.service.OrderServiceBean">
<property name="orderDao" ref="orderDao"/>
</bean>
方式二(使用内部bean,但该bean不能被其他bean使用)
<bean id="orderService" class="cn.itcast.service.OrderServiceBean">
<property name="orderDao">
<bean class="cn.itcast.service.OrderDaoBean"/>
</property>
</bean>
分享到:
相关推荐
在本篇【SpringCloud学习第一天,helloWorld】的教程中,我们将初步接触并了解Spring Cloud这一微服务框架,以及如何创建一个基本的“Hello, World”应用。首先,我们需要理解Spring Cloud的核心概念和作用。 ...
### 学习笔记:尚硅谷Spring6基础篇 #### 一、Spring框架概述 ##### 1.1 Spring是什么? Spring是一款主流的Java EE轻量级开源框架,由“Spring之父”Rod Johnson提出并创立。Spring的主要目标是简化Java企业级...
Spring系列第1篇:为何要学spring?Spring系列第2篇:控制反转(IoC)与依赖注入(DI)。Spring系列第3篇:Spring容器基本使用及原理。Spring系列第4篇:xml中bean定义详解(-)Spring系列第5篇:创建bean实例这些方式...
一篇很好的springCloud学习的思维导读,详细的介绍了,springCloud的搭建步骤以及各组件的说明讲解 涵盖 Eureka服务注册与发现 Zookeeper服务注册与发现 Consul服务注册与发现 Ribbon负载均衡服务调用 OpenFeign...
在本篇中,我们将探索如何创建并运行你的第一个 Spring Boot 应用程序。 1. **快速入门:创建项目** 要开始一个 Spring Boot 项目,你可以使用 Spring Initializr(https://start.spring.io/)。这是一个在线工具...
在本篇【jee、spring、spring mvc、mybatis 学习(五)】中,我们将深入探讨四个关键的Java企业级开发技术:Java EE(Java Enterprise Edition)、Spring框架、Spring MVC以及MyBatis。这些技术是现代Java Web应用...
4. **JDBC 支持**:Spring 提供了一个简单的 JDBC 抽象层,减少了直接使用 JDBC 的繁琐,同时支持与第三方持久层框架(如 Hibernate、JPA)的集成。 5. **Java EE 整合**:Spring 可以很好地与 Java EE 技术(如 ...
对于初学者来说,理解并动手操作这些代码是掌握Spring的第一步。通过阅读和运行这些示例,你可以更深入地理解Spring框架的工作原理,以及如何在实际项目中应用Spring的核心特性。 总的来说,本学习笔记通过一个简单...
这篇原版的《SpringCloud.pdf》中文文档教程是学习这个框架的重要资源。 首先,我们来看看SpringBoot。它是Spring框架的延伸,旨在简化Spring应用的初始搭建以及开发过程。通过预设默认配置,Spring Boot使得开发者...
本入门篇将介绍Spring Security的基础知识,包括其核心概念、配置以及如何在实际项目中使用。 1. **核心概念** - **Authentication(认证)**: 用户身份验证是Spring Security的基础,它确认用户的身份是否合法。...
在这个系列的第一部分,我们将重点关注注解驱动的DI。 注解在Spring中扮演着至关重要的角色,比如`@Component`、`@Service`、`@Repository`和`@Controller`。这些注解用于标记不同的组件,它们告诉Spring容器这些类...
"3、HelloSpring.md"通常作为Spring入门的第一个示例,展示了如何创建一个简单的Spring应用,帮助初学者快速上手。 综上所述,Spring5的学习涵盖了从基础到高级的各种主题,包括依赖注入、面向切面编程、事务管理、...
这篇文档通过详细剖析Spring5的源码,将复杂的概念以深入浅出的方式呈现出来,让学习者能够更好地掌握Spring的内在工作原理。 首先,我们要了解Spring框架的核心组件——依赖注入(Dependency Injection,简称DI)...
======================================================================== <br>第1篇 概述 第1章 Spring概述 第2章 快速入门 第2篇 Spring核心技术 第3章 IoC容器概述 第4章 在IoC容器中...
整合这三个框架的第一步通常涉及到以下几个步骤: 1. 配置环境:确保项目中引入了Struts2、Spring和Hibernate的相应库,这通常通过Maven或Gradle等构建工具完成。 2. 配置Spring:创建Spring的配置文件(如`...
【标题】"Spring Web Service 实战篇(1)" 指的是使用Spring框架构建Web服务的实际操作教程。在这个部分,我们将深入探讨如何利用Spring的强大功能来设计和实现基于Web的服务,以便于不同系统间的交互和数据共享。 ...
内容概要:该资源是Spring全家桶视频课程的第二部分Spring MVC的源码,其对于Spring的最常用的基本功能,如:表单、国际化、过滤器、拦截器、log等都使用案例进行了说明,并且在最后通过一个贯穿前、中、后台的案例...
本篇文章将围绕“spring-boot spring-security-oauth2 完整demo”这一主题,详细阐述这三个框架如何协同工作,以及如何通过类似微信的方式获取token并访问资源。 首先,Spring Boot是基于Spring框架的快速开发工具...
本篇将详细探讨该课程的第一次作业,包括提供的Sample Code和训练数据。 作业1的资料中包含了两位助教的Sample Code,这无疑是学生们理解和实践机器学习算法的重要参考资料。Sample Code通常会展示如何运用编程语言...