Spring 入门
摘要
主要是理解IOC控制反转, DI依赖注入, 以及装配, 这几个概念.
本文从Spring中以上概念的作用谈起, 指出概念以及对概念的理解.
随便一篇教程,一本入门教材就可以写个demo,这里不谈步骤,只谈一些初步的理解。
让spring给我们新建对象
spring就是一个IOC框架 (先不用理解,随后解释),简单来说就是我们要把在项目中新建对象这件事完全交给框架去做,框架自然就是spring。(ioc ,Inversion Of Control ,控制反转,意思其实就是原来我们new对象的控制反转给spring)
代码用代码创建对象,这件事其实底层用的一定是java的反射机制,但这些我们可以暂时不用管。从使用层面来看,就是用配置文件告诉spring新建什么对象,而现在大部分配置文件的形式都为xml,spring也不例外。
spring怎么设置对象属性?
除了告诉spring要新建什么对象之外,属性呢?我们通常new对象都会传入参数,或者用setName(“小米”)类似的方式对对象进行属性设置, 而且更进一步, 很多事时候我们会在对象中嵌套对象, 别想多了, 很常见的, 如下
class 仓库{
private Product p;
setProduct(Product p){...}
}
spring中怎么解决问题呢? 答案是通过xml配置。
在xml中配置,为仓库注入product,这也就是所谓的依赖注入 。(依赖注入 , Dependency Inject, 由spring完成这种类之间的依赖被依赖的关系,简单来说就是spring完成属性的设置包括对象关联的设置。)
我们来看一段典型的代码。
<bean name="c" class="com.仓库">
<property name="name" value="category 1" />
</bean>
<bean name="p" class="com.Product">
<property name="name" value="product1"></property>
<property name="category" ref="c"/>
</bean>
以上在xml中声明了两个bean, 以及用class字段指定他们对应的实体. 这就是声明新建什么对象.
property也就是设置属性, 其中ref中指向了第一个bean, 也就是指明了依赖关系.
以上也叫做bean的装配 , 就是新建bean, 配置bean属性, 设置依赖关系.
xml配置能简单一点吗?
可以的, 答案是注解. 这里同样不谈语法. 所谓的注解就是不在xml中配置, 而是在类代码上通过简单的注释达到相同目的, 其实应该是告诉编译器怎么设置, 这和xml的作用完全一样.
不使用注解的情况下, 需要在xml中配置 | 使用注解的情况下 |
---|---|
1. bean对应的类地址 | @component指明该类作为bean,该类自带地址 |
2. name属性,指定getBean时的标记 | @component(“s”),在括号中指明 |
3. 属性配置property | @Resource(name = “c”)直接在对应属性上配置,引用1中的name注明依赖 |