SpringIoc-DI和IOC以及bean的生命周期
2018-09-02 23:00
387 查看
spring框架对于java开发者来说是一个比较重要的框架,这几天打算系统的学习一下。
spring的核心
ioc、aop、事物管理
spring优点
- 方便解耦,简化开发【Spring就是一个大工厂,可以将所有对象创建和依赖关系维护,交给Spring管理】
- AOP编程的支持【Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能】
- 声明式事务的支持【只需要通过配置就可以完成对事务的管理,而无需手动编程】
- 方便程序的测试【Spring对Junit4支持,可以通过注解方便的测试Spring程序】
- 方便集成各种优秀框架【Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架的直接支持】
- 降低JavaEE API的使用难度【Spring 对JavaEE开发中非常难用的一些API(JDBC、JavaMail、远程调用等),都提供了封装,使这些API应用难度大大降低】
下载包说明
spring-framework-3.2.0.RELEASE-dist.zip ---Spring开发包
- docs :spring框架api和规范
- libs :spring开发的jar包
- schema :XML的约束文档.
spring-framework-3.0.2.RELEASE-dependencies.zip ---Spring开发中的依赖包
引入的jar包
- spring-beans-3.2.0.RELEASE.jar
- spring-context-3.2.0.RELEASE.jar
- spring-core-3.2.0.RELEASE.jar
- spring-expression-3.2.0.RELEASE.jar
- 开发的日志记录的包:
- com.springsource.org.apache.commons.logging-1.1.1.jar --- 用于整合其他的日志的包(类似Hibernate中slf4j)
- com.springsource.org.apache.log4j-1.2.15.jar
第一个实例
Helloworld.java
[code]package cn.hfits.spring.demo1; public class Helloworld { private String name; public void sayhello() { System.out.println(name+"说:你好......."); } //依赖注入需要提供set public void setName(String name) { this.name = name; } }
测试类
[code]public class TestFunction { @Test public void demo1() { ApplicationContext applicationContext= new ClassPathXmlApplicationContext("applicationContext.xml"); Helloworld obj=(Helloworld) applicationContext.getBean("helloworld"); obj.sayhello(); } }
applicationContext.xml
[code]<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!--注入bean--> <bean id="helloworld" class="cn.hfits.spring.demo1.Helloworld"> <property name="name" value="张三"></property> </bean> </beans>
IOC和DI的区别
IOC:控制反转 【将对象的控制权交由spring管理】
DI:依赖注入【在spring创建对象的过程中,将对象依赖的属性注入类中】
一般我是这样记得:ioc相当于上文中的<bean id="helloworld" class="cn.hfits.spring.demo1.Helloworld"/>
di相当于<property name="name" value="张三"></property>
IOC装配bean
- 构造方法实例化(默认无参数)
- 静态工厂实例化
- 实例工厂实例化
1.构造方法实例化【默认的】
[code]<bean id="student" class="cn.hfits.spring.demo2.Student" ></bean>
2.静态工厂实例化
[code]public class StaticFactory { public static Student getStudent() { return new Student(); } }
xml配置
[code]<bean id="student" class="cn.hfits.spring.demo2.StaticFactory" factory-method="getStudent"></bean>
3.实例工厂实例化
[code]public class StaticFactory { public Student getStudent1() { return new Student(); } }
xml配置
[code]<bean id="studentFactory" class="cn.hfits.spring.demo2.StaticFactory"></bean> <bean id="student" factory-bean="studentFactory" factory-method="getStudent1"></bean>
bean中的其它配置
id遵守XML约束的id的约束.id约束保证这个属性的值是唯一的,而且必须以字母开始,
name没有这些要求 【如果bean标签上没有配置id,那么name可以作为id.】
scope属性:singleton 单列模式【默认的】 prototype 多例的.
bean中属性注入【DI】
-
构造器注入
-
set注入【用的最多的】
-
接口注入
1.构造器注入
[code]public class Teacher { private String name; private int age; public Teacher(String name,int age) { this.name=name; this.age=age; } public void setName(String name) { this.name = name; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Teacher [age=" + age + ", name=" + name + "]"; } }
applicationContext.xml配置
[code]<bean id="teacher" class="cn.hfits.spring.demo3.Teacher"> <constructor-arg index="0" value="马云"></constructor-arg> <constructor-arg index="1" value="46"></constructor-arg> </bean>
2.set注入:xml配置如下,另外提供set方法即可
[code]<bean id="teacher" class=""cn.hfits.spring.demo3.Teacher"> <property name="name" value="马云"></property> <property name="age" value="46"></property> </bean>阅读更多
相关文章推荐
- spring学习总结(七):IOC & DI 配置Bean之bean的生命周期及bean的配置方式
- spring学习总结(六):IOC & DI 配置Bean之作用域、加载外部属性文件、SPEL
- 10004--Spring 中的 Bean 配置--IOC 和 DI
- Spring容器中bean的生命周期以及关注spring bean对象的后置处理器:BeanPostProcessor(一个接口)
- Spring学习——(二)IOC、DI以及常用xml配置
- spring学习总结(五):IOC & DI 配置 Bean 之自动装配及bean之间的关系
- spring的工作原理以及AOP,IOC,DI等概念
- 【JavaWeb-23】spring、IoC控制反转和DI依赖注入入门、基于XML的Bean装配、基于注解的Bean装配
- spring ioc容器注入的集中方式,以及属性注入的集中依赖,继承,使用SPEL表达式,ioc容器的生命周期,bean的几种工厂方法配置方式,bean的自动装配
- Spring-IOC容器之Bean的生命周期
- spring_1-4,IOC&DI概述_配置 Bean_属性配置细节
- Spring--IoC--基于XML的DI-同类抽象Bean
- JAVAWEB开发之Spring详解之——Spring的入门以及IOC容器装配Bean(xml和注解的方式)、Spring整合web开发、整合Junit4测试
- Spring - IOC创建对象的时机,创建Bean的Scope 及其 IOC的 生命周期
- Spring的IOC以及DI
- Spring核心容器的详细解析以及IOC和DI和过程全解
- Spring 的 IOC 容器中 Bean 的生命周期
- SSH中各个框架的作用以及Spring AOP,IOC,DI详解
- Spring应用、原理以及粗读源码系列(一)--框架总述、以Bean为核心的机制(IoC容器初始化以及依赖注入)
- 4.Spring4.x学习[核心篇][IOC/DI简介以及Spring中IOC的方式介绍]