美文网首页springbootJava之家
Spring框架常用注解简单介绍

Spring框架常用注解简单介绍

作者: 小小土豆dev | 来源:发表于2020-08-19 10:32 被阅读0次

    Spring框架常用注解简单介绍
    SpringMVC常用注解简单介绍
    SpringBoot(一)创建一个简单的SpringBoot工程
    SpringBoot(二)SpringBoot多环境配置
    SpringBoot(三)SpringBoot整合MyBatis
    SpringBoot(四)SpringBoot整合 Redis

    Spring

    Spring框架是Java平台上的一种开源应用框架,提供具有控制反转特性的容器。Spring的核心思想是IOC和AOP。

    Spring注解分类:

    1. 用于创建对象的
    2. 用于注入数据的
    3. 用于改变作用范围的
    4. 和生命周期相关的(了解)

    (一)用于创建对象的注解

    @Component 注解

    相当于 bean 标签,value属性用于指定id,如果不写,默认是当前类名首字母小写。

    由此注解衍生出来的三个注解:

    • @Controller:用于控制器,表现层
    • @Service:用于业务层
    • @Repository:用于持久层,Dao层

    它们的作用、属性和 @Component 是一模一样的。它们的出现是Spring框架为我们提供更明确的语义话来指定不同层的bean对象。

    @Controller和@RestController的区别?

    @RestController注解相当于@ResponseBody + @Controller合在一起的作用。

    1. 如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,配置的视图解析器InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容。例如:本来应该到success.jsp页面的,则其显示success.
    2. 如果需要返回到指定页面,则需要用 @Controller配合视图解析器InternalResourceViewResolver才行。
    3. 如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解。

    (二)用于注入数据的注解

    用于注入bean类型

    @Autowired 注解

    作用:自动按照类型注入。只要Spring容器中有唯一的类型匹配,就可以注入成功。如果没有匹配的类型就报错。
    如果有多个类型匹配时,就用变量名称作为bean的id,再容器中查找,如果找到,就注入成功。没有找到就报错。

    属性:
    required:
    取值为true时,如果没有匹配的对象,就报错。(默认值)
    取值为false时,如果没有匹配的对象,不会报错。

    @Qualifier 注解

    作用:在自动按照类型注入的基础上,在按照bean的id注入。如果有多个类型匹配,就按照id注入。

    属性:
    value:用于指定bean的id

    @Resource 注解

    作用:直接按照bean的id注入

    属性:
    value:用于指定bean的id

    以上三个注解,都只能用于注入bean类型,而不能用于注入基本类型、String类型和复杂类型。

    @Value 注解

    作用:用于注入基本类型、String类型

    属性:
    value:用于指定要注入的数据,它支持使用 Spring 的 EL 表达式(Spring 的 EL 表达式:${表达式})

    (三)用于改变作用范围的注解

    @Scope 注解

    作用:用于改变bean的作用范围

    取值:

    • singleton:单例。(默认)(常用)
    • prototype:多例
    • request:请求范围
    • session:会话范围
    • global-session:全局会话范围

    (四)和生命周期相关的注解(了解)

    @PostContruct 注解

    作用:用于指定初始化方法。

    @PreDestroy 注解

    作用:用于指定销毁方法。

    示例代码

    //@Component(value = "accountService")
    @Service(value = "accountService")
    @Scope("singleton")
    public class AccountServiceImpl implements IAccountService {
        
    //    @Autowired
    //    @Qualifier("accountDao")
        @Resource(name = "accountDao")
        private IAccountDao dao;
    
    //    @Value("com.mysql.cj.jdbc.Driver")
        @Value("${driverClass}")
        private String driver;
        
        @PostConstruct
        public void init() {
            System.out.println("--- init ---");
        }
        
        @PreDestroy
        public void destroy() {
            System.out.println("--- destroy ---");
        }
    
        @Override
        public void saveAccount() {
            dao.saveAccount();
            System.out.println(driver);
        }
    }
    

    相关文章

      网友评论

        本文标题:Spring框架常用注解简单介绍

        本文链接:https://www.haomeiwen.com/subject/ymlidktx.html