控制反转IoC

1.1Spring组成

Spring框架主要由七大模块组成。
Spring的七大模块

  1. 核心模块
    Spring Core模块是Spring的核心容器,他实现了IoC模式,提供了Spring框架的基础功能。在模块中包含组重要的BeanFactory类是Spring的核心类,负责对JavaBean的配置与管理。Spring Core模块采用Factory模式实现了IoC容器即依赖注入。
  2. Context模块
    Spring Context模块继承BeanFactory类。它还提供了框架式的bean的访问方式和很多企业级的功能,如JNDI访问、支持EJB、远程调用、集成模板框架、E-mail和定时任务调度等。
  3. AOP模块
    Spring集成了所有AOP功能,通过事务管理可以使任意Spring管理的对象AOP化。
  4. DAO模块
    DAO模块提供了JDBC的抽象层,简化了数据库厂商的异常错误。
  5. O/R映射模块
  6. Web模块
  7. MVC模块
    Spring Web MVC模块建立在Spring核心功能之上,这使它能拥有Spring框架的所有特性。

1.2简单配置Spring

jar包名称说明
spring.jar整个Spring模块,包含表中所有的jar的功能
spring-core.jarSpring的核心模块,包含IoC容器
spring-aop.jarSpring的AOP模块
spring-context.jarSpring的上下文,包含ApplicationContext容器
spring-dao.jarSpring的DAO模块,包含对DAO与JDBC的支持
spring-orm.jarSpring的ORM模块,支持Hibernate、JDO等ORM工具
spring-web.jarSpring的Web模块,包含Web application context
spring-webmvc.jarSpring的MVC框架模块

Spring的配置结构如下图
Spring配置结构

1.3 ApplicationContext的应用

ApplicationContext容器不仅提供了BeanFactory的多有特性,同时也允许使用更多的声明方式来得到开发人员需要的功能。

  1. ClassPathXmlApplicationContext类
    从当前类路径中检索配置文件并加载来创建容器,其语法格式如下:
//获取到容器,容器配置文件
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
//从容器中获取指定id的对象
People p = (People) context.getBean("p1");//对象不是new出来的,是从容器中get出来的
  1. FileSystemXmlApplicationContext类
    该类也是ApplicationContext接口的实现类,和1区别在于读取Spring配置文件的方式。它不再从类路径中获取配置文件,而是通过参数指定配置文件的位置,可以获取类路径之外的资源。
ApplicationContext context = new ClassPathXmlApplicationContext(String configLocation);
  1. WebApplicationContext类
    WebApplicationContext是Spring的Web容器,有两种方法可以再Servlet中使用WebApplicationContext。第一种方法是在Servlet的web.xml文件中配置Spring的ContextLoaderListener监听器;第二种方法同样修改web.xml文件,在文件中添加Servlet,使用Spring的org.springframework.web.context.ContextLoaderServlet类。

2.1控制反转与依赖注入

IoC将创建实例的任务交给IoC容器,这样开发应用代码时只需要直接使用类的实例,这就是IoC控制反转,即“依赖注入”,它使程序组件或类之间尽量形成一种松耦合的结构。

依赖注入有三种实现类型,Spring支持后两种:

  1. 接口注入
  2. Setter注入
  3. 构造器注入

2.2bean配置

想要在Spring IoC容器中获取一个bean,首先要在配置文件中的< beans>元素中配置一个子元素< bean>,Spring的控制反转机制会根据< bean>元素的具体配置来实例化这个bean实例。

<bean id="test" class="com.bean.Test">

其中,id属性为bean的名称,class属性为对应的类名,这样通过BeanFactory容器的getBean(“test”)方法就可以获取到该类的实例。

2.3Setter注入

首先创建用户的JavaBean,代码如下:

public class User{
	private String name;//姓名
	private Integer age;//年龄
	private String sex; //性别
	...                 //省略Setter()和Getter()方法
}

在Spring的配置文件ApplicationContext.xml中配置该JavaBean,代码如下:

<bean name="user" class="com.bean.User">
	<property name="name">
		<value>小强</value>
	</property>
	...
</bean>

2.4构造器注入

在用户JavaBean中创建构造方法,代码如下:

public class User{
	private String name;//姓名
	private Integer age;//年龄
	private String sex; //性别
	//构造方法
	public User(String name,Integer age,String sex){
		this.name = name;
		this.age = age;
		this.sex = sex;
	}
}

在Spring的配置文件ApplicationContext.xml中通过< constructor-arg>元素为JavaBean的属性赋值,代码如下:

<bean name="user" class="com.bean.User">
	<constructor-arg>
		<value>小强</value>
	</constructor-arg>
	...
</bean>

以上内容均来自《Java Web从入门到精通》,作为自己的学习笔记,为了记录自己学习和探索的过程,仅供交流和学习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值