A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马-123 初级黑马   /  2018-8-25 18:06  /  703 人查看  /  0 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

谈一谈你对Spring的理解?
①Spring是一个开源的业务层框架,分模块,一站式框架,它能够整合各种其他主流框架;
        ②Spring的实质就是一个实现了工厂模式的工厂类,在其配置文件中,通过添加<bean>标签,来创建实例对象;
        ③Spring的核心——IoC/DI;
                a)IOC控制反转,将对象的创建全交给Spring去管理,然后Spring通过DI依赖注入的方式,注入给调用者。这样做的好处就是让bean与bean之间以配置文件的形式组织在一起,而不是以硬编码的方式耦合在一起。
                b)依赖注入的方式有三种:接口注入、Setter方法注入(使用<property name="" value或者ref="">)、构造注入;
                c)IOC的注解方式:
                        (Ⅰ)在applicationContext.xml配置文件中开启组件扫描
                                <context:component-scan base-package="com.itheima"/>
                        (Ⅱ)在实现类上添加注解:@Component(value="id值")
                          @Component的三个衍生注解(功能一样)
                                * @Controller -- 作用在WEB层
                                * @Service -- 作用在业务层
                                * @Repository -- 作用在持久层
                        (Ⅲ)3.属性注入的注解(说明:使用注解注入的方式,可以不用提供set方法)
                                * @Value -- 用于注入普通类型
                                * @Autowired -- 默认按类型进行自动装配
                                * @Qualifier -- 强制使用名称注入
                                * @Resource -- 相当于@Autowired和@Qualifier一起使用,强调:Java提供的注解,属性使用name属性
        ④Spring的核心——AOP;
                a)AOP(面向切面编程),通过定义切面和切点对方法进行增强,在不修改源代码的前提下,对程序进行增强,例如,加入日志,权限判断,加入异常处理等;
                b)AOP底层使用的是代理技术,分为JDK动态代理(面向接口)和CGLIB动态代理(没接口的,产生子类代理);
                c)使用步骤:
                        (Ⅰ)编写切面类==>在IoC中配置切面类的bean标签==>配置aop相关
                                        <aop:config>
                                        <!-- 配置切面类 -->
                                        <aop:aspect ref="切面类">
                                        <!-- 通知类:前置通知,还需要配置切入点表达式 ) -->
                                        <aop:before method="增强方法" pointcut="切入点表达式"/>
                                        </aop:aspect>
                                        </aop:config>
                        (Ⅱ)切入点表达式:execution([修饰符] 返回值类型 包名.类名.方法名(参数))
                                        一般简写为:execution(* com.*.*.*DaoImpl.save*(..))
                        (Ⅲ)通知类型
                                        前置通知:<aop:after method="before" pointcut-ref="myPointcut3"/>
                                        最终通知:如果程序出现了异常,最终通知也会执行。
                                          <aop:after method="after" pointcut-ref="myPointcut3"/>
                                        后置通知:<aop:after-returning method="afterReturning" pointcut-ref="myPointcut2"/>
                                        异常抛出通知:<aop:after-throwing method="afterThorwing" pointcut-ref="myPointcut3"/>
                                        环绕通知:<aop:around method="around" pointcut-ref="myPointcut2"/>
                                        * 要注意:目标的方法默认不执行,需要使用ProceedingJoinPoint对来让目标对象的方法执行。*/
如何理解Spring AOP中Advice这个概念的?
        /*增强,*/我们通过AOP将横切关注功能加到原有的业务逻辑上,这就是对原有业务逻辑的一种增强,这种增强可以是前置增强、后置增强、返回后增强、抛异常时增强和包围型增强。
Spring中Bean的作用域有哪些?
        /**1.在Spring的早期版本中,仅有两个作用域:singleton和prototype,前者表示Bean以单例模式存在;后者表示多例,每次从容器中调用Bean时,都会返回一个新的实例;
      
        2.Spring2.x中针对WebApplicationContext新增了3个作用域,分别是:request(每次HTTP请求都会创建一个新的Bean)、session(同一个HttpSession共享同一个Bean,不同的HttpSession使用不同的Bean)*/
maven:
        你们项目为什么选用maven进行构建?
                /**①首先,maven是一个优秀的项目构建工具。使用maven,可以对项目进行分模块构建,在开发和测试打包部署时,效率会提高很多。
                ②其次,maven可以进行依赖的管理。使用maven,可以将不同系统的依赖进行统一管理,并且可以进行依赖之间的传递和继承。*/

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马