Spring入门学习01

什么是spring?spring优点?IOC和AOP的理解?spring配置文件?Spring注解?

1、spring是轻量级开源框架,核心是控制反转IOC和面向切面编程AOP

2、优点:

         降低组件之间的耦合度,实现软件各层之间的解耦。

         可以使用容器提供的众多服务,如:事务管理服务、消息服务等等。当我们使用容器管理事务时,开发人员就不再需要手工控制事务.也不需处理复杂的事务传播。

容器提供单例模式支持(字典信息、权限信息、数据库连接,是否适合单例模式看对象有没有状态,有不同的状态不适合单例模式,dao中唯一状态时数据库连接)。

容器提供了AOP技术,利用它很容易实现如权限拦截、运行期监控等功能。(不理解)

容器提供的众多辅作类,使用这些类能够加快应用的开发,如: JdbcTemplate、 HibernateTemplate。

Spring对于主流的应用框架提供了集成支持,如:集成Hibernate、JPA、Struts等,这样更便于应用的开发。

3、IOC和AOP

 

  • IOC控制反转

    • 控制了什么?谁控制谁?为什么是反转?

    • 目的是什么?

  • 理解:一般情况下需要我们自己创建依赖的对象,控制反转可以通过IOC容器来创建对象。目的是为了使得资源不受双方管理,而是交给第三方spring去集中管理(创建和维护),这样可以降低耦合度。(IOC容器就像淘宝)

 

  • AOP面向切面编程

    • 目的是什么?

    • 什么是切面?什么是切入点?

  • 理解的例子:银行系统(取款、查询余额都要验证用户)

  • 面向对象强调类和类的独立性,但增加了代码的重复性(比如两个类的某些方法相同,若此时将此方法写在另外一个类中供这两个类调用,违背了独立性)。这种时候需要代码可以动态的切到类的指定方法(AOP)。

  • 切入面:切入到指定类指定方法的代码片段;

  • 切入点:切入到哪些类哪些方法。

 

4、spring案例前配置文件

  • 添加spring的配置文件,如spring-dao.xml、spring-service.xml等

  • 实例化容器的方法,在容器中获取bean;

    • ApplicationContext context=new ClassPathXmlApplicationContext(spring.xml);

    • HelloDao helloDao=(HelloDao) context.getbean("hellloDaolmpl");

    • HelloService helloService=(HelloService) context.getbean("hellloSrrvicelmpl",HelloService.class);

  • Spring容器管理bean

    • bean属性id标识唯一 class类

    • scope作用域:singleton、prototype(多例)、request、session、globalSession;

    • Lazy-init:default=false

    • Scope="singleton"   lazy-init="default"表示容器已经加载实例化对象;

    • Scope="singleton"   lazy-init="true"表示容器已经加载,当使用到该对象的时候实例化该对象

 

5、spring注解

  • 创建对象的操作一般使用配置文件方式实现; 

  • 注入属性的操作一般使用注解方式实现。

  • @Autowired

    • @Autowired目的:省略getter和setter,消除bean属性中的property;

    • 用在javabean中的注解,默认通过byType形式,用来给指定的字段或方法注入所需的外部资源;

    • 四种模式:

      • byName:根据属性名自动装配;

      • byType:根据属性类型

      • constructor:根据构造函数参数类型

  • @qualifier:当存在一个以上的匹配的bean时,用qualifier

  • @service("service")

    • 目的:service  是有用的相当于 xml配置中得bean  id = service  ,也可以不指定, 不指定相当于 bean id =  com. service.service 就是这个类的全限定名,表示给当前类命名一个别名,方便注入到其他需要用到的类中;不加的话,默认别名就是当前类名,但是首字母小写 .在autowired的基础上继续减少配置文件

  • @Service用于标注业务层组件,@Controller用于标注控制层组件(如struts中的action),@Repository用于标注数据访问组件,即DAO组件,而@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值