答:Spring是一个轻量级的IoC和AOP容器框架。是为Java应用程序提供基础性服务的一套框架,目的是用于简化企业应用程序的开发,它使得开发者只需要关心业务需求。常见的配置方式有三种:基于XML的配置、基于注解的配置、基于Java的配置。
主要由以下几个模块组成:
Spring Core:核心类库,提供IOC服务;
Spring Context:提供框架式的Bean访问方式,以及企业级功能(JNDI、定时任务等);
Spring AOP:AOP服务;
Spring DAO:对JDBC的抽象,简化了数据访问异常的处理;
Spring ORM:对现有的ORM框架的支持;
Spring Web:提供了基本的面向Web的综合特性,例如多方文件上传;
Spring MVC:提供面向Web应用的Model-View-Controller实现。
答:Spring可以解决业务逻辑层和其他各层的耦合问题,也是一个框架的粘合剂,它让面向接口编程思想贯穿了整个系统,特点:高内聚,低耦合,设计层框架!
主要学习spring的以下部分:
1)IOC思想
2)AOP编程
3)声明式事务的支持
4)框架无缝整合其他框架
applicationContext.xml
3.建好后,点击右上角黄色线…application context之后点ok创建完毕
4.在里面创建对象
5.用spring框架在测试类调用对象
答:依赖注入,给对象赋属性值,一定要保留空的构造方法和get/set的方法!
答:控制反转,调用者的实例创建不再由调用者自己创建,而是由spring容器创建,这个过程把实例创建的控制权由应用代码转移到了外部容器,控制权发生了改变。
答:1.Name属性:给对象取名,名字可以同时取多个,但是不同的对象不能重复(大名id只能一个,小名name可以多个,但是不可以跟别的小名重复)
2.Scope对象作用域属性:
1)scope = “singleton” 默认值,Spring容器默认创建的对象是单例!
2)scope=“prototype” 创建的对象是多例(每次使用对象的时候额外创建一个新的)
3)scope=“session” 表示在一次会话范围内,Spring容器中的对象保持一个,公用同一个!
4)scope=“request” 表示在一次请求范围内,Spring容器中的对象保持一个,公用同一个
注意:后两个只能用在web项目里
3.对象懒创建(只有在scope = "singleton"才会生效)
lazy-init表示对象的加载时机(true:懒加载(使用对象的时候才创建);false(spring框架一启动就加载))
4.对象创建完成后调用的方法,和对象销毁后调用的方法
init-method=“对象创建完成后调用的方法”
destroy-method=“对象销毁后调用的方法”
答:1)用无参构造方法创建
<!--方式1:无参构造方法创建对象-->
<bean id="p1" name="person1,person2" class="com.swjd.bean.Person" scope="singleton" lazy-init="true" init-method="init" destroy-method="destroy">
<property name="id" value="957"></property>
<property name="name" value="貂蝉"></property>
<property name="sex" value="女"></property>
</bean>
2)用带参的构造方法创建对象
<!--方式2:用带参的构造方法创建对象-->
<bean id="p3" class="com.swjd.bean.Person">
<constructor-arg index="0" type="int" value="9528"></constructor-arg>
<constructor-arg index="1" type="java.lang.String" value="德玛西亚"></constructor-arg>
<constructor-arg index="2" type="java.lang.String" value="男"></constructor-arg>
</bean>
3)用静态工厂创建对象
<!--方式3:用静态工厂创建对象-->
<bean id="p4" class="com.swjd.beanfactory.PersonFactory" factory-method="createPerson"></bean>
4)用非静态工厂创建对象
<!--方式四:用非静态工厂创建对象-->
<bean id="noStaticfactory" class="com.swjd.beanfactory.NoStaticPersonFactory"></bean>
<bean id="p5" factory-bean="noStaticfactory" factory-method="createPerson"></bean>
答:1)把创建对象交给了Spring进行管理
2)ioc 操作两部分:
1.ico的配置文件方式
2.ico的注解方式
答:1)xml配置文件
2)dom4j 解决 xml
3)工厂设计模式
4)反射
答:1. 构造方法
<!-- 使用有参构造注入属性 -->
<bean id="abc" class="com.bean.User">
<!--
constructor : 构造器
arg : 参数
name="参数名称"
value="值"
-->
<constructor-arg name="uname" value="雷鸣"></constructor>
</bean>
2.set方法(常用)
<!-- 使用set方法注入属性 -->
<bean id="abc" class="com.bean.User">
<!--
name="属性名称"
value="值"
-->
<property name="uname" value="雷鸣"></property>
</bean>
答:用 p: 的属性值 替代 -property-
<bean id="abc" class="com.bean.User" p:uname="luke"></bean>
答:实体类
public class Person{
private String[ ] array;
private List< String > list;
private Map< String , String > map;
private Properties Properties;
/**...省去setter和getter方法...*/
}
xml配置
<!-- bean 省略 -->
<!-- 数组 -->
<property name="array">
<list>
<value>雷鸣1</value>
<value>雷鸣2</value>
<value>雷鸣3</value>
</list>
</property>
<!-- list -->
<property name="list">
<list>
<value>Class1</value>
<value>Class2</value>
<value>Class3</value>
</list>
</property>
<!-- map -->
<property name="array">
<map>
<entry key="key1" value="value1"></entry>
<entry key="key2" value="value2"></entry>
<entry key="key3" value="value3"></entry>
</map>
</property>
<!-- properties -->
<property name="array">
<props>
<prop key="drivareclass">cpm.mysql.jdbc.Driver</prop>
<prop key="username">root</prop>
</props>
</property>