谈一谈你对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,可以将不同系统的依赖进行统一管理,并且可以进行依赖之间的传递和继承。*/
|