【Spring】Spring框架之我见

【导图俯瞰全篇】

 

一,框架介绍:

          1,先看一下帮助文档的这张图,里边主要包括了Spring自身的功能,还有可以和其框架结合的一些框架,通过这张图可以看出,Spring框架和其他框架的集成能力是非常强的

2,Spring是一个轻量级的IOC和AOP容器框架:

                 a,轻量级:程序实现不是很复杂,代码不是很多,占用资源不是很多,没有侵入性;

                 b,IOC(Inversion
of Control 控制反转):对象创建责任的反转(重点,核心)原则的配置管理,使得应用程序的组件更加快捷简易。;

                 c, Aop(Aspect Oriented Programming):一种面向横切面编程的思想方式,可以进行功能性扩展

                 d,容器:可以容纳对象,并且可以控制对象的生命周期;

二、步骤

1、拷jar包

commons-logging.jar(日志输出操作,实现日志输入的转换)

spring-aop.jar

spring-core.jar

spring-context.jar

spring-beans.jar

spring-expression.jar

spring-web.jar

spring-tx.jar

aopalliance.jar

aspectjrt.jar
aspectjweaver.jar

2、拷贝框架的核心配置文件,存放在src目录下

applicationContext.xml(框架的核心配置文件)

3,编写框架的核心配置文件,将声明对象都交给Spring框架来创建,以及初始化,例如service层的类,action层类,dao层类等等,都可以交给Spring进行管理,看一个例子:

[html] view plain copy

  1. <span style="font-size:18px;">      <!-- 声明Action对象 -->  
  2.   
  3. <bean id="loginAction" class="com.ljh.struts2.action.LoginAction" scope="prototype"></bean> </span>

·创建对象方式:1、默认单例
scope="singleton"  2、原型模式:scope="prototype"原型模型确保每次检索都会创建单独的对象。在每个用户都需要自己的对象时,原型模型最适合。

·工厂BeanFactory:BeanFactory功能是对bean对象的生命周期进行管理的。(创建,初始化,销毁)

·ApplicationContext(推荐,也是框架默认的)

来用才对象来加载Spring配置文件,会在加载时解析配置文件,创建对象,而不是在getBean时实,ApplicationContext接口继承了BeanFactory,所以具备BeanFactory所有功能,同时增加扩展的功能,例如加载资源配置文件,国际化支持等!

4、加载 配置文件

利用beanFactory加载配置文件:

[java] view plain copy

  1. <span style="font-size:18px;">      //加载配置文件,创建Spring的应用环境  
  2.         String path = "applicationContext.xml";       
  3.         Resource resource = new ClassPathResource(path);    //推荐  
  4.         //Resource resource = new FileSystemResource("src/applicationContext.xml");  
  5.         //Resource resource = new ServletContextResource(servletContext, path); //如果文件存放到WEB-INF目录下  
  6.           
  7.         BeanFactory factory = new XmlBeanFactory(resource);  
  8.   
  9.         //从Spring环境中获取对象  
  10.         Object obj = factory.getBean("loginAction");  
  11.           
  12.   
  13. LoginAction action = (LoginAction)obj ; </span> 

利用ApplicationContext加载配置文件:

[java] view plain copy

  1. <span style="font-size:18px;">      ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");  
  2.               
  3.         Object obj = ac.getBean("loginAction");  
  4. </span> 

三、优点

1.低侵入式设计,代码污染极低

2.独立于各种应用服务器,基于Spring框架的应用,可以真正实现Write Once,Run Anywhere的承诺

3.Spring的DI机制降低了业务对象替换的复杂性,提高了组件之间的解耦

4.Spring的AOP支持允许将一些通用任务如安全、事务、日志等进行集中式管理,从而提供了更好的复用

5.Spring的ORM和DAO提供了与第三方持久层框架的良好整合,并简化了底层的数据库访问

6.Spring并不强制应用完全依赖于Spring,开发者可自由选用Spring框架的部分或全部

7、用依赖注入模式大幅度的减少了程序之间的耦合性 并很好的实现了各种JAVA的设计模式 强制使用者养成用接口编程的习惯 

四、第一个Spring小程序

新建一个User类,一个UserDao类以及一个测试类:

User.java

[java] view plain copy

  1. package com.adam.java.spring.po;  
  2.   
  3. public class User {  
  4.     private String name;  
  5.     private int age;  
  6.     private int score;  
  7.     public String getName() {  
  8.         return name;  
  9.     }  
  10.     public void setName(String name) {  
  11.         this.name = name;  
  12.     }  
  13.     public int getAge() {  
  14.         return age;  
  15.     }  
  16.     public void setAge(int age) {  
  17.         this.age = age;  
  18.     }  
  19.     public int getScore() {  
  20.         return score;  
  21.     }  
  22.     public void setScore(int score) {  
  23.         this.score = score;  
  24.     }  
  25.       
  26.     public String toString(){  
  27.         return "tostring from user";  
  28.     }  
  29. }  

UserDao.java

[java] view plain copy

  1. package com.adam.java.spring.dao;  
  2.   
  3. import com.adam.java.spring.po.User;  
  4.   
  5. public class UserDao {  
  6.     private User user;  
  7.       
  8.     public void add(){  
  9.         System.out.println("add from userdao");  
  10.         System.out.println(user.toString());  
  11.     }  
  12.   
  13.     public User getUser() {  
  14.         return user;  
  15.     }  
  16.   
  17.     public void setUser(User user) {  
  18.         this.user = user;  
  19.     }  
  20.   
  21.       
  22. }  

DITest.java

[html] view plain copy

  1. package com.adam.java.spring;  
  2.   
  3. import org.springframework.context.ApplicationContext;  
  4. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  5.   
  6. import com.adam.java.spring.dao.UserDao;  
  7.   
  8. public class DITest {  
  9.   
  10.     @SuppressWarnings("resource")  
  11.     public static void main(String[] args) {  
  12.         ApplicationContext atx = new ClassPathXmlApplicationContext("beans.xml");  
  13.         UserDao userDao = (UserDao) atx.getBean("userDao");  
  14.         userDao.add();  
  15.     }  
  16.   
  17. }  

一个配置文件beans.xml

[html] view plain copy

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">  
  5.   
  6. <bean id="user" class="com.adam.java.spring.po.User"/>  
  7. <bean id="userDao" class="com.adam.java.spring.dao.UserDao">  
  8.     <property name="user" ref="user"/>  
  9. </bean>  
  10. </beans>  

执行测试类,得出如下输出:

[html] view plain copy

  1. add from userdao  
  2. tostring from user 
时间: 2016-09-25
Tags: 架构

【Spring】Spring框架之我见的相关文章

J2EE中使用Spring AOP框架和EJB组件

j2ee 快速发展的开发人员社区.对各种后端技术(包括JMS.JTA.JDO.Hibernate.iBATIS等等)的支持,以及(更为重要的)非侵入性的轻量级IoC容器和内置的AOP运行时,这些因素使得Spring Framework对于J2EE应用程序开发十分具有吸引力.Spring托管的组件(POJO)可以与EJB共存,并允许使用AOP方法来处理企业应用程序中的横切方面--从监控和审计.缓存及应用程序级的安全性开始,直到处理特定于应用程序的业务需求. 本文将向您介绍Spring的AOP框架在

Spring MVC框架的高级配置

高级 本文将为您提供关于Spring MVC框架的配置技巧,以帮助管理基于Spring的web应用程序的多个实例.本配置管理主题常被学术界所忽略,但是,这对于现实的web开发尤为重要.本主题并不直接关联任何具体的技术,因此,我们将从最基本的概念开始对这个问题进行说明.下面,我们将根据Spring MVC框架,为基于本技术开发的项目提供一系列的解决方案. Spring配置 人们经常会在一台以上的主机上配置一种Web应用程序.例如,在生产中,一个网站可能只有一个实例.除了此实例外,开发人员可以在用于

Spring.net(一)----Spring.NET框架简介及模块说明

Spring Framework天生丽质,因为其先进的架构和对一系列前沿开发思想的集成,使它从一产生就深得开发者欢迎,它将设计模式运用到了炉火纯青的地方,它的幽雅和魅力征服了许多JAVA开发者,使这些开发者成为了它的信徒,得程序员心者得天下,Spring引领了J2EE开发的潮流,同时Spring和各种框架的强强联手也为它的信徒的尽早飞翔插上了翅膀,比如老大哥SSH(配置烦琐的struts和Hibernate.Spring的集成).后起之秀EJSA(身材轻便使用灵活及零配置的EASYJWEB+JP

Hibernate+Spring+Struts2框架相关项目示例

问题描述 我想做一个用Hibernate+Spring+Struts2框架集成的项目 解决方案 解决方案二:lz加油解决方案三:嗯加油

【spring+quartz框架】scheduler.reschedulejob后执行了多次

问题描述 [spring+quartz框架]scheduler.reschedulejob后执行了多次 关于spring+quartz框架配置多线程调度任务,小弟有一事一直没搞明白 一.quartz.properties中配置: #=============================================================== #Configure Main Scheduler Properties #================================

方法-spring +mvc 框架 关于数据字典使用问题

问题描述 spring +mvc 框架 关于数据字典使用问题 项目中的数据字典是tomcat启动时加载数据,如果在数据库中添加数据,刷新界面数据不更新,只有重新启动tomcat才能界面显示数据,怎么在数据字典中加入方法,才能及时更新字典啊. 解决方案 这要看你的数据是从哪儿取得的呀!如果你是在数据库中取得的,这个应该是可以拿到的

spring mvc 框架搭建及详解

现在主流的Web MVC框架除了Struts这个主力 外,其次就是Spring MVC了,因此这也是作为一名程序员需要掌握的主流框架,框架选择多了,应对多变的需求和业务时,可实行的方案自然就多了.不过要想灵活运用Spring MVC来应对大多数的Web开发,就必须要掌握它的配置及原理. 一.Spring MVC环境搭建:(Spring 2.5.6 + Hibernate 3.2.0) 1. jar包引入 Spring 2.5.6:spring.jar.spring-webmvc.jar.comm

easyui-struts2+spring+mybatis框架。 进入一个页面时,同时访问三个url会报错。

问题描述 struts2+spring+mybatis框架. 进入一个页面时,同时访问三个url会报错. 解决方案 这个应该是mybatis查询出错吧. 参数集合里面已经包含了count参数? 解决方案二: 这个是sql语句写错了,你把报错中的sql语句粘出来放数据库执行一下看看会不会报错 解决方案三: 你在controller重新写两个方法针对你上面的请求,你在页面刷新之前同时对page.action进行了访问,还传入了不同的查询条件和参数导致的.注意一下的onBeforeLoad:

在没有spring等框架的情况下实现多数据源的问题

问题描述 在没有spring等框架的情况下实现多数据源的问题 系统是没有spring,hibernate等框架.要求就是系统想要同时连多个数据库,可以执行多个数据库的操作.我是新手,那位大哥帮帮忙!!!! 解决方案 直接用jdbc访问数据库http://blog.csdn.net/xinxin19881112/article/details/4511566http://blog.csdn.net/xiyoukeke/article/details/6370604http://www.cnblog

使用spring mvc 框架,怎么才能将内容显示到页面上去呢

问题描述 使用spring mvc 框架,怎么才能将内容显示到页面上去呢 怎么将值传到我画的红线当中呢.第一次用这样的,不怎么会 整,求指教.谢谢了 解决方案 response=ServletActionContext.getResponse();JSONArray jsResult = new JSONArray();jsResult =JSONArray.fromObject(list);response.setContentType(""text/html; charset=UT