Spring框架好处及IOC个人总结

spring是一个一站式轻量级开源框架,Spring提供了JavaEE各层的解决方案,表现层:Spring MVC,持久层:JdbcTemplate、ORM框架整合,业务层:IoC、AOP、事务控制。Spring的出现取代了EJB的臃肿、低效、繁琐复杂、脱离现实。
核心技术::IoC(Inverse of Control 控制反转): 将对象创建权利交给Spring工厂进行管理。
将对象的创建权利反转给spring框架。使用IOC可以解决的程序耦合性高的问题

AOP(Aspect Oriented Programming 面向切面编程),基于动态代理功能增强。可以方便的实现对程序进行权限
拦截,运行监控等功能。
声明式事物的支持::只需要通过配置就可以完成对事物的管理,无需手动编程。
注入 DI:把实体的字节码文件交给spring管理,spring底层会自动用反射创建对象,然后调用set方法注入   注入 创建对象的一个过程.....


dependency injection   依赖注入,在Spring框架负责创建Bean对象时,动态的将依赖对象注入到Bean组件中!!
如果UserServiceImpl的实现类中有一个属性,那么使用Spring框架的IOC功能时,可以通过依赖注入把该属性的值传入进来!


spring好处::方便解耦,简化开发,spring就是个大工厂,可以将所有对象创建和依赖关系维护,交给spring管理。  方便测试,spring对junit4支持,可通过注解方便测试spring程序。








 <!-- 构造方法注入 -->
 <bean id="departmentDaoFactory" class="cn.itcast.dao.impl.DepartmentDaoFactory" ></bean>
        <bean id="departmentDao" factory-bean="departmentDaoFactory" factory-method="create1"></bean>
        <bean id="car" class="cn.itcast.domain.Car">
        <constructor-arg name="name" value="奥迪A6"></constructor-arg>
        <constructor-arg name="price" value="57.3"></constructor-arg>
        </bean>


 <!-- set方法注入 -->
 <bean id="userDao" class="cn.itcast.dao.impl.UserDaoImpl" init-method="init" destroy-method="destory"/>
       <!--  <bean id="departmentDao" class="cn.itcast.dao.impl.DepartmentDaoFactory" factory-method="create"></bean> -->
        <bean id="departmentDaoFactory" class="cn.itcast.dao.impl.DepartmentDaoFactory" ></bean>
        <bean id="departmentDao" factory-bean="departmentDaoFactory" factory-method="create1"></bean>
        <!-- 构造方法注入 -->
        <bean id="car" class="cn.itcast.domain.Car">
        <constructor-arg name="name" value="奥迪A6"></constructor-arg>
        <constructor-arg name="price" value="57.3"></constructor-arg>
        </bean>
        <!-- set方法注入 -->
        <bean id="student" class="cn.itcast.domain.Student">
        <property name="id" value="11"></property>
        <property name="name" value="张三"></property>
        </bean>
注意:采用set方法注入时,类中一定要有无参构造方法,因为spring会先调用无参构造方法实例化对象。






 <!-- set方法注入对象 -->
 <bean id="people" class="cn.itcast.domain.People">
       <property name="name" value="小明"></property>
       <property name="car" ref="car"></property>
 </bean>


177152576205


Spring IOC注解
?添加注解@Component,相当于<bean id=”” class=””>,value属性给bean指定id,value属性的名字也可以不写,直接写一个值
  <!-- 开启注解扫描 -->
      <context:component-scan base-package="cn.itcast.service"></context:component-scan>
创建对象的注解::Component 把资源让spring来管理。相当于在xml中配置一个bean。
@Controller @Service @Repository
.注入数据的::value
相当于:<property name="" ref=""><property name="" value="">
@Autowired:::自动按照类型注入。当使用注解注入属性时,set方法可以省略。它只能注入其他bean类型。当有多个类型匹配时,使用要注入的对象变量名称作为bean的id,在spring容器查找,找到了也可以注入成功。找不到就报错。
@Qualifer作用:在自动按照类型注入的基础之上,再按照Bean的id注入。它在给字段注入时不能独立使用,必须和@Autowire一起使用;但是给方法参数注入时,可以独立使用。
属性:value:指定bean的id。
Resource 直接按照Bean的id注入。它也只能注入其他bean类型。把action交给Sping的IOC容器管理的时候,那个时候Scope取值必须是多例的,因为Action本身就是多例的.
改变作用域范围的::Scope prototype






















































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值