(一)Spring4.0初步认识

本文介绍了Spring框架的基本概念,包括其轻量级特性、依赖注入及面向切面编程等核心思想,并通过一个简单的示例展示了如何使用Spring进行依赖注入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.什么是spring框架

spring框架是一个轻量级的Java EE框架。所谓轻量级,是指不依赖容器就能运行的。struts和hibernate也是轻量级的。

Spring 是一个 IOC(DI) 和 AOP 容器框架.
spring最主要的思想是ioc(Inversion of Control,控制反转)或者成为DI(Dependency Injection,依赖注入)

具体描述 Spring:

轻量级Spring 是非侵入性- 基于 Spring 开发的应用中的对象可以不依赖于 Spring 的 API

依赖注入(DI ---dependency injection、IOC)

面向切面编程(AOP ---aspect oriented programming)

容器: Spring 是一个容器, 因为它包含并且管理应用对象的生命周期

框架: Spring 实现了使用简单的组件配置组合成一个复杂的应用. 在 Spring 中可以使用 XML 和 Java 注解组合这些对象

一站:在 IOC 和 AOP 的基础上可以整合各种企业应用的开源框架和优秀的第三方类库 (实际上 Spring 自身也提供了展现层的 SpringMVC 和 持久层的 SpringJDBC)


2.搭建spring开发环境

2.1 spring4.0jar包的引入

spring最基本的jar包有

spring-expression-4.0.0.RELEASE.jar

spring-core-4.0.0.RELEASE.jar

spring-context-4.0.0.RELEASE.jar

spring-beans-4.0.0.RELEASE.jar

commons-logging-1.1.1.jar

上面是spring最基本的jar包,下面会贴出其它jar包和该jar包的作用。引入这几个jar包并添加到类路径中。

2.2 spring的配置文件

一个典型的 Spring 项目需要创建一个或多个 Bean 配置文件, 这些配置文件用于在Spring IOC 容器里配置 Bean. Bean 的配置文件可以放在classpath, 也可以放在其它目录下.


3.一个依赖注入的简单例子

3.1普通的java例子

编写一个HelloWorld类

package com.beans;

public class HelloWorld {
	private String name;
	
	public void setName(String name) {
		this.name = name;
	}
	
	public void hello(){
		System.out.println("hello:" + name);
	}
}
这个类有一个属性name,提供了set方法,并有一个hello()方法。

编写一个main

package com.beans;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		HelloWorld helloWorld = new HelloWorld();//创建HelloWorld对象
		helloWorld.setName("Spring");//为name属性赋值
		helloWorld.hello();
	}

}
输出 hello:Spring
以上是我们不适用spring时的方法


3.2使用spring的例子

首先配置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.xsd">
	<!-- class指的是要使用的类,id标识该类 -->
	<bean id="helloWorld" class="com.beans.HelloWorld">
	<!-- name值得是该类set后面的参数 如 本例中是setName 那么name="name" 如果是setName2,那么name="name2" 
	否则会报错  value属性则是设置的值-->
		<property name="name" value="spring1"></property>
	</bean>			
</beans>

重新编写Main

package com.beans;


import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Main {

	public static void main(String[] args) {		
		//1.创建spring的IOC容器
		ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
		//2.从IOC容器中获取bean实例
		HelloWorld helloWorld=(HelloWorld) applicationContext.getBean("helloWorld");
		//3.调用hello方法
		helloWorld.hello();
	}

}
输出 hello:spring1


如果把上面的Main类中的2和3步骤去掉,会发现创建springIOC容器的时候,会初始化类的构造函数并个set方法赋值。

由上面两个对比可知,spring来创建这个HelloWorld类,然后通过spring容器来获取创建的类调用它的方法。

这就是spring的依赖注入的思想。


下面是spring的jar包的介绍

Spring AOP:Spring的面向切面编程,提供AOP(面向切面编程)的实现
Spring Aspects:Spring提供的对AspectJ框架的整合
Spring Beans:Spring IOC的基础实现,包含访问配置文件、创建和管理bean等。
Spring Context:在基础IOC功能上提供扩展服务,此外还提供许多企业级服务的支持,有邮件服务、任务调度、JNDI定位,EJB集成、远程访问、缓存以及多种视图层框架的支持。
Spring Context Support:Spring context的扩展支持,用于MVC方面。
Spring Core:Spring的核心工具包
Spring expression:Spring表达式语言
Spring Framework Bom:
Spring Instrument:Spring对服务器的代理接口
Spring Instrument Tomcat:Spring对tomcat连接池的集成
Spring JDBC:对JDBC 的简单封装
Spring JMS:为简化jms api的使用而做的简单封装
Spring Messaging:
Spring orm:整合第三方的orm实现,如hibernate,ibatis,jdo以及spring 的jpa实现
Spring oxm:Spring对于object/xml映射的支持,可以让JAVA与XML之间来回切换
Spring test:对JUNIT等测试框架的简单封装
Spring tx:为JDBC、Hibernate、JDO、JPA等提供的一致的声明式和编程式事务管理。
Spring web:包含Web应用开发时,用到Spring框架时所需的核心类,包括自动载入WebApplicationContext特性的类、Struts与JSF集成类、文件上传的支持类、Filter类和大量工具辅助类。
Spring webmvc:包含SpringMVC框架相关的所有类。包含国际化、标签、Theme、视图展现的FreeMarker、JasperReports、Tiles、Velocity、XSLT相关类。当然,如果你的应用使用了独立的MVC框架,则无需这个JAR文件里的任何类。
Spring webmvc portlet:Spring MVC的增强


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值