这篇文章主要介绍spring的一个小程序,初步认识spring。
spring为企业应用的开发提供了一个轻量级的解决方案。该解决方案包括:基于依赖注入的核心机制,基于
AOP的声明式事务管理,与多种持久层技术的整合,以及优秀的WEB MVC框架等,Spring致力于javaEE应用各层的解决方案,而不是仅仅专注于某一层的方案。可以说:spring是企业应用开发的“一站式”选择,Spring贯穿表现层,业务层,持久层。然而,Spring并不想取代那些已有的框架,而是高度的开放性与它们无缝整合。
总结起来,spring具有如下有点:
1、低侵入式设计,代码污染级低
2、独立于各种应用服务器,基于spring框架的应用,可以真正实现Write Once、Run Anywhere的承诺
3、spring的DI容器降低了业务对象 替换的复杂性,提高了组件之间的解耦。
4、spring的AOP支持允许将一些通用业务如安全,事务,日志等进行集中式处理,从而提供更好的复用
5、 spring的ORM和DAO提供了与第三方持久层的框架的良好整合,并简化了底层的数据库访问。
6、spring的高度开放性,并不强制应用完全依赖与spring ,开发者可自由选用spring框架部分或全部
下面就写一个简单的例子,初窥spring的奥秘。
1、引出spring的jar包
打开eclipse,新一个maven工程。File->New->Maven
Project。把Create a simple project(skip archetype selection)的框框勾上,
点Next。然后输入Group id和Artifact id之后,点 Finish。
接着打开pom.xml配置文件,加入以下依赖:
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.1.6.RELEASE</version>
</dependency>
</dependencies>
完成之后打开查看这里:
如果加入的jar包跟上图一样,那就证明spring的包已经导入。
2、新建spring的配置文件
在src/main/resources目录右击->New->Other,在Wizards:的框框里输入xml,选择XMl
File,点Next,键入文件名,然后按Finish。 打开新建的xml文件,加入以下代码:
<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-3.1.xsd">
</beans>
3、新建一个测试类
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class SpringTest {
public static void main(String[] args) {
//从类路径加载配置文件spring.xml
ApplicationContext ac=new ClassPathXmlApplicationContext("spring.xml");
//输出获得ac实例的地址
System.out.println(ac);
}
}
ApplicationContext的中文意思是“应用上下文”,继承自BeanFactory接口,实用的Bean工厂ApplicationContext。ClassPathXmlApplicationContext是它的实现类,参数为xml配置文件的文件名字符串。
文件Ctrl+S保存后,按Ctrl+F11运行该程序,就会获得类似下文结果:
org.springframework.context.support.ClassPathXmlApplicationContext@7eda2dbb: startup date [Fri Jun 10 11:22:41 CST 2016]; root of context hierarchy
4、 实现用bean标签的方式来获得实例
新建Java文件:
public class PersonService {
private String name;
private int age;
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public void print(){
System.out.println("姓名:"+name);
System.out.println("年龄:"+age);
}
}
然后在spring的配置文件中加入代码段:
<!-- 定义bean,id属性是该bean的唯一标识,小写开头,class属性是要交给bean管理的java类所在路径,有包名要加上包名 -->
<bean id="personService" class="PersonService">
<!-- 通过property实现spring的依赖注入-->
<property name="name" value="Java"></property>
<property name="age" value="21"></property>
</bean>
id属性是该bean的唯一标识,小写开头,class属性是要交给bean管理的java类所在路径,有包名要加上包名。
接着在SpringTest.java中加入以下代码:
//获取id为personService的bean
//这段代码相当于PersonService ps=new PersonService();
PersonService ps=ac.getBean("personService",PersonService.class);
//可以直接调用print方法
ps.print();
使用getBean的方式获得实例,相当于new一个实例出来,这样的好处就是减少了程序的依赖性。
运行SpringTest.java,就会获得如下结果:
姓名:Java
年龄:21
至此,整个流程已完成。