五大类注解和方法注解详解

news2024/11/25 17:19:12

五大类注解为@Controller,@Service,@Repository,@Configuration,@Component,方法注解为@Bean。
需要注意的是:@Bean注解必须要在类注解修饰的类内才能正常使用。

一、与配置文件的关系

  • 在spring原生项目中
    如果你使用的spring原生项目,你就需要自己配置spring的扫描目录,使用类注解和方法注解的类只有在配置的文件路径下,才会被扫描到spring容器中。配置格式为:
<?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:content="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
    <content:component-scan base-package="com.java.demo"></content:component-scan>
</beans>
  • 在spring Boot项目中
    不需要自己配置了,在spring Boot项目中,默认的扫描路径java文件夹的com.example.demo路径下。也可以使用@ComponentScan指定要扫描的包路径,如下:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;

@SpringBootApplication
@ComponentScan(basePackages = "com.example") // 指定要扫描的基础包路径
public class MyApplication {

    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

二、直接装入spring容器的Bean的id

  • 默认情况
    • 类注解
      默认情况下,五大类注解导入容器中的Bean对象的id是类名的首字母由大写改为小写。这个名称是在源码中由一个方法决定的,名称的变化依据为:如果类名首字母为大写,且类名第二个字母不为大写,则Bean的名称就是类名的首字母小写。
      在这里插入图片描述
    • 方法注解
      方法注解添加的Bean的默认id为,方法的名称。

但是除了默认名称之外,在使用注解的时候还可以自己设置Bean的名称。

  • 设置别名
    • 五大类注解设置别名
      五大类注解在使用时,可以通过设置Value属性的方法来设置别名,设置别名之后,默认名称就不可用了。下面是@Controller注解设置别名例子,其他类注解也是这样设置;

      @Controller(value="User")
      public class User {
          @PostConstruct
          public void test(){
              System.out.println("User的前置方法");
          }
      }
      
    • 方法注解设置别名
      方法注解设置别名,可以设置name和value两个参数,并且方法注解的别名可以设置多个,也就是参数可以设置成String数组。设置了别名后,默认名称也不可用了。

      @Bean(name={"users","users2"})
      public User getUser(){
          return new User();	
      }
      

三、五大类注解之间的关系

查看@Controller,@Service,@Repository,@Configuration的源码可以发现,这四个类注解都是继承自@Component注解。这五大类注解的作用都是将修饰的类装入spring容器中。那么,为什么要有五大类注解呢?

主要是五大类注解装入的Bean对象的功能不同,程序员设置不同的注解去装入,以此来标记不同功能的Bean对象。
@Controller层:表示业务逻辑层,Http请求首先会进入到这一层,也可以说这一层装入的Bean对象应该用来处理业务逻辑。
@Service层:服务层
@Repository层:持久层,这一层的Bean对象应该是用来操作数据库的Bean对象。
@Configuration层:配置层,这一层的Bean对象应该用来配置一些属性,比如之后的拦截器对象,就可以作为这一层的Bean对象。通过注入到拦截器列表中,实现对请求的拦截检查。
@Component层:组件层,不符合上面四个作用的Bean对象,就可以放在这一层。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/980432.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

亚马逊运营中,卖家们应该怎么挑选产品?

如今做亚马逊&#xff0c;选品是非常重要的。“七分靠选品&#xff0c;三分靠运营”&#xff0c;这话虽然会得罪运营小伙伴&#xff0c;但是目前平台就是这么个情况&#xff0c;一款好的产品基本上不需要花太多心思&#xff0c;加上一些运营技巧就能够很快表现优异。 那么选品…

深入浅出了解BeanFactory 和 ApplicationContext

一.区别 BeanFactory和ApplicationContext是Spring的两大核心接口&#xff0c;都可以当做Spring的容器。其中ApplicationContext是BeanFactory的子接口。 1.依赖关系 BeanFactory&#xff1a;是Spring里面最底层的接口&#xff0c;包含了各种Bean的定义&#xff0c;读取bean…

【系统设计系列】延迟吞吐和一致性

系统设计系列初衷 System Design Primer&#xff1a; 英文文档 GitHub - donnemartin/system-design-primer: Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards. 中文版&#xff1a; https://github.com/donnemarti…

Windows下搜索文件内容的关键字用什么命令

Windows下搜索文件内容的关键字用什么命令 findstr /s /n /i "keyword" file_path其中&#xff0c;/s 表示递归检索子文件夹&#xff0c;/n 表示显示搜索结果所在行号&#xff0c;/i 表示忽略大小写&#xff0c;“keyword” 是要搜索的关键字&#xff0c;file_path 是…

android程序中,产生ANR原因与分析解决

产生原因 在android程序中&#xff0c;所有的输入&#xff08;key和touch等&#xff09;事件是由底层的InputDispatcher分发到上层的InputManagerService的&#xff0c;再通过InputManagerService内部的InputMonitor送入WindowManagerService的Policy&#xff08;PhoneWindowM…

Linux CentOS7设置时区

在Linux系统中&#xff0c;默认使用的是UTC时间。 即使在安装系统的时候&#xff0c;选择的时区是亚洲上海&#xff0c;Linux默认的BIOS时间&#xff08;也称&#xff1a;硬件时间&#xff09;也是UTC时间。 在重启之后&#xff0c;系统时间会和硬件时间同步&#xff0c;如果…

C# 命令行参数分割

CommandLineToArgvW 函数 [DllImport("shell32.dll", SetLastError true)] private static extern IntPtr CommandLineToArgvW([MarshalAs(UnmanagedType.LPWStr)] string lpCmdLine, out int pNumArgs); 参数&#xff1a; [in] lpCmdLine 类型&#xff1a;…

VR数字工厂,为企业工厂打造竞争新优势

工业经济中大部分行业都是制造业&#xff0c;为了合力助推工业经济提质增效&#xff0c;谋划推进制造业数字化转型就显得尤为重要了。用VR赋能工厂数字升级&#xff0c;打造VR数字工厂&#xff0c;满足各行各业沉浸式营销展示需求。 VR数字工厂是一种全新的工业模式&#xff0c…

淘宝天猫1688京东商品详情(PC端和APP端)数据代码如下

淘宝天猫1688京东商品详情&#xff08;PC端和APP端&#xff09;数据代码如下&#xff1a; 请求示例 # coding:utf-8 """ Compatible for python2.x and python3.x requirement: pip install requests """ from __future__ import print_functio…

大厂常用的B端设计系统推荐

伴随着企业级应用的迅速发展&#xff0c;越来越多的企业和组织开始关注设计系统&#xff0c;以提高其应用的设计效率和质量。B端设计系统在这一领域发挥着重要作用。本文将介绍8个著名的B端设计系统。开发者需要仔细分析自己的项目特点&#xff0c;了解每一个设计系统的特点和优…

登录密码加盐处理方式

哈喽&#xff01;大家好&#xff0c;我是旷世奇才李先生 文章持续更新&#xff0c;可以微信搜索【小奇JAVA面试】第一时间阅读&#xff0c;回复【资料】更有我为大家准备的福利哟&#xff0c;回复【项目】获取我为大家准备的项目 文章目录 一、登录密码加盐处理方式1、简介2、密…

Linux内核的GPIO子系统驱动框架详解

目录 1 引入 2 GPIO子系统的层次 3 gpio子系统驱动程序流程 4 gpio子系统的中药数据结构 5 gpio子系统函数调用的详细细节 6 GPIO子系统的sysfs接口 6.1有哪些gpio控制器 6.2每个gpio控制器的详细信息 6.3查看gpio使用情况 6.4通过SYSFS使用GPIO 6.4.1 确定GPIO编号…

Hadoop的第二个核心组件:MapReduce框架第一节

Hadoop的第二个核心组件&#xff1a;MapReduce框架第一节 一、基本概念二、MapReduce的分布式计算核心思想三、MapReduce程序在运行过程中三个核心进程四、如何编写MapReduce计算程序&#xff1a;&#xff08;编程步骤&#xff09;1、编写MapTask的计算逻辑2、编写ReduceTask的…

Linux命令行

目录 CLI GUI 命令行界面 图形界面 命令行提示符 # $ ​编辑 命令一般由三个部分组成 历史命令&#xff0c;使用上下键&#xff0c;或者使用history&#xff0c;ctrlr搜索历史命令 通配符 *,? 切换用户 su 作业管理 &&#xff0c;jobs,bg,fg CLI GUI 命令行界面 …

基于SSM的健身房管理系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

第一天 关于项目遇到的问题和缺少的知识点

1.配置静态资源映射 配置文件使用的都是配置类方式 创建配置类WebMvcConfig,设置静态资源映射 用于在Springboot项目中, 默认静态资源的存放目录为 : "classpath:/resources/", "classpath:/static/", "classpath:/public/" ; 而在我们的项目中静…

黑客是如何“免费”坐飞机的?

对于爱好飞行的“空中飞人”来说&#xff0c;航空里程早已不是什么新鲜话题。如何利用航司的各种会员等级福利&#xff1f;如何积累里程&#xff1f;如何兑换航线&#xff1f;这些与里程相关的研究和分析&#xff0c;甚至发展成了非常成熟的社区文化。 航空里程也在不断的发展…

AI云服务平台大全:GPU租用 | App托管 | MLOps平台

我们搜集整理了国内外主要的深度学习云服务商&#xff0c;包括云GPU供应商、WebApp托管商和MLOps平台商。 推荐&#xff1a;用 NSDT编辑器 快速搭建可编程3D场景 1、云GPU供应商 只有一台笔记本电脑&#x1f4bb;不足以运行你的AI模型&#xff0c;忘记它吧&#xff0c;使用云 …

【网易云信】音画同步测试方法的研究与实践

概述 随着移动互联网的普及和网络带宽的提高&#xff0c;音视频通话越来越成为人们生活和工作中不可或缺的一部分。音画同步是音视频体验的一个重要指标&#xff0c;在音视频传输过程中&#xff0c;由于不同的传输策略因为网络的干扰&#xff0c;音频和视频往往难以同时到达&a…

智能小车—PWM方式实现小车调速和转向

目录 1. 让小车动起来 2. 串口控制小车方向 3. 如何进行小车PWM调速 4. PWM方式实现小车转向 1. 让小车动起来 电机模块开发 L9110s概述 接通VCC&#xff0c;GND 模块电源指示灯亮&#xff0c; 以下资料来源官方&#xff0c;具体根据实际调试 IA1输入高电平&#xff0c…