Spring Framework入门总结

1.概述
Spring 有两个核心部分: IoC 和 AOP 
Spring 是一种基于 Bean 的编程技术,它深刻地改变着 Java 开发世界。Spring 使用简单、基本的 Java Bean 来完成以前只有 EJB 才能完成的工作,使得很多复杂的代码变得优雅和简洁,避免了 EJB 臃肿、低效的开发模式,极大的方便项目的后期维护、升级和扩展。
在实际开发中,服务器端应用程序通常采用三层体系架构,分别为表现层(web)、业务逻辑层(service)、持久层(dao)。

Spring 致力于 Java EE 应用各层的解决方案,对每一层都提供了技术支持。
1)在表现层提供了对 Spring MVC、Struts2 等框架的整合;
2)在业务逻辑层提供了管理事务和记录日志的功能;
3)在持久层还可以整合 MyBatis、Hibernate 和 JdbcTemplate 等技术,对数据库进行访问。

 2.项目创建
使用org.apache.maven.archetyes:maven-archetype-quickstart 创建空项目
pom中增加Spring相关依赖。
增加resources目录,目录中添加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:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx" 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/tx http://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"> <!-- bean definitions here -->

        <aop:config proxy-target-class="true"/>
        <aop:aspectj-autoproxy proxy-target-class="true"/>

        <context:component-scan base-package="org.example"/>

<!--    <bean id="itemDAO" class="org.example.dao.ItemDAO">-->
<!--    </bean>-->

<!--    <bean id="itemService" class="org.example.servcie.ItemService">-->
<!--        <property name="itemDAO" ref="itemDAO"></property>-->
<!--    </bean>-->
</beans>

App.java main 函数,创建 ApplicationContext。

public class App {
    public static void main(String[] args) {
        {
            // 未使用 IoC 的 常规方式
            AccountService accountService = new AccountService();
            accountService.register("admin", "admin");
        }

        // 使用 IoC的 方式
        ApplicationContext ctx =
                new ClassPathXmlApplicationContext("applicationContext.xml");
        ItemService itemService = (ItemService) ctx.getBean("itemService");
        itemService.add("testItem", 100);
    }
}

3.常见问题
3.1 spring中用到了那些设计模式?
1)单例模式:spring中的bean在默认情况下都是单例的。
2)工厂模式:主要通过对BeanFactory和ApplicationContext来生产bean对象。
3)代理模式:最常见的AOP的实现方式就是通过代理来实现的,spring主要是使用JDK动态代理和CGLIB代理。
4)模板方法模式:只要在一些对数据库的操作类中用到,比如:JdbcTemplate,JpaTemplate,因为数据库的建立连接,执行查询,关闭连接几个过程中,非常适合用模板方法。

3.2 对loc和Aop的理解?以及他们的实现原理?
1)loc叫做控制反转,就是通过spring来管理对象的创建,配置,生命周期。相当于将对对象的控制权交给了spring,就不需要人工来管理对象之间的复杂关系,好处就是解耦。spring中主要提供了两种loc容器,分别是:BeanFactory和ApplicationContext,通过他们来实现对Bean的管理。
2)AOP叫做面向切面编程,是一个编程范式,目的是提高代码的模块性。Spring AOP基于动态代理的方式实现,如果是实现了接口的话就会使用jdk动态代理,反之则会使用CGLIB代理,aop中的应用主要体现在 事务.日志 .异常处理等的方面。通过在代码的前后做一些增强处理,可以实现对业务逻辑的隔离,提高代码的模块化能力,同时也是解耦。spring主要提供了Aspect切面,JoinPoint连接点,PointCut切入点,Advice增强等的实现方式。

3.3 JDK动态代理和CGLIB代理有什么区别
1)JDK动态代理主要是针对实现某个接口,AOP则会使用jdk动态代理。他是基于反射的机制实现,生成一个实现同样接口的代理类,然后通过重写方法的方式,实现对代码的增强。
2)而如果某个类没有实现接口,AOP则会使用CGLIB代理。它的底层原理是基于asm第三方框架,通过修改字节码生成一个子类,然后重写父类的方法。实现对代码的增强。

3.4 BeanFactory和FactoryBean有什么区别?
1)BeanFactory是Bean的工厂,ApplicationContext的父类,是Loc的核心,负责生产和管理bean对象。
2)FactoryBean是Bean,可以通过实现FactoryBean接口定制实例化Bean的逻辑,通过代理一个Bean对象,对方法的前后做出一些操作。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值