p10614040 / spring-study

Spring 入门

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

spring-入门

最近开始学习Spring,虽然项目中一直在使用,但是对它的原理、特点、使用等处于一知半解的状态。这个工程作为Spring学习的案例,希望在学习的过程能充分理解Spring。 ##关于Spring ###对于Spring的理解 Spring是一种轻量级的Java开源框架,充分实现了OOP面向接口编程的**,实现了企业应用开发中低耦合高内聚的目的。
###什么是IOC 控制反转:获得依赖对象的过程反转了,获得依赖对象的过程由自身管理变为由IOC容器主动注入。所以对于IOC的实现方式也叫DI:依赖注入。

什么是AOP

面向接口编程。……

如何理解OOP

……

为什么使用Spring

Spring作为一个bean容器充分解放了开发过程中对象管理的过程,使模块之间低耦合可插拔,提高开发效率降低维护成本。

增加maven工程

添加maven依赖

org.springframework.spring-context.3.2.2.RELEASE

spring-context依赖会自动添加spring-corespring-beans等核心依赖,也会添加commons-logging依赖。

bean配置

关于lazy-init配置,默认是default,初始化的时候就会载入并实例化,如果改为lazy-init="true"会变为在调用的时候才装载并初始化,但是这种方式明显在第一次调用时有性能损耗,所以一般不建议配置。

关于scope配置,默认bean都是单例模式,如果需要设置成每次调用都实例化则需改成scope="prototype"

bean的注入方式之一:构造器注入的四种方式

第一种方法:根据索引赋值,索引都是以0开头的:
        <constructor-arg index="0" value="刘晓刚" />
         <constructor-arg index="1" value="3500" />
         <constructor-arg index="2" ref="dept"/>
         <constructor-arg index="3" value="男" />
第二种方法是根据所属类型传值: 这种方法基本上不怎么适用,因为一个类里可以有好几个相同基本类型的变量,很容易就混淆值传给哪一个参数了所以做好不要使用这种方法:
         <constructor-arg type="java.lang.String" value="刘晓刚" 
         <constructor-arg type="java.lang.Double" value="3500" />
         <constructor-arg type="www.csdn.spring01.constructor.Dept" ref="dept"/>
         <constructor-arg type="java.lang.String" value="男" /> 
第三种方法:根据参数的名字传值:(推荐用法) 在这几种方法里我感觉这种方法是最实用的,他是根据名字来传值的,所以基本上只要名字对了,这个值就可以获取到
         <constructor-arg name="name" value="刘晓刚" />
         <constructor-arg name="salary" value="3500" />
         <constructor-arg name="dept" ref="dept"/>
         <constructor-arg name="sex" value="男" />
第四种方法:直接传值: 直接给参数赋值,这种方法也是根据顺序排的,所以一旦调换位置的话,就会出现bug,这种方法已经很原始了
         <constructor-arg  value="刘晓刚" />
         <constructor-arg  value="3500" />
         <constructor-arg  ref="dept"/>
         <constructor-arg  value="男" />

bean的注入方式之二:setter方法注入

在bean方法中定义property name对应的setter进行注入。 setter方法:
	private InjectionDao injectionDao;
public void setInjectionDao(InjectionDao injectionDao) {
	this.injectionDao = injectionDao;
}
bean配置:
	<bean id="injectionService" class="com.iceblock.springstudy.injection.InjectionServiceImpl">
		<property name="injectionDao" ref="injectionDao"></property>
	</bean>

About

Spring 入门


Languages

Language:Java 100.0%