idea如何搭建简单的spring
spring是什么
spring就是一个开源框架,它是为了解决企业应用开发的复杂性而创建的。当然spring不仅限于服务器的开发,从简单性、可测试性和松耦合性的角度而言,任何Java应用都可以从spring中受益。也就是说:从某种角度而言,spring适用于任何Java应用。
spring的优点
对于spring来说,它有很多优点如:方便解耦,简化开发(IOC);AOP 编程的支持;声明事务的支持(只需要配置就行);方便程序的测试;方便集成各种优秀的框架(MyBatis);降低了对JavaEE API的使用难度。
在此我们就不对spring的优点进行一一介绍了,就其关键的IOC和AOP进行简单的分析一下。
IOC——控制反转
提到spring框架自然的就会蹦出IOC这个思想,没错IOC是一种思想;这个思想就是:资源不由使用资源的双方管理,而由不使用资源的第三方管理,这可以带来很多好处。第一,资源集中管理,实现资源的可配置和易管理。第二,降低了使用资源双方的依赖程度,也就是我们说的耦合度。
也就是说,在spring中不仅可以调用被调用的对象,也可以调用对象本身。
举例说明:淘宝就是一个形象的说明;淘宝没出现之前买卖交易都是需要去实体店去选择,自从淘宝出现之后卖家只需要把商品放在淘宝的平台上就行,买家看到自己想要的东西直接下单就行,可以说非常方便。对spring来说,它就相当于淘宝平台。这样一来对象之间的耦合度降低了,也可以实现资源的集中分配和管理。
IOC的一个重点是在系统运行中,动态的向某个对象提供它所需要的其他对象。这一点是通过DI(Dependency Injection,依赖注入)来实现的。比如对象A需要操作数据库,以前我们总是要在A中自己编写代码来获得一个Connection对象,有了 spring我们就只需要告诉spring,A中需要一个Connection,至于这个Connection怎么构造,何时构造,A不需要知道。在系统运行时,spring会在适当的时候制造一个Connection,然后像打针一样,注射到A当中,这样就完成了对各个对象之间关系的控制。A需要依赖 Connection才能正常运行,而这个Connection是由spring注入到A中的,依赖注入的名字就这么来的。
AOP——面向切面编程
学Java对OOP都很了解吧,而AOP就是OOP的一个延伸,OOP是纵向的编程,AOP则是横向的编程,正是因为OOP没办法横向发展才有了AOP;AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
Spring框架的AOP机制可以让开发者把业务流程中的通用功能抽取出来,单独编写功能代码。在业务流程执行过程中,Spring框架会根据业务流程要求,自动把独立编写的功能代码切入到流程的合适位置。
例如,在一个业务系统中,用户登录是基础功能,凡是涉及到用户的业务流程都要求用户进行系统登录。如果把用户登录功能代码写入到每个业务流程中,会造成代码冗余,维护也非常麻烦,当需要修改用户登录功能时,就需要修改每个业务流程的用户登录代码,这种处理方式显然是不可取的。比较好的做法是把用户登录功能抽取出来,形成独立的模块,当业务流程需要用户登录时,系统自动把登录功能切入到业务流程中。
如何搭建spring框架
1.首先创建一个maven工程:
单击next;
自己设置一个文件名;继续点击next;
单击next;
点击finish,一个maven工程就新建完成了;接下来对spring框架进行配置
2.配置spring
新建maven完成后的界面是这样的:
然后用快捷键:Ctrl+Alt+shift+s;选择Modules,在选择Sources,在src下面添加几个Package:
直接点击OK,进入下一步;
再添加一些需要的Java以及配置文件,最终结果如下图:
到此一个简单的spring框架需要的文件大致这么多,接下来进行配置;
3.配置文件以及编写程序
1.先导入依赖:在pom.xml文件中插入依赖:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.2.6.RELEASE</version>
</dependency>
2.对META-INF文件夹下的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">
<bean id="helloWorld" class="com.ezsda.contorller.HelloWorld">
<property name="name" value="spring"></property>
</bean>
</beans>
3.对com.ezsda.contorller包下的HelloWorld.java和Main.java进行编写
HellowWorld.java:
package com.ezsda.contorller;
public class HelloWorld {
public String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void hello(){
System.out.println("hello , " + name);
}
}
Main.java:
package com.ezsda.contorller;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Main {
public static void main(String[] args) {
// 1.创建spring ioc容器
ApplicationContext ac = new ClassPathXmlApplicationContext("META-INF/applicationContext.xml");
// 2.从ioc容器中获取bean实例
HelloWorld helloWorld = (HelloWorld) ac.getBean("helloWorld");
helloWorld.hello();
}
}
到这一个简单的spring框架就构建完成了。对main.java进行运行你会发现控制台会输出“hello , spring”的字样如图: