spring的理解与学习(一)

说到spring我相信所有的人都不会陌生,了解了他的IOC和AOP之后你会发现原来代码可以写的这么优雅。废话不多说,我现在想先说一说spring的架包。

首先是spring-core-xxxx这个包是spring的核心包,主要是IOC容器的一些对象,同时他是依赖于common-logging-xxx架包的。spring-aop-xxx也是显而易见的是关于AOP的一些对象,spring-bean-xxx其实和spring-core-xxx是相关联的,他主要是用来创建对象的,剩下的是spring-context-xxx和spring-expression-xxx两个架包。

关于spring的架包下载,现在似乎spring用的是maven下载的,相关的dependency可以在spring官网上找到,如果需要架包也可以在百度上找到资源,下面进入正题。

spring的IOC可以降低程序之间的耦合性,以便程序员后期对项目的修改和维护。spring的核心文件是他applicationContext.xml(xml文件名字可以自己定义)的文件。

<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"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
         http://www.springframework.org/schema/beans/spring-beans.xsd
         http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">
  <bean id="user" class="xxx.xxx.xxx" >
  </bean>       
</beans>

这个格式就是applicationContext.xml里的格式,这里面bean是指需要创建的的对象。

在java中的代码这么写

ClassPathXmlApplicationContext application = new ClassPathXmlApplicationContext("applicationContext.xml");
User user = (User) application.getBean("user");

很明显可以看出先是获取到applicationContext.xml的对象,然后根据bean的id来创建这个对象。不过这么创建的对象是单例的,也就是只创建这么一个对象。所有想要他不是单列可以加入

<bean id="user" class="xxx.xxx.xxx" scope="prototype" ></bean>

程序默认得是饿汉式的单例模式,如果想要用懒汉式模型加入

<bean id="user" class="xxx.xxx.xxx" scope="singleton" lazy-init="true"></bean>

这是最简单的无参数构造创建的一个对象,如果想要加入构造函数的话可以这么些

<bean id="user" class="xxx.xxx.xxx" scope="prototype" >

<constructor-arg value="20" index="0" name="age"></constructor-arg> //有index的话可以不用写name,这个name表示的是参数的名字,index表示的参数的索引位置

<constructor-arg value="张三" index="1" name="name" type="int"></constructor-arg>//这里type可以是数据的基本类型,也可以是类,不过类必须写全包括包名

<constructor-arg  index="1" name="hello" type=" ref="已创建的对象"></constructor-arg>//这里ref里面索引必须是一个已经创建的对象,同时不能在使用value属性

</bean>

这里是普通创建对象。接下来是工厂创建对象,首先是非静态创建对象,

<bean id="userfactory" class="spring.test.hello.UserFactory"></bean>
  <bean id="getUserByFactory" factory-bean="userfactory" scope="prototype" factory-method="getInstance"></bean>
//先创建一个userfactory的工厂,然后根据工厂来取对象,这里factory-method表示是工厂内部用的什么方法创建的对象,factory-bean表示用那个工厂去创建对象。

然后是工厂静态的去创建对象

 <bean id="gubsf" class="spring.test.hello.UserFactory" factory-method="getStaticInstance"></bean>这里class是工厂类所在的地方,然后factory-method是工厂内部所对应的静态创建对象的方法。

  然后最后一块是依赖注入模块。

依赖注入主要是通过set方法去将对象或值注入到对象里面

<bean id="user" class="x" p:name="张三" p:age="20">
  </bean>
这里
我用的是p空间,name是属性的值,注入的是普通的变量

 <bean id="users" class="spring.test.hello.UserService">
  <property name="
user" ref="user"></property>
  </bean>
这里我通过property这个去注入,这里注入user对象


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值