Spring基础知识(四)

目录

1.Spring包含的模块主要有什么

2.Core Container的作用

3.Data Access/Integration模块的作用

4.AOP模块的作用

5.Spring Web模块的作用

6.Test模块的作用

7.如何将一个类声明为Bean

8.@Component和@Bean的区别

9.能够注入Bean的注解有什么

10.@Resource注解


1.Spring包含的模块主要有什么

        核心容器:Core Container

        数据访问/整合:Data Access/Integration

        面向切面编程:AOP

        面向网页:Spring Web

        单元测试:Test

详细图例如下:

2.Core Container的作用

1.是Spring框架的核心模块,主要提供IoC控制反转的依赖注入功能的支持

2.Spring其他所有功能都需要依赖此模块

3.Core Container中包含的模块作用

        spring-core:Spring框架基本的核心工具类

        spring-beans:提供对bean的装配、管理、实例化功能

        spring-context:提供对国际化、事件传播、资源加载等功能

        spring-expression:提供对表达式语言的支持

3.Data Access/Integration模块的作用

        spring-jdbc:提供对数据库访问功能

        spring-tx:提供对事务的支持

        spring-orm:提供对Hibernate、iBatis等ORM框架的支持

        spring-oxm:通过抽象层支撑OXM

        spring-jms:提供消息服务

注意:

        ORM,Object Relation Mapping;对象关系映射

        OXM,Object XML Mapping;对象与XML映射

4.AOP模块的作用

AOP,Aspect Oriented Programming,包含以下模块:

        spring-aspects:为AspectJ的集成提供支持

        spring-aop:提供面向切面编程

        spring-instrument:提供为JVM添加代理的功能

注意:AspectJ注解是AOP思想的具体实现方式

5.Spring Web模块的作用

spring-websocket:提供WebSocket支持,WebSocket能够使得客户端与服务端进行双向通信

spring-webmvc:提供Spring MVC支持

spring-web:提供Web功能支持

spring-webflux:提供WebFlux支持

注意:WebFlux是一个完全异步的响应式框架

6.Test模块的作用

Spring的测试对JUnit等常用的测试框架进行支持,使得单元测试变得十分简单

7.如何将一个类声明为Bean

使用注解:@Component,标注任意类为Spring的组件

也可以使用@Controller、@Service、@Repository

8.@Component和@Bean的区别

1.作用的位置不同:

        @Component作用于类,@Bean作用于方法

2.灵活性不同:引入第三方库的类的方法装配到Spring容器时,只能用@Bean实现

3.原理不同:

        @Component通过类路径扫描后自动装配到Spring容器中

        @Bean是在标注的方法中定义了一个bean,从而可以使用这个bean

9.能够注入Bean的注解有什么

Spring内置:@Autowired注解,自动装配时进行依赖注入

JDK内置:@Resource注解

10.@Resource注解

源码:

@Target({TYPE, FIELD, METHOD})
@Retention(RUNTIME)
public @interface Resource {
    
    String name() default "";

    
    String lookup() default "";

   
    Class<?> type() default java.lang.Object.class;

    
    enum AuthenticationType {
            CONTAINER,
            APPLICATION
    }

    /
    AuthenticationType authenticationType() default AuthenticationType.CONTAINER;

    
    boolean shareable() default true;

    
    String mappedName() default "";

   
    String description() default "";
}

根据name属性是否有值进行依赖注入:

        有值,则根据指定值寻找Spring容器的Bean对象进行依赖注入

@Controller
public class testAnnotation {
    @Resource(name = "aaa")
    @RequestMapping("/")
    public String testIndex(){
        return "index";
    }
}

        没有值,则默认取将要注入的属性的字段名,找到一个Bean对象然后注入即可

@Controller
public class testAnnotation {
    @Resource
    @RequestMapping("/")
    public String testIndex(){
        return "index";
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值