Spring基础知识(五)

文章详细介绍了Spring框架中@Autowired和@Resource注解的区别,包括它们的默认注入方式和多实现类处理策略。此外,还讨论了bean的作用域配置,如何解决单例bean的线程安全问题。接着,文章深入讲解了AOP的概念、实现方式以及SpringAOP和AspectJ的区别。此外,还涵盖了AOP的相关术语和通知类型。最后,文章阐述了SpringMVC的核心组件和其在Web开发中的作用。
摘要由CSDN通过智能技术生成

目录

1.@Autowired和@Resource注解有什么区别

1.位置不同

2.默认注入方式不同

3.若接口有多个实现类,处理方式不同

2.如何配置bean的作用域

1.xml配置

2.注解配置

3.如何解决单例bean的线程安全问题

1.为什么出现线程安全问题

2.如何解决

4. AOP是什么

1.含义

2.概念

3.作用

4.实现方式

5.Spring AOP 和 AspectJ AOP的区别

1.作用域不同

2.处理方式不同

3.效率不同

6.AOP的术语

7.AspectJ定义的通知有哪些

8.如何控制多个切面的执行顺序

9.Spring MVC是什么

1.MVC是什么

2.为什么需要SpringMVC

10.Spring MVC的核心组件

1.DispatcherServlet

2.HandlerMapping

3.HandlerAdapter

4.Handler

5.ViewResolver


1.@Autowired和@Resource注解有什么区别

1.位置不同

        @Autowired:Spring提供的注解

        @Resource:JDK提供的注解

2.默认注入方式不同

        @Autowired:默认采用byType进行依赖注入

        @Resource:默认采用byName进行依赖注入

3.若接口有多个实现类,处理方式不同

        @Autowired:采用@Autowired + @Qualifier 来显式指定名称

        @Resource:采用name属性显式指定名称

代码示例:比如Person接口,有两个实现类:PersonImpl1和PersonImpl2;则进行自动装配时

    @Autowired
    @Qualifier(value = "PersonImpl1")
    private Person person;

    @Resource(name = "PersonImpl1")
    private Person person;

2.如何配置bean的作用域

1.xml配置

<bean id="beanScope" class="com.gz.pojo.Person" scope="singleton"></bean>

2.注解配置

    @Bean
    @Scope(value = ConfigurableBeanFactory.SCOPE_SINGLETON)
    public Integer integer(){
        return  1;
    }

3.如何解决单例bean的线程安全问题

1.为什么出现线程安全问题

        当单例bean定义为成员变量时,成员变量是保存在Java堆中,堆内存中的数据是线程共享区域,因此多个线程同时操作用一个成员变量就会出现线程安全问题

2.如何解决

  • 尽量不使用成员变量
  • 类中定义一个ThreadLoacl成员变量,将需要的可变成员变量保存在ThreadLocal中
    private static ThreadLocal threadLocal = new ThreadLocal(){
        @Override
        public Object get() {
            return "写入可能被多个线程竞争成员变量---或资源";
        }
    };

4. AOP是什么

1.含义

        AOP,Aspect Oriented Programming:面向切面编程

2.概念

        通过预编译方式和运行期动态代理方式实现在不修改源代码的情况下给程序动态统一添加额外功能的一种技术(比如添加日志、权限管理)

3.作用

        减少重复代码,有利于功能的维护与扩展

4.实现方式

        基于动态代理实现,若要代理的对象实现了某个接口,Spring AOP也需要实现这个接口才能够创建代理对象

5.Spring AOP 和 AspectJ AOP的区别

1.作用域不同

        Spring AOP是运行时增强, AspectJ AOP是编译时增强

2.处理方式不同

        Spring AOP基于动态代理, AspectJ AOP基于字节码操作

3.效率不同

        若切面过多,AspectJ AOP效率更高

6.AOP的术语

1. 横切关注点
        从每个方法中抽取出来的同一类非核心业务,可以使用多个横切关注点对相关方法进行多个不同方面的增强

2. 通知
        每一个横切关注点要做的事情都要写一个方法来实现,这样的方法叫做通知方法

3. 切面
        封装通知方法的类

4. 目标
        被代理的目标对象

5. 代理
        向目标对象应用通知之后创建的代理对象

6. 连接点
        抽取横切关注点的位置;抽取后还需要将其套用到抽出的位置,因此十分重要

7. 切入点
        定位连接点的方式;Spring中的AOP技术可以通过切入点定位到特定的连接点

7.AspectJ定义的通知有哪些

    * Before-前置通知:在被代理的目标方法执行前执行

    * AfterReturning-返回通知:在被代理的目标方法成功结束后执行

    * AfterThrowing异常通知:在被代理的目标方法异常后执行

    * After-后置通知:在被代理的目标方法最终结束后执行

    * Aroud-环绕通知:使用try-catch- finally结构围绕整个被代理的目标方法,包括上面四种通知对应的所有位置

8.如何控制多个切面的执行顺序

        使用@Order注解定义切面顺序

        @Order中的数字越小,优先级越高

代码示例:

    @Bean
    @Order(3)
    @Scope(value = ConfigurableBeanFactory.SCOPE_SINGLETON)
    public Integer integer(){
        return  1;
    }

9.Spring MVC是什么

1.MVC是什么

        M:Model,模型层

        V:View,视图层

        C:Controller,控制层

2.为什么需要SpringMVC

  • 将项目分为Service层、DAO层、POJO层、Controller层,方便项目维护,实现前后端解耦
  • Spring MVC与Spring相结合,能够更快速的进行Web层面的开发

10.Spring MVC的核心组件

1.DispatcherServlet

        Spring MVC的核心处理器,负责接收请求,并相应回客户端

2.HandlerMapping

        处理器映射器,根据URI匹配处理请求的Handler,并会将请求涉及到的拦截器和Handler一起封装

3.HandlerAdapter

        处理器适配器,根据HandlerMapping找到的Handler,适配执行相应的Handler

4.Handler

        请求处理器,处理相应的请求

5.ViewResolver

        视图解析器,根据Handler返回的逻辑视图,解析并渲染真正的视图,然后传递给DispatcherServlet响应给客户端

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值