标签:scope 作用域 接口 容器 ext.get 概念 over apc prot
Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。
Spring 框架是一个分层架构,由 7 个定义良好的模块组成。Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式
组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下:
BeanFactory
,它是工厂模式的实现。BeanFactory
使用控制反转 (IOC) 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。
控制反转模式(也称作依赖性介入)的基本概念是:不创建对象,但是描述创建它们的方式。在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。容器 (在 Spring 框架中是 IOC 容器) 负责将这些联系在一起。
IOC实现模式:1、通过 JavaBean 的属性(例如 setter 方法)分配依赖性
2、依赖性以构造函数的形式提供,不以 JavaBean 属性的形式公开
面向方面的编程,即 AOP,是一种编程技术,它允许程序员对横切关注点或横切典型的职责分界线的行为(例如日志和事务管理)进行模块化。AOP 的核心构造是方面,它将那些影响多个类的行为封装到可重用的模块中。
AOP 和 IOC 是补充性的技术,它们都运用模块化方式解决企业应用程序开发中的复杂问题。在典型的面向对象开发方式中,可能要将日志记录语句放在所有方法和 Java 类中才能实现日志功能。在 AOP 方式中,可以反过来将日志服务模块化,并以声明的方式将它们应用到需要日志的组件上。当然,优势就是 Java 类不需要知道日志服务的存在,也不需要考虑相关的代码。所以,用 Spring AOP 编写的应用程序代码是松散耦合的。
第一步:先去了解一下spring的官网,在里面找到spring的框架的jar,最新版的就可以
第二步:在你的eclipse中见一个Java project项目就可以,创建一个lib文件夹将你的jar包放入其中并引入,在你的src文件下创建一个xml文件,是关于spring的一些配置的,这里名字可以自己定义,以后会有指定的名字叫applicationContext.xml,也可以现在就设置这个名,项目结构:
第三步:先建一个接口和他的实现类
接口
package com.spring.action; /** * * @author 坚持到你GL * */ public interface HelloWorld { public String hello(); }
实现类
package com.spring.action; /** * * @author 坚持到你GL * */ public class HelloWorldImpl implements HelloWorld{ @Override public String hello() { // TODO Auto-generated method stub return "Hello World!!!"; } }
第四步:配置一下你的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" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean id="helloWorld" class="com.spring.action.HelloWorldImpl"></bean>
简单说一些其中的属性说明,一些没出现的属性说明
<!-- id是bean的标识符,必须唯一,如果没有配置id,name默认为标识符 如果配置了id,有配置了name,那么name为别名 name可以设置多个别名,分隔符可以是空格 逗号 分号 class是bean的全限定名,即包名加类名 如果不配置id和name,那么可以根据applicationContext.getbean(Class)获取对象, scope:bean的作用域, 取值:singleton:单例的,整个容器只产生一个对象,默认是单例 prototype:原型,每次获取bean都创建一个新对象 request:每次请求时创建一个新的对象 session:在一个会话范围内只产生一个对象 application:在应用范围内是一个对象 autowire:自动装配 用于简化spring的配置 取值:byname:根据名称(根据set方法中set后面的内容)去查找相应的bean,发现了则装载上 bytype:根据类型自动装配,不用去管id,但同一种类型的bean只能有一个,f否则报错 constructor,当通过构造器注入实例化bean时,装配构造方法 --> <!--可以读取到其他配置的xml,如果在当前目录下,直接写文件名,如果是在其他目录下,要写完整包名,以"/"分隔--> <import resource="beans1.xml"/>
第五步:建一个测试类
package com.spring.action; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; /** * * @author 坚持到你GL * */ public class Test { public static void main(String[] args) { // TODO Auto-generated method stub ApplicationContext apc = new ClassPathXmlApplicationContext("springXML/HelloWorld.xml"); HelloWorld hello = apc.getBean("helloWorld",HelloWorld.class); System.out.println(hello.hello()); } }
这样一个Hello World就完整写完是最简单的一个
【版本声明】本文为博主原创文章,转载请注明出处
标签:scope 作用域 接口 容器 ext.get 概念 over apc prot
原文地址:http://www.cnblogs.com/zhouguanglin/p/7668278.html