Spring学习day1-Spring框架介绍及搭建测试项目
Spring是什么?
Spring是于2003 年兴起的一个轻量级的Java 开源框架,它由Rod Johnson创建。传统J2EE应用的开发效率低,Spring作为开源的中间件,提供J2EE应用的各层的解决方案,Spring贯穿了表现层、业务层及持久层,而不是仅仅专注于某一层的方案。可以说Spring是企业应用开发的“一站式(full-stack)”选择。然而,Spring并不想取代那些已有的框架,而是与它们无缝地整合。
简单来说,Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架。
为什么要是用Spring
1、 方便解耦,简化开发
通过Spring提供的IoC容器,我们可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。有了Spring,用户不必再为单实例模式类、属性文件解析等这些很底层的需求编写代码,可以更专注于上层的应用。
2、 AOP编程的支持
通过Spring提供的AOP功能,方便进行面向切面的编程,许多不容易用传统OOP实现的功能可以通过AOP轻松应付。
3、 声明式事务的支持
在Spring中,我们可以从单调烦闷的事务管理代码中解脱出来,通过声明式方式灵活地进行事务的管理,提高开发效率和质量。
4、 方便程序的测试
可以用非容器依赖的编程方式进行几乎所有的测试工作,在Spring里,测试不再是昂贵的操作,而是随手可做的事情。例如:Spring对Junit4支持,可以通过注解方便的测试Spring程序。
5、 方便集成各种优秀框架
Spring不排斥各种优秀的开源框架,相反,Spring可以降低各种框架的使用难度,Spring提供了对各种优秀框架(如Struts、Hibernate、MyBatis 、Hessian、Quartz)等的直接支持。
6、 降低Java EE API的使用难度
Spring对很多难用的Java EE API(如JDBC,JavaMail,远程调用等)提供了一个薄薄的封装层,通过Spring的简易封装,这些Java EE API的使用难度大为降低。
搭建Spring项目
打开IDEA,文件->新建->项目->maven项目,如下配置构建坐标,然后点击Finish(由于我们创建的是maven项目,所以可以先忽略下载jar包、导包的工程)
创建完成之后我们打开pom.xml文件,进行一个spring工具包的导入
工具包
spring-beans;
spring-context;
spring-core;
spring-expression;
commons-logging;
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>5.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
</dependency>
</dependencies>
添加了依赖之后 我们重新构建一下
然后我们打开项目结构就会发现项目模块下面多了一个spring
然后我们在src的main目录下的resources文件夹下创建"spring资源配置文件,取名applicationContext.xml(业界规定吧,一般都叫这个名字),注意如果项目中没有构建spring相关的jar包是无法创建Spring配置文件的
然后再打开项目结构,点击模块下的spring,添加应用程序上下文(一般会自动配置)
到这里基本环境算是搭建完了
Spring容器管理
在之前的项目开发中,创建对象的工作是由我们自己完成的,假如我们需要某一个类的对象,我们就需要手动去new一个对象,甚至可能根据需求new很多个该类的对象。然而上面我们提到spring可以用Ioc容器帮我们管理对象,包括对象的创建。那么这个容器管理具体是怎么实现的呢,我们可以通过一个简单的例子来感受一下。
在此之前我们需要做一些准备工作
在src.main.java文件夹下创建一个包,命名为com.wfh.bean
然后我们在再该包下创建一个User对象并添加一些属性和getter&setter
然后在src.test.java下创建一个测试类HelloSpring用于测试
然后我们打开之前创建的applicationContext.xml文件,在beans标签内加入一下代码
<bean name="user" class="com.wfh.bean.User"></bean>
很显然bean标签就是我们存放管理对象的标签,class属性对应其存放的类,而name属性类似于一个代号,当我们需要用到这个类的对象的时候,我们就可以把这个代号交给容器,让容器替我们找到这个代号对应的类并创建其实例对象交给我们。那么这种机制在代码中是如何体现的呢,我们一起来看看:
public void Test1(){
//根据xml文件加载一个容器对象
ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
//根据name属性返回实例对象,也可以通过class属性得到,返回类型为Object
User u=(User) ac.getBean("user");
System.out.println(u);
}
运行结果: