spring框架
一、核心掌握的内容
1、spring IOC(控制反转,依赖注入)
2、spring AOP(面向方面(切面)编程)
3、spring对jdbc的支持
4、spring整合其他框架(struts2 hibernate)
5、spring MVC
二、Spring是什么
Spring是一个开源的控制反转(IOC)和面向切面(AOP)的容器框架,它的主要目地是简化企业开发 三、控制反
转
IOC(控制反转,依赖注入) 控制反转的核心:依赖对象的创建,不是自己负责,而是通过外部容器负责 这就是控制
的反转。这样可以做到解耦,使得使用者和创建者分离 (一个类要么使用对象,要么创建对象,不应兼而有之) 这个
外部容器可以是创建型模式(如工厂) spring本身就是强大工厂 依赖注入:把依赖关系通过配置文件+反射来解耦属性
的初始化。
四、使用spring好处
1、spring依赖注入控制反转好处:降低组建的耦合度,实现软件各层之间的解耦
2、可以使用容器(Controller) 事物处理 开发人员无需手工编写事物处理
3、容器提供单例模式支持(默认生成的对象都是单例的),开发人员不需要自己编写实现代码;
4、容器提供AOP技术
5、容器提供很多辅助类
6、spring对主流框架提供了集成支持,如集成hibernate,struts2等
五、轻量级框架与重量级框架概念划分
加载资源耗费内存的多少
六、实例化spring容器的方法
方法一、 在类路径下寻找加载配置文件,来实例化容器 ApplicationContext ctx= new
ClassPathXmlApplicationContext(“springDemo2/bean1.xml”); ApplicationContext ctx= new
ClassPathXmlApplicationContext( new String[]{“springDemo2/bean1.xml”,“springDemo2/bean2.xml”,……}
方法二、 在文件系统路径下寻找配置文件来实例化容器 ApplicationContext ctx= new
FileSystemXmlApplicationContext(new String[]{"/aa/bean1.xml","/bb/bean2.xml"})
方法三、 通过Resource装载,然后获得BeanFactory
方法四、 通过带@Configuration的配置
七、三种实例化bean的方式
1、使用类构造器实例化
<bean id="personDao" class="springDemo2.PersonDao"></bean>
2、使用静态工厂方法实例化
<bean id="personDao" class="springDemo2.PersonDaoFactory" factory-method="createPersonDao">
</bean>
public class PersonDaoFactory
{ public static PersonDao createPersonDao()
{ return new PersonDao(); } }
3、使用实例工厂方法
<bean id="personDaoFactory1" class="springDemo2.PersonDaoFactory1">
</bean>
<bean id="personDao" factory-bean="personDaoFactory1" factory-method="createPersonDao">
</bean>
八、指定Bean的初始化方法和销毁方法
在Person类 中需要写init() destroy()方法 public void init(){ System.out.println(“init方法调用”); } public void destroy(){
System.out.println(“销毁方法调用”); } <bean id=“person” class=“springDemo2.Person” init-method=“init” destroy-
method=“destroy”></bean>
九、集合类型的装配
set list Properties map xml文件头部添加 xmlns:p=“http://www.springframework.org/schema/p" 可以使用p:简便写法
<bean id="person" class="springDemo2.Person" p:id="111" p:name="张三" p:age="20" />
十、Bean的作用域
每个spring IOC容器中一个bean只有一个对象实例,默认情况下,会在容器启动时初始化bean, 我们可以指定Bean节
点的lazy init=“true"来延迟初始化bean,这时候,只有第一次获取bean才会初始化bean <bean id=“person”
class=“Person” lazy-init=“true” > 如果想对所有的bean应用延迟初始化,可以在根节点beans设置为default lazy
init=“true” <beans default-lazy-init=“true”> 每次从容器中获取的bean都是新的对象 scope=“prototype” 默认都是单例的
request session 依赖注入–自动装配依赖对象