技术学习之spring(第一天)

前言:

软件应用分层架构

标准三层架构:

1:数据访问层:主要是对原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不是指原始数据,也就是说,是对数据的操作,而不是数据库,具体为业务逻辑层或表示层,提供数据服务。

2:业务逻辑层:主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理,如果说数据层是积木,那逻辑层就是对这些积木的搭建。具体的讲主要负责对数据层的操作。也就是说把一些数据层的操作进行组合。

3:表示层:主要表示WEB方式,如果逻辑层相当强大和完善,无论表现层如何定义和更改,逻辑层都能完善地提供服务。主要对用户的请求接受,以及数据的返回,为客户端提供应用程序的访问。

spring所要处理的就是这三层的关系。

什么是spring?

spring是一个开源的框架,功能十分强大,同时也是一个轻量级的容器。

容器:

它帮我们管理业务逻辑层,里边有很多业务逻辑对象,有对象就有对象的生命周期的管理(创建,销毁)。

轻量级:

容器给予的业务逻辑对象多少种服务?spring给用户提供的服务完全有用户自己决定,spring想用什么服务自己开启使用。但是重量级的都是只要你用就把所有的服务都给你,不能自己定制。

spring容器从来不能独立运行,一定借助于其他容器启动,或者借助web容器启动,或者ejb容器启动。

特点:

应用模块之间耦合度小,组件都是可重用的,都是各自打包的。

Spring的核心组件:

(1)Spring Core(IOC) 核心容器,提供组件的创建、装备、销毁

(2)Spring Context Spring上下文,是一个接口ApplicationContext(继承自BeanFactory接口)的实现

(3)Spring Web容器,web应用上下文,是webApplicationContext接口的实现

(4)SpringDAO容器,是SpringDAO 支持模块,是为了简化DAO的使用

(5)SpringORM

(6)Spring AOP ,对AOP编程支持的模块

(7)Spring MVC,类似于Spring表示层的一个框架

就目前来说,刚巩固Spring所以重点学习IOC和AOP。

Spring  ioc(核心部分):

ioc又被称为控制反转.分为两部分:DI(依赖注入)和DL(依赖查找)

   DI:Dependency Injection依赖注入,组件不做定位查询,只提供相应方法,由容器创建对象,并调用相应方法设置所需对象需要的组件.

  DL:Dependency Lookup依赖查找,容器创建对象并提供回调接口和上下文环境给组件,需要时通过接口从容器中查找对象

依赖查找,现在使用不太多。(EJB使用的更多,将对象创建好后,放到容器中。)

IOC解决:对象谁来创建的问题

DI解决:对象间的关系如何建立的问题。

 org.springframework.beans及org.springframework.context包是IOC容器的基础

IOC的配置文件:

配置Spring通过读取配置元数据来对应用中各个对象进行实例化,配置以及组装,通常使用XML文件来作为配置元数据的描述格式。

  可以将XML配置分别写在多个文件中

可以将多个配置放在一个String数组中传递给容器进行初始化

      eg: ApplicationContext ac = new ClassPathXmlApplicationContext(

            new String[]{"services.xml","daos.xml"})

   也可以在XML中使用<import resource="" />来进行导入

   XML基本结构如下:

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

   <beans xmlns=".....">

      <bean id=".." class="..." >

         <property name="..." ... />

      </bean>

      ...

   </beans>

IOC注入方式:

可以这样理解其实:Spring是用来管理bean的,也就是说你在写实体类怎么给它设置属性就怎么注入即:

(1)setter注入可以看作set方法设置属性(也就是说要想使用setter就必须 是bean提供get/set方法)有以下几种属性注入:

  A、基本类型(8中基本类型+字符串)的装配(要想使用setter就必须 是bean提供get/set方法)

例子:

public class HelloBean {

private String name;

private int age;

public String sayHello(){

return "hello "+name +",your age is" + age;

}

.............

}

配置文件applicationContext.xml

<bean id="helloBean" class="ioc.HelloBean">

<property name="name">

<value>terry</value>

</property>

<property name="age" value="20">

</property>

</bean>

<!--id是Bean的唯一标识,要求在整个配置文件中要唯一,也可使用name属性

,bean标签里面的id和name属性都可以用来标识这个配置的对象,

 -->

<!--property 对于所有用setter方式来注入的必须用Property来指定-->

<!--value 是对以基本类型,都用value来注入,可以实现自动的数据类型转换-->

      B、对象类型的装配

      C、集合的装配

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值