Spring(十一):使用注解开发

一、导包(添加依赖)

在Spring4之后,想要使用注解就必须要导入spring-aop这个包,这里我直接添加的spring-webmvc,其中包含了我们需要的包。

maven:spring-webmvc

        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-webmvcartifactId>
            <version>5.3.23version>
        dependency>    

二、在xml文件中添加注解的约束,增加对注解的支持

xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd">

    <context:annotation-config/>

    <context:component-scan base-package="com.jms"/>

beans>

三、Bean的注入

package com.jms.pojo;

import org.springframework.stereotype.Component;

//等价于<bean id="user" class="com.jms.pojo.User"/>
@Component(value = "user")
public class User {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

使用@Component注解,value是相当于id,可以不设置,这里默认是user。

测试一下:

@Test
    public void test1() {
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
        User user = applicationContext.getBean("user", User.class);
        System.out.println(user.getName());
    }

Spring(十一):使用注解开发

四、属性值的注入

//等价于
    @Value("jms")
    private String name;

使用@Value(“”)注解,这个注解也可以用在set方法。

测试如下:

Spring(十一):使用注解开发

五、作用域的注入

@Scope("singleton")
public class User {}

六、衍生的注解

@Component有几个衍生的注解,分别用于不同的分层中。

dao层:

@Repository
public class UserDao {}

service层:

@Service
public class UserService {}

Contorller层:

@Controller
public class UserController {}

这四个注解功能相同,都是将类注册到Spring容器中。

七、小结

xml与注解各有千秋,xml更加万能,适用于任何场合,维护起来更加方便;注解在简单的使用中要比xml更加简便,但复杂的配置还是xml更合适。

xml和注解的最佳实践:xml用来管理Bean,注解只负责属性的注入。

Original: https://www.cnblogs.com/jmsstudy/p/16730159.html
Author: 谁知道水烫不烫
Title: Spring(十一):使用注解开发

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/616428/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Java:聊聊Java基础(1)- 简介

    Java简介 Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。 Jav…

    Java 2023年6月5日
    075
  • vue+axios 与spring boot EasyExcel实现后台导出excel并下载

    一.后端: @Log("导出excel") @ApiOperation(value = "查询LawCaseCollectMain") @G…

    Java 2023年5月30日
    073
  • go 语言开发1 环境配置和语言基础

    Go 语言环境配置 windows 环境变量: 设置 GOROOT (安装路径),GOPATH(工程目录) Path 中加入 %GOROOT%/bin 和 %GOPATH%/bin…

    Java 2023年6月6日
    094
  • spring cloud 分布式事务 seata

    seata安装与部署 什么是seata? Seata是阿里开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。 官方中文文档:https://seata.io/z…

    Java 2023年6月5日
    0131
  • rabbitmq镜像模式设置策略以及高可用

    a、curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sud…

    Java 2023年5月30日
    095
  • 全面理解Java内存模型

    Java内存模型即Java Memory Model,简称JMM。JMM定义了Java 虚拟机(JVM)在计算机内存(RAM)中的工作方式。JVM是整个计算机虚拟模型,所以JMM是…

    Java 2023年5月29日
    060
  • Feign调用,get请求,参数为对象, 解决请求对象以及参数值为null

    请求参数过多,所以包装成一个请求对象 服务端: @GetMapping(value = "/readInfos") public List readHotels…

    Java 2023年6月8日
    074
  • kubernetes V1.16 Ingress-nginx部署

    在Kubernetes中,服务和Pod的IP地址仅可以在集群网络内部使用,对于集群外的应用是不可见的。为了使外部的应用能够访问集群内的服务,在Kubernetes中可以通过Node…

    Java 2023年5月30日
    0100
  • php部署到nginx时遇到的问题

    1、权限问题 nginx用户、php用户最好不要用默认的:nobody,因为权限不够。 可以创建新的用户和用户组: 然后修改:nginx.conf 修改:php-fpm.d/www…

    Java 2023年5月30日
    074
  • JSP、JSTL标签、EL表达式

    JSP、JSTL标签、EL表达式 1、EL表达式:${} 功能: 获取数据 执行运算 获取web开发的常用对象 2、JSP标签 例如: jsp标签还有很多功能,这里只列举出一种。 …

    Java 2023年6月13日
    079
  • G1收集器

    G1之前垃圾收集器预习: https://www.cnblogs.com/fengtingxin/p/13966982.html GC统一语义: 部分收集(Partial GC) …

    Java 2023年6月8日
    072
  • Docker安装Portainer

    Docker安装Portainer Docker介绍 Docker是一个开源的容器引擎,完全使用沙箱机制,相互之间不会有任何接口,并且容器性能开销低,让开发者可以打包应用或者依赖包…

    Java 2023年6月15日
    073
  • 串池StringTable与s.intern()方法 、 验证s.intern()方法(基于jdk1.8)(附1.6对比)

    验证s.intern()方法(基于jdk1.8)(附1.6对比) 1、在 jdk1.8中 s.intern()方法指的是尝试将字符串对象s放入串池中 :如果串池中有,则不会放入;若…

    Java 2023年6月7日
    084
  • synchronized真的很重么?

    synchronized 是java中常见的保证多线程访问共享资源时的安全的一个关键字。很多人在讲到synchronized 时都说synchronized 是一把重量级的锁,那么…

    Java 2023年6月16日
    092
  • java中枚举类常见用法

    JDK1.5引入了新的类型——枚举。在 Java 中它虽然算个”小”功能,却给我的开发带来了”大”方便。 大师兄我【大师兄】又加上自…

    Java 2023年5月29日
    071
  • java中的代码块(初始化块)

    介绍 代码块又叫初始化块,属于类中的成员,类似于方法,将逻辑语句封装在方法体中,通过{ } 包围起来,但和方法不同,没有方法名,没有返回值,没有参数,只有方法体,而且不通过对象或类…

    Java 2023年6月6日
    0104
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球