spring入门

1、Spring
Spring:一个JavaEE轻量级的一站式 Java EE的开发框架。Spring框架更加强调的是它的轻量级(模块的可插拔)!!也就是说,除了内核以外模块,如果你不想使用可以不用,它能够整合任何第三方的框架。所以,在现实开发中,Spring主要用于整合其他框架。

JavaEE: 就是用于开发B/S的程序。(企业级)
轻量级:使用最少代码启动框架,然后根据你的需求选择,选择你喜欢的模块使用。
一站式:提供了,表示层(Struts2),服务层,持久层的所有支持。(功能齐全,Spring全家桶)

下载spring框架的zip包路径为:http://repo.springsource.org/libs-release-local/org/springframework/spring/

 

2、根目录说明

(1)类库规程

(2)包说明

 

spring-aop-4.2.9.RELEASE.jar           实现了AOP的支持

spring-aspects-4.2.9.RELEASE.jar         AOP框架aspects支持包

spring-beans-4.2.9.RELEASE.ja          r内核支撑包,实现了处理基于xml对象存取

spring-context-4.2.9.RELEASE.jar          内核支撑包,实现了Spring对象容器

spring-context-support-4.2.9.RELEASE.jar      容器操作扩展包,扩展了一些常用的容器对象的设置功能

spring-core-4.2.9.RELEASE.jar           内核支撑包,Spring的内核

spring-expression-4.2.9.RELEASE.jar        内核支撑包,实现了xml对Spring表达式的支持

spring-instrument-4.2.9.RELEASE.jar        提供了一些类加载的的工具类

spring-instrument-tomcat-4.2.9.RELEASE.jar     提供了一些tomcat类加载的的工具类,实现对应Tomcat服务的调用

spring-jdbc-4.2.9.RELEASE.jar           SpringJDBC实现包,一个操作数据库持久层的子框架

spring-jms-4.2.9.RELEASE.jar           集成jms的支持,jms:Java消息服务。

spring-messaging-4.2.9.RELEASE.jar        集成messaging api和消息协议提供支持

spring-orm-4.2.9.RELEASE.jar           ORM框架集成包,实现了Hibernate,IBatis,JDO的集成。

spring-oxm-4.2.9.RELEASE.jar           Spring OXM对主流O/X Mapping框架做了一个统一的抽象和封装。就是对应XML读写框架的支持

spring-test-4.2.9.RELEASE.jar           Spring集成JUnit测试

spring-tx-4.2.9.RELEASE.jar            事务代理的支持

spring-web-4.2.9.RELEASE.jar           SpringWeb通用模块

spring-webmvc-4.2.9.RELEASE.jar         SpringMVC子框架

spring-webmvc-portlet-4.2.9.RELEASE.jar      Spring对门户技术(portlet)的支持

spring-websocket-4.2.9.RELEASE.jar        Spring对websocket的支持

 

3、入门事例
Spring是一个Ioc框架。要实现Ioc(控制反转)的前提,是不用new就可以创建对象。所以我们首先需要证明使用Spring框架,不用new就可以创建对象。

步骤:

第一步先导包:spring-beans-4.2.9.RELEASE.jar、spring-context-4.2.9.RELEASE.jarspring-core-4.2.9.RELEASE.jar、spring-expression-4.2.9.RELEASE.jar

第二步配置xml文件:name为变量名,class包名为类名
<bean name="text" class="cn.ong.Text"></bean>

第三步代码如下
//创建一个ApplicationContext对象,根据xml配置创建一个对象
//直接读取Spring的src目录下的配置文件的子类是ClassPathXmlApplicationContext
ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
//在容器中取出对象
HelloWorldService helloWorldService = context.getBean("helloWorldService", HelloWorldService.class);
helloWorldService.say(); //调用这个对象中的方法
context.close();     //结束程序,可以关闭容器

 

4、使用sts开发spring程序
由于Spring的配置文件较多,基于Eclipse配置也比较复杂。为了提高开发的效率,建议使用STS开发工具开发,或者在Eclipse安装一个STS插件
通过STS插件,配置文件可以直接通过工具管理,不需要做过多的配置。

 

5、控制反转 IoC(Inversion of Control):代码的调用权(控制权)从调用方转移给被调用方(服务提供方)的设计模式称为控制反转


6、标签说明
(1)alias标签 作用:为已配置的bean设置别名
(2)bean标签:用于配置类,让spring框架启动的时候,创建该配置的类的对象,并且放在Spring容器(context)里面
  属性:
    name:声明对象名,如果不写,就是没有对象名
    id:声明对象名,因为容器里面的对象名是不可以重复的。id比name更容易说明这一点。功能与name一样的
    class:用于指定创建对象的类名
    scope:作用域,Spring容器里面的需默认是单例的,Spring容器可以通过该属性指定对象是原型还是单例的,设定为 scope="prototype" 表示为原型,设定为 scope="singleton" 表示为单例

    init-method:设置创建对象的时候,调用初始化方法
    destroy-method:设置对象被回收时,调用注销的方法

 

7、实例化Bean的四种方式
(1)通过class直接创建 <bean name="customerService" class="cn.ong.service.CustomerService">
(2)通过静态方法工厂创建(了解)静态工厂类
(3)通过实体工厂创建(了解)实体工厂,注意create方法没有static
(4)内置FactoryBean工厂创建对象的实现,通过实现FactoryBean的接口创建工厂类对象。必须返回泛型指定的类型的对象,FactoryBean创建对象的应用场景,有这么一种情况,创建好的对象需要设置很多参数再返回。

 

8、Spring依赖注入(重点):就是属性不用new创建对象,通过配置文件的配置将Spring容器里面的对象注入给对应的属性

(1)set方法注入:使用<property></property>标签
 一个property标签匹配一个set方法,所以注入的类的属性必须有set的方法
 只要是标量类型(八种基本类(以及包装类)和String类型)可以使用value设置
 如果非标量类型,必须使用ref引用对象
如非标量类型是的配置:
   <property name="createDate"><!-- 创建一个Date对象返回给属性 -->
     <bean class="java.util.Date"></bean>
  </property>
或者这样配置:
   <bean name="now" class="java.util.Date"></bean> <!-- 配置一个时间类 -->
   <property name="createDate" ref="now"></property>

(2)构造方法注入 使用<constructor-arg name="" value=""></constructor-arg> 标签注入
index:通过下标指定字段属性,从0开始
type:指定类型,除非接收的类型是Object,否则不需要指定类型
name:指定对应的构建方法的参数名
value:指定标量类型的值
ref:引用容器里面的其他对象

如:
<constructor-arg name="name" value="李四"></constructor-arg>
<constructor-arg name="age" value="20"></constructor-arg>
<constructor-arg name="createDate" >

(3)p标签注入属性
p命名空间的作用,就是将<property标签配置的属性通过 标签属性的方式来配置
如:
   <bean name="customerService" class="cn.ong.service.CustomerService" p:name="张三" p:age="20"
p:createDate-ref="now">


(4)注入集合数据
 数组数据注入:使用<array></array>标签,设置一组数组的标量类型
       <property name="myStrs">
        <array>
         <value>aa</value>
         <value>bb</value>
        </array>
       </property>

 ist集合:注入使用<list></list>标签
 set集合:注入使用<set></set>标签

 map集合数据注入:使用<map></map>标签 注意:这个的key和value写在标签里面
    <property name="myMap">
      <map>
       <entry key="name" value="zhangsan"></entry>
       <entry key="age" value="20"></entry>
       <entry key="createDate"><bean class="java.util.Date"></bean></entry>
      </map>
      </property>

 Properties集合:也是键值对,但是键值必须是String类型,使用<props></props>标签
                 注意:这个的key写在标签里面,value写在标签外面
    <property name="myProps">
      <props>
        <prop key="name" >张三</prop>
        <prop key="age">20</prop>
      </props>
    </property>

 

spring框架,配置文件放在源代码包里面的,需要加上classpath:开头
象这种#{} ${} *{}这个表达式统称OGNL表达式,
   JSP里面称${} 为EL表达式
   Spring里面:将#{} ${}称为Spring表达式
   Mybatis里面 将#{} ${} 直接成OGNL表达式

9、获得Properties文件的值
Spring配置文件支持通过Properties文件的Key获得对应的值。实现该功能是通过
(1)PropertySourcesPlaceholderConfigurer指定Properties的路径
(2)通过${Key}来获得Properties文件对应Key的值

最后需要配置上这个标签:customer.properties 配置的文件名
    <context:property-placeholder file-encoding="UTF-8" location="classpath:customer.properties"/>

posted @ 2019-04-17 17:14  zhanhong  阅读(139)  评论(0编辑  收藏  举报