Spring IoC

Spring IoC(Inversion of Control)是框架的核心,用来实现控制反转。它基于BeanFactory和ApplicationContext接口。

BeanFactory是用来管理Bean的工厂,负责初始化Bean会根据XML配置文件的定义来进行Bean的装配,BeanFactory的接口有多个实现类。

ApplicationContext是BeanFactory的子接口,主要功能为应用上下文,一般关于配置数据源等一系列配置文件都在其中进行配置例如:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">
   <!-- 指定需要扫描的包(包括子包),使注解生效 -->
   <context:component-scan base-package="com.ch5"/>
   <!-- 配置数据源 -->
   <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
   		<!-- MySQL数据库驱动 -->
   		<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
   		<!-- 连接数据库的URL -->
   		<property name="url" value="jdbc:mysql://localhost:3306/test?characterEncoding=utf8"/>
   		<!-- 连接数据库的用户名 -->
   		<property name="username" value="root"/>
   		<!-- 连接数据库的密码 -->
   		<property name="password" value="root"/>
   </bean>
   <!-- 配置JDBC模板 -->
   <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
   		<property name="dataSource" ref="dataSource"/>
   </bean>
   <!-- 为数据源添加事务管理器 -->
   <bean id="txManager"   
	     class="org.springframework.jdbc.datasource.DataSourceTransactionManager">   
	     <property name="dataSource" ref="dataSource" />   
   </bean> 
    <!-- 为事务管理器txManager创建transactionTemplate -->
	<bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate">  
     	<property name="transactionManager" ref="txManager"/>  
	</bean>
   
</beans>

但实现IoC的主要方法是通过依赖注入有两种注入方式,分别为构造方法注入和setter方法注入,其中主流方式一般通过setter方式进行注入。

参考教材《JavaEE框架整合开发入门到实战》侵删。
本人现役大三小白一枚,如有不足之处还望指正。

posted @ 2020-03-10 18:30  Aaron`Joe  阅读(45)  评论(0)    收藏  举报