分享

Spring入门经典一

 隐形的翅膀 2008-07-21

Spring

基本概念:

1.什么是spring?有什么用?

2.Spring和其他类似产品的区别?

3.Spring的特点(优缺点)?

4.Spring的内容?

 

什么是spring?有什么用?

Spring就是轻量级的业务层框架,什么是轻量级:第一,spring的文件大小只有1mb,第二,资源消耗,占用内存与其他的产品相比较小(:EJB)

作用:完成业务层的开发

 

Spring和其他类似产品的区别?

轻量级,EJB也是完成业务层的开发,但是他是重量级的框架,EJB的重点在企业应用,那么有些程序没有必要使用重量级的工具来开发轻量级的应用,这样成本过大,spring就是满足完成轻量级应用的业务层框架

 

Spring的特点(优缺点)?

优点:

1.依赖注入(控制反转):什么是依赖注入?在一个对象需要使用另一个对象的时候,只声明另一个对象的接口,它的实例在运行时获得它,作用:就是解决了组件中的耦合,也就是不依赖于固定的对象

2.面向方面编程:什么是面向方面编程?AOP:在预编译或运行时为程序加入新的功能(:加入安全,同步,事务等),编程方式采用的是注释,不用在业务代码中写这些与业务无关的代码了,作用:实现业务与其他代码分离,解耦合,他完善依赖注入(DI)

3.简化javaee编程结构:web的支持(MVC),DAO的支持,ORM的支持

4.类似一站式服务:web,业务的功能都有,用户也可以选择性的使用

 

Spring的内容?

1.核心模块:BeanFactory(用来管理bean组件的,相当于bean的容器,通过独beanxml文件,可以从中知道beanbean的依赖关系和bean的实现)

2.AOP:面向方面编程(声明式中间件服务管理)

3.ORM

4.DAO

5.Web

6.Context:ApplicationContext:作用:增强功能,:程序国际化等

 

第一个Spring:

1.下载spring框架

2.解读spring框架的目录结构

3.实例1(不使用工具)

4.实例2(eclipse)

5.杂项问题

 

下载spring框架:

http://www.

本地: E:\个人数据库\基本结构\专业\spring\参考资料\Spring-framework.zip

 

解读spring框架的目录结构:

解压下载的spring框架:

/dist:核心包,spring.jar(工厂文件集合),还有spring.jar的子包,spring-beans.dtd:定义beans.xml的属性和beans.xml的头部

/docs:spring api文档

/lib:spring的编译和运行所依赖的第三方类库

 

实例1(不使用工具):

程序目标:开发一个spring,功能是显示hello 方法参数 my name is bean属性value

1.设置classpath:添加spring.jar and \lib\jakarta-commons\commons-logging.jar

2.创建一个应用目录:yuchen

3.创建src目录

4.开发一个接口和一个类

5.写配置文件beans.xml:定义这个类,文件的头部可以去spring-beans.dtd中找到

6.写客户端测试类

7.编译运行

 

接口:

package first;

 

public interface Hello{

     public String sayhello(String user);

     }

 

Bean:

package first;

 

public class HelloImp implements Hello{

     private String name;

     public String sayhello(String user){

         return "hello, "+user+"my name is: "+this.name;

         }

     public void setName(String name){

         this.name=name;

         }

     }

 

Xml:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"

         "http://www./dtd/spring-beans.dtd">

 

<beans>

     <bean id="hello" class="first.HelloImp">

         <property name="name">

              <value>spring</value>

         </property>

     </bean>

</beans>

 

Test:

import org.springframework.core.io.ClassPathResource;

import org.springframework.beans.factory.xml.XmlBeanFactory;

import first.*;

 

public class TestHello{

    

     public static void main(String [] args){

              //1.读取配置文件,beans.xml:注意beans.xml的写法:如果放到根目录

              //,那么直接写beans.xml,如果放到子目录下,子目录名/beans.xml

              //2.实例化bean工厂对象,载入xml资源:工厂负责管理bean组件的

              //目前是管理当前xml资源中的bean

              //3.通过bean工厂对象得到你要找的bean实例

              ClassPathResource resource=new ClassPathResource("beans.xml");

              XmlBeanFactory factory=new XmlBeanFactory(resource);

              Hello hello=(Hello)factory.getBean("hello");

              String rst=hello.sayhello("yuchen");

              System.out.println(rst);

         }

     }

 

D:\yuchen> Javac –d d:\yuchen d:\yuchen\src\*.java

D:\yuchen> Javac –d d:\yuchen d:\yuchen\*.java

D:\yuchen> java TestHello

 

实例2(eclipse):

程序目标:测试spring的特性:依赖注入/控制反转,调用A类的业务方法,这个方法需要B类方法提供的数据,A类中,没有B实例,只有B的接口类型,只依赖它的接口,在运行时获得B的实例,从而得到其数据

1.新建java工程

2.配置jar:两个包

3.开发两个接口,两个类

4.beans.xml

5.测试类测试

Model接口:

package yuchen.beanfactory;

 

public interface Model {

     public String supportData();

}

 

View接口:

package yuchen.beanfactory;

 

public interface View {

     public void render();

}

 

Model bean:

package yuchen.beanfactory;

 

public class AcountModel implements Model {

 

     private String ownerName;

     private double balance;

     public String supportData() {

         // TODO Auto-generated method stub

         return "Acdount : \n"+"ownerName :"+this.ownerName+

         "\n balance :"+this.balance;

     }

     public void setBalance(double balance) {

         this.balance = balance;

     }

     public void setOwnerName(String ownerName) {

         this.ownerName = ownerName;

     }

    

}

 

View bean:

package yuchen.beanfactory;

 

public class CommandLineView implements View {

 

     private Model model;

     public void render() {

         // TODO Auto-generated method stub

         String rst=model.supportData();

         System.out.println(rst);

     }

     public void setModel(Model model) {

         this.model = model;

     }

    

}

 

beans.xml:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www./dtd/spring-beans.dtd" >

<beans>

     <bean id="model" class="yuchen.beanfactory.AcountModel">

         <property name="ownerName">

              <value>tarena</value>

         </property>

         <property name="balance">

              <value>1000.56</value>

         </property>

     </bean>

    

     <bean id="view" class="yuchen.beanfactory.CommandLineView">

         <property name="model">

              <ref bean="model"></ref>

         </property>

     </bean>

</beans>

 

test:

package yuchen.beanfactory;

 

import org.springframework.beans.factory.xml.XmlBeanFactory;

import org.springframework.core.io.ClassPathResource;

 

public class Test {

 

     /**

      * @param args

      */

     public static void main(String[] args) {

         // TODO Auto-generated method stub

         ClassPathResource resource=new ClassPathResource("yuchen/beanfactory/beans.xml");

         XmlBeanFactory factory=new XmlBeanFactory(resource);

         View view=(View) factory.getBean("view");

         view.render();

     }

 

}

 

杂项问题:

1.eclipse中引入xml dtd文件

Windows->preferences->web and xml -> xml catalog

Add:uri:要导入的dtd地址 :spring-beans.dtd

Key type:public id

Key:例如:-//spring//dtd//en

 

2.导入log4j

导入:spring/lib/log4j.jar

在根目录下创建log4j.properties文件,内容从H:\spring-framework-1.2.8\test\

log4j.properties里面拷贝

解决了运行中显示红色的log信息的问题

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多