Spring入门概念
一 spring是什么?
Spring Framework(简称Spring)是J2EE应用程序框架,不过,更严格地讲它是针对Bean的生命周期进行管理的轻量级容器(Lightweight container),可以单独利用Spring构筑应用程序,也可以和Struts,Webwork等众多Web应用程序框架组合使用,并且可以与Swing等桌面应用程序API组合。所以Spring并不仅仅只能应用在J2EE中,也可以应用在桌面应用及小应用程序中。针对Spring开发的组件不需要任何外部库。
Spring是一个开源的控制反转和面向切面的容器框架,主要目的是简化企业开发
Spring主要两大特点:
IOC:控制反轉 將实例化对象交给Spring框架
DI:依賴注入 将对象之间的关系交给Spring来维护
1.給我們創建對象
2.給我們維護對象之間的關係
1.一個對象是另一個對象的成員變量(聚合關係)
2.一個對象是另一個對象方法裏的參數 (組合關係)
3.一個對象是另一個對象構造函數的對象
ApplicationContext的主要实现类:
ClassPathXmlAppLicationContext:从类路径下加载配置文件
FileSystemXmlAppLicationContext:从文件系统中加载配置文件
Spring支持3中依赖注入的方式
1.属性注入
2.构造器注入{
<bean>
<constructor-arg value="Audi" index="?"/>//加入index可以实现无序的匹配参数,一般默认不写index,按照规范顺序写
若字面值中包含特殊字符,可以使用<![CDATA[//这里放入特殊字符]]>把字面值包裹起来。
可以使用专用的<null/>元素标签为bean的字符串或其他对象类型的属性注入null值
</bean>
}
3.工厂注入
Spring支持级联属性的配置
如果对象之间存在对象关联时,可以直接通过成员对象.属性来设置属性
###集合属性 数组、list、set
对象关联属性可能是一个集合
<property name="cars">
<list>
<ref bean="cat1"/>
<ref bean="cat2"/>
</list>
<map>
<entry key = "" value-ref="">;
</map>
</property>
<props>定义java.util.Properties包
<property name="properties">
<prop key="dbuser">root</prop>
</property>
构造器
<constuctor-arg value="${}"/>
//引入外部的prop
<context:property-placeholder location="相对路径"/>
<property name="properties">
<prop key="dbuser">//El表达式${"dbuser"}</prop>
</property>
使用P命名空间范例 P标签类似于<property>标签
<bean id = "person" class = " path" p:name="" p:age="" p:cars-ref="cars"/>
####Bean的作用域
可以在<bean>元素的scope属性里设置bean的作用域
默认情况下,Spring只为每个在IOC容器里生命的bean创建唯一一个实例,整个IOC容器范围内都能共享该实例;
在bean标签里面加上scope属性
类别
1.Singleton 在SpringIOC容器中只创建一个对象
2.prototype 每次调用新生成一个对象
###SPEL
#{}
可以用SPEL来代表bean
<property name="car" value="#{car}"/>
可以代表属性
可以进行运算
####注解
组件扫描:Spring能够从classpath下自动扫描,侦测和实例化具有特定注解的组件
特定的组件包括
@compoment 基本注解,标识了一个受Spring管理的组件
@respository(标识持久层组件)
@Service(标识了业务层组件)
@Controller(标志了表示层组件)
在ClassPath中扫描组件
在Spring的配置文件中声明<context:component-scan>:
base-package属性指定一个需要扫描的基类包,Spring容器将会扫描这个基类包里及其子包中的所有类
当需要扫描多个包时,可以使用逗号分隔。
<context :component-sacn
bace-package="包名"
resource-pattern=""
>
##组件装配
元素自动注册DI
@Autowired和@Resource、@Inject注解的属性