Spring 是java流行的web开发框架,主要用来进行web的层与层之间的解耦。
Spring IOC(控制翻转)和AOP(面向切面编程)是两大核心要点:
Spring本身是基于xml配置来工作的,但随着项目的扩大,难免要编写大量的xml配置。在此条件下利用注解的形式进行配置更加流行。
Spring IOC :将对象给Spring容器进行创建,从而减少层与层之间的耦合,利于以后软件维护。
基本的Spring applicationContext.xml配置信息:
<!-- bean 表示spring管理的实体类 -->
<!--
id:表示bean标签的唯一标识,不能重复,同时,id的格式为类名首字母小写
class:表示实体类所在的路径:包名.类名
单例和多例的配置scope,默认是单例
-->
<bean id="hello" class="pojo.Hello" scope="prototype"></bean>
<!-- 懒加载机制,为了防止一次性全部加载bean进行懒加载,懒加载只是对单例有效 -->
<bean id="helloA" class="pojo.Hello" lazy-init="true"></bean>
<!-- 别名 -->
<alias name="hello" alias="hellob"/>
<!-- 配置静态工厂 -->
<bean id="calenderS" class="per.factory.StaticFactory" factory-method="getCalender"></bean>
<!-- 配置实例工厂 -->
<bean id="calenderFactory" class="per.factory.StaticFactory"></bean>
<bean id="calender" factory-bean="calenderFactory" factory-method="getCalender2"></bean>
<!-- 配置Spring工厂类 -->
<bean id="springCalender" class="per.factory.SpringFactory"></bean>
<!-- 进行配置加载销毁 -->
<bean id="initDe" class="pojo.InitDes" init-method="init" destroy-method="destroy"></bean>
<!-- DI 依赖注入的例子 -->
<bean id="dog" class="pojo.Dog">
<property name="name" value="旺旺"></property>
<property name="age" value="12"></property>
<property name="food">
<list>
<value>猪肉</value>
<value>馒头</value>
</list>
</property>
<property name="play">
<set>
<value>篮球</value>
<value>足球</value>
</set>
</property>
<property name="childs">
<map>
<entry key="小黄" value="老大">
</entry>
<entry key="小白" value="老二">
</entry>
</map>
</property>
<property name="brith" ref="date">
</property>
</bean>
<bean id="date" class="java.util.Date"></bean>
<!-- 利用构造方法进行配置 -->
<bean id="dog2" class="pojo.Cat">
<!--
index:为构造方法的第几个参数进行配置
name:为构造方法的那个名字的参数进行配置
type:该参数的类型
ref:bean的引用
value:所配置的值
-->
<constructor-arg index="0" type="java.lang.String" value="ss">
</constructor-arg>
</bean>
以上将java中的类配置进Spring中Bean进行管理,就叫做控制翻转(IOC)
将Bean中的变量通过set方式或者有参构造函数的方式进行设置,叫做依赖注入(DI)
由于配置的信息过于多,与是Spring提供了利用注解的方式进行配置:
利用注解配置信息,需要导入Sping的Context 的jar包:
下面在xml配置中开启包扫描:
<!-- 开启包扫描 -->
<context:component-scan base-package="cn.tedu.beans"></context:component-scan>
@Component注解:用于注册一个类为bean,在类上写这个注解会被Spring注册为bean
@Component
public class Person{
}
@Autowired注解:进行将创建了的bean,注入到对象中
@Component
public class Person{
@Autowired
private Dog dog;
@Autowired
private Cat cat;
}