SpringIOC概述

Spring

Spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架。

1.控制反转IOC(Inversion of controller):是把程序中的类与类之间的依赖关系交给容器处理,一般有两种方式。一种是依赖查找DL(dependency lookup):程序提供查找方式,交给容器处理。另一种是依赖注入DT(dependency injection):程序不提供查找放手,提供合适的构造方法或者setter方法,让容器进行注入来解决依赖的关系。Spring的控制反转就是通过注入来实现的。

什么是依赖:一个类实现某种功能,需要依靠领一个类实现。

依赖注入:是指一个对象需要另一个对象时,无需在代码中创建,而是依赖于外部容器,由外部容器创建后传递给程序。依赖注入是目前为止最好的解耦方式,因为依赖关系是依赖配置文件的方式组织在一起,而不是而不在程序中硬编码。

1.描述依赖关系有两种:

a.通过构造方法的方式注入

<?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">
   
    <!--相当于我们java代码的 UserService userService = new UserService()  -->
    <!--     通过构造方法的方式注入 -->
   	<bean id= "userService" 
   			 class = "com.fz.systemmanage.service.UserServiceForSpring">
   		<!-- <constructor-arg ref="userDao"></constructor-arg>	   	 -->
   		 <constructor-arg ref="userDaoOther"></constructor-arg>	 		 
   	</bean>  
    <!-- <bean id= "userService" 
   			 class = "com.tz.spring.sysmanage.service.UserServiceForSpring">
    	<property name="userDao" ref="userDaoOther"></property>
    </bean>  -->
     <!--相当于java代码的 UserDao userDao = new UserDao()  --> 
     <bean id = "userDao" 
     		class = "com.fz.systemmanage.dao.impl.UserDao"></bean>
     		
     <!--相当于我们java代码的 UserDaoOther userDaoOther = new UserDaoOther()  --> 
     <bean id= "userDaoOther" 
     		class= "com.fz.systemmanage.dao.impl.UserDaoOther"></bean>
</beans>

b:通过setter方法注入

<!-- 通过setter方法注入	 -->
    <bean id= "userService"  class = "com.fz.systemmanage.service.UserServiceForInterface">
   	<property name="userDao" ref="userDaoOther"></property>
    </bean>  
    <bean id = "userDao" 
     		class = "com.fz.systemmanage.dao.impl.UserDao"></bean>
   
    <bean id= "userDaoOther" 
     		class= "com.fz.systemmanage.dao.impl.UserDaoOther"></bean>
     		


注解的注入:就是通过注解标签的方式来替换xml配置文件里面的注册和依赖关系的描述。

注解的实现步骤:

a.加入jar包:spring-aop-4.3.2.RELEASE.jar

b.加入context约束

c.在配置文件applicationContext.xml配置定义扫描需要用到的直接 的包路径

<?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.fz.annotation"></context:component-scan>  
</beans>      

d.在需要注解的bean对象前面加入注解标识符

@Component 相当于配置文件中<bean id=" " class=""></bean>

定义component注解的三种方式

a.@Repository:这个注解主要声明在dao的类组件

b.@Service:这个注解主要是在Service类中声明

c.@Controller:这个注解主要是声明在控制类中(Springmvc/struts2/action/controller)

e.用注解表示autowire声明依赖关系

@Resource java的注解,它是默认以buName方法注入,byName找不到的话,再用byType去匹配

@Autowired Spring的注解,默认的是以byType注入,如果有多个实现类,它再用byName的方法去匹配

@autowired @Qualifier spring的注解,两个一起用,指定用byName去匹配。




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值