SpringFramework(简称Spring)是J2EE应用程序框架,不过,更严格的讲它是针对Bean的生命周期进行管理的轻量级容器(Lightweight container),可以单独利用Spring构筑应用程序,也可以和Struts,Webwork等众多Web应用程序框架组合使用,并且可以与Swing等桌面应用程序API组合。所以Spring并不仅仅只能应用在J2EE中,也可以应用在桌面应用及小应用程序中。针对Spring开发的组件不需要任何外部库。
Spring是一个轻量级的IoC和AOP容器框架。
-
轻量级:从大小及系统开支上说。且Spring是非侵入式的(基于Spring开发的系统中对象一般不依赖于Spring的类)
-
反向控制:使用IoC对象是被动接受依赖类而不是主动去找(容器在实例化对象时主动将其依赖类注入给它)
- 面向切面:将业务逻辑从系统服务中分离,实现内聚开发。系统对象只做该做的业务逻辑不负责其他系统问题(如日志和事务支持)
-
容器:包含且管理系统对象的生命周期和配置,通过配置设定Bean是单一实例还是每次请求产生一个实例,并设定Bean之间的关联关系
-
框架:使用简单组件配置组合成一个复杂的系统,系统中的对象是通过XML文件配置组合起来的,且Spring提供了很多基础功能(事务管理、持久层集成等)
Spring框架用7个模块组成
-
核心容器:BeanFactory类(spring框架的核心采用工厂模式实现IOC)
-
应用上下文模块:扩展了BeanFactory
-
AOP模块:对面向切面提供了丰富的支持,是Spring应用系统开发切面的基础,并引入了metodata编程
-
JDBC和DAO模块
-
O/R映射模块
-
Web模块
-
MVC框架
案例:应用简单的spring框架:
需要在下载的文件中找到以下两个jar包,并导入到我们建立好的项中(这里使用2.5.6举例)
spring-framework-2.5.6 \spring-framework-2.5.6\dist----àspring.jar
spring-framework-2.5.6
\spring-framework-2.5.6\lib\jakarta-commons----à commons-logging.jar
2、创建接口ServiceDao,代码如下:
package com.zd.dao;
public interface ServiceDao {
void sayHello();
}
创建接口实现类ServiceDaoimpl,代码如下:
package com.zd.dao;
public class ServiceDaoimpl implements ServiceDao {
private String say;
@Override
public void sayHello() {
System.out.println("我想说的是:"+say);
}
public void setSay(String say) {
this.say = say;
}
}
解析:此接口实现类实现了ServiceDao中的方法,并且必需要为变量say添加一个set方法,因为Spring框架是通过set方法为变量注入值的。
3、创建一个Spring的配置文件 applicationContext.xml,其代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"
>
<bean id="servicedao" class="com.zd.dao.ServiceDaoimpl">
<property name="say" value="你好!"/>
</bean>
</beans>
解析:bean标签中,id属性为所指java类的别名,class属性为指定的Java类的路径。
property标签中,name属性为在指定Java类中定义的变量名称,value属性为变量的值。
注意:Spring的配置文件名字与Struts、Hibernate等框架的配置有所区别,Spring配置文件名字可以更改,而后两者不可更改。
4、编写测试类TestSpring,代码如下:
public class TestSpring {
@Test
public void test1(){
/**加载Spring容器,可以解析多个配置文件,采用输入数组方式传递ClassPathXmlApplicationContext(new String[]{"applicationContext.xml"})*/
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
/**通过xml文件解析bean文件,getBean()方法中的参数为在xml文件中指定的java类的id值*/
ServiceDaoimpl sd = (ServiceDaoimpl)ac.getBean("servicedao");
sd.sayHello();
}
}
运行结果:
我想说的是:你好!
案例2:应用简单的spring框架:
此案例还需案例1所有代码,需要在案例1中做出以下修改:
1、创建接口SpringService,代码如下:
package com.zd.service;
public interface SpringService {
void say();
}
2、创建接口实现类SpringServiceImpl,代码如下:
package com.zd.service;
import com.zd.dao.ServiceDaoimpl;
public class SpringServiceImpl implements SpringService {
/**这里引用案例1中的Java类*/
private ServiceDaoimpl serviceDaoImpl;
@Override
public void say() {
serviceDaoImpl.sayHello();
}
public void setServiceDaoImpl(ServiceDaoimpl serviceDaoImpl) {
this.serviceDaoImpl = serviceDaoImpl;
}
}
解析:这里引用案例1中的java类,并且也同样要为其加入set方法。
3、修改案例1中配置文件 applicationContext.xml,代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"
>
<bean id="servicedao" class="com.zd.dao.ServiceDaoimpl">
<property name="say" value="你好!"/>
</bean>
<bean id="springServiceImpl" class="com.zd.service.SpringServiceImpl">
<property name="serviceDaoImpl" ref="servicedao"/>
</bean>
</beans>
解析:此时的配置文件中,新加入了一个bean标签,因为在SpringServiceImpl中引入了案例1中的类,所以property标签的class属性变为ref属性,其值为servicedao(案例1中ServiceDaoimpl类的id值)。
注意:ref属性中的值必须和需要引用的类的id值一样。
4、创建测试类TestSpring,代码如下:
public class TestSpring {
@Test
public void test2(){
/**加载spring容器,这里同样可以使用数组加载多个配置文件*/
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
SpringServiceImpl ssi = (SpringServiceImpl) ac.getBean("springServiceImpl");
ssi.say();
}
运行结果:
我想说的是:你好!
----------------------------------------------------------------
以上属个人理解,若有不足,请各位高手指点,谢谢..
分享到:
相关推荐
Boot入门初体验是一门针对初学者准备的课程,讲解了如何一步一步进入Spring?Boot开发,课程采用循序渐进的方式,一个知识点一个知识点的讲解和学习,让初学者不知不觉的掌握各种开发技能,课程包含了主流框架搭建、...
spring-security初体验demo
Spring Cloud是一个分布框架 Spring Cloud里边包括了目前最新的所有组件共21个
搭建Spring开发环境 Bean的常用配置 三种模式实现依赖(以service调用dao举例) 在serivce里面的类创建dao里面类的对象,调用方法 用工厂模式实现,service先通过工厂创建出来的dao,再调用其方法(面向接口编辑)...
NULL 博文链接:https://cuics-100.iteye.com/blog/1535399
此文章是记录博主在学习springsecurity时的笔记 第一步 创建一个SpringBoot工程,勾选上需要的依赖。 第二步 创建一个名为securityconfig的配置类,该类基础了父类WebSecurityConfigurerAdapter(提供用于创建...
主要介绍了详解SpringBoot+SpringSecurity+jwt整合及初体验,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
主要介绍了聊聊Spring Cloud Cli 初体验,SpringBoot CLI 是spring Boot项目的脚手架工具。非常具有实用价值,需要的朋友可以参考下
CSDN博客 《Spring MVC 实战学习系列(一)初体验》配套代码
主要介绍了Spring Cloud Data Flow初体验以Local模式运行,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
...
...
多个PPT课件,涵盖SpringBoot所有常用知识点! Spring Boot Java Persistence APlpptx Spring Boot MyBatis.pptx Spring Boot NoSQLpptx Spring Boot WebSocket.pptx Spring Boot Web篇 (上) pptx ...初体验pptx
《SpringDataJpa系列教程》01-初体验(基于springboot2.0.3+MySQL5.7)源码文件
4、尚硅谷-SpringBoot高级-缓存-@Cacheable初体验 5、尚硅谷-SpringBoot高级-缓存-缓存工作原理&@Cacheable运行流程 6、尚硅谷-SpringBoot高级-缓存-@Cacheable其他属性 7、尚硅谷-SpringBoot高级-缓存-@CachePut 8...
源码、课件 1、尚硅谷-SpringBoot高级-缓存-JSR107简介 2、尚硅谷-SpringBoot高级-缓存-Spring缓存抽象简介 3、尚硅谷-SpringBoot高级-缓存-基本环境搭建 4、尚硅谷-SpringBoot高级-缓存-@Cacheable初体验 ...
先别下载,可以直接看博文,里面都有贴详细代码。 https://mp.csdn.net/postedit/79952532 Eclipse+Maven+Spring MVC,demo版,测试可以正常运行。
(1)为所有 Spring 开发提供一个更快更广泛的入门体验。 ———————————————— 版权声明:本文为CSDN博主「肖朋伟」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接...
史上最简单的SpringCloud教程 | 第十四篇: Spring Cloud Gateway初体验 史上最简单的SpringCloud教程 | 第十五篇: Spring Cloud Gateway 之Predict篇 史上最简单的SpringCloud教程 | 第十六篇: Spring Cloud Gateway...
本人使用的是IEDA2023.3版本,mysql是8.1.0版本