首页 > 其他分享 >使用注解开发

使用注解开发

时间:2023-04-08 22:16:31浏览次数:33  
标签:name class 开发 User 使用 注解 public String

  • 在Spring4之后,要使用注解开发必须保证aop的包导入了

  • 使用注解需要导入context约束,增加注解的支持

  • 属性注入

    @Component
    public class User {
        //@Value("alice")
        public String name;
        @Value("alice")
        public void setName(String name) {
            this.name = name;
        }
    }
    
  • @Component三个衍生注解

    为了更好的进行分层,Spring可以使用其它三个注解,功能一样,目前使用哪一个功能都一样。

    @Controller:web层
    @Service:service层
    @Repository:dao层
    写上这些注解,就相当于将这个类交给Spring管理装配了!

  • 作用域

      @Component
      @Scope("singleton")
      public class User {
          //@Value("alice")
          public String name;
          @Value("alice")
          public void setName(String name) {
              this.name = name;
          }
      }
    

    小结

    XML与注解:

    • XML可以适用任何场景 ,结构清晰,维护方便

    • 注解不是自己提供的类使用不了,开发简单方便

    xml与注解整合开发 :推荐最佳实践

    • xml管理Bean
    • 注解完成属性注入
    • 使用过程中, 可以不用扫描,扫描是为了类上的注解
     <!--指定要扫描的包,这个包下的注解就会生效-->
    <context:component-scan base-package="com.gy"/>
    <!--开启注解的支持-->
    <context:annotation-config/>
    

    作用:

    • 进行注解驱动注册,从而使注解生效

    • 用于激活那些已经在spring容器里注册过的bean上面的注解,也就是显示的向Spring注册

    • 如果不扫描包,就需要手动配置bean

    • 如果不加注解驱动,则注入的值为null!

基于Java类进行配置

JavaConfig 原来是 Spring 的一个子项目,它通过 Java 类的方式提供 Bean 的定义信息,在 Spring4 的版本, JavaConfig 已正式成为 Spring4 的核心功能 。
注意:1. 如果开启包扫描,加载配置类以后就可以通过反射拿到配置类中的对象了
2. @Bean只写在方法上,返回的是一个对象,但一般不获取已经在容器中的对象
3. @Bean 可以用于通过方法获取数据库连接池Connection这种对象
实体类

@Component
public class User {
    private String name;

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                '}';
    }

    public String getName() {
        return name;
    }

    @Value("aa")
    public void setName(String name) {
        this.name = name;
    }
}

这是一个配置类

@Configuration//会被spring容器托管,注册到容器中,因为它本来就是一个@Component
@ComponentScan("com.gy.pojo")
@Import(VioletConfig2.class)
public class VioletConfig {
    @Bean
    public User getUser(){
        return new User();
    }
}

测试

public class MyTest {
    public static void main(String[] args) {
        ApplicationContext context = new AnnotationConfigApplicationContext(VioletConfig.class);
        User getUser = context.getBean("getUser", User.class);
        System.out.println(getUser.getName());
    }
}

关于这种Java类的配置方式,SpringBoot 和 SpringCloud中会大量看到,我们需要知道这些注解的作用

标签:name,class,开发,User,使用,注解,public,String
From: https://www.cnblogs.com/gyViolet/p/17299349.html

相关文章

  • 如何在 Mybatis 中优雅地使用枚举
    前言Mybatis遇到字段为枚举时无法解析成我们想要的数据MyBatis 内置枚举转换器org.apache.ibatis.type.EnumTypeHandler 和 org.apache.ibatis.type.EnumOrdinalTypeHandlerEnumTypeHandlerMybatis中默认的枚举转换器,获取枚举中的 name 属性EnumOrdinalTypeHandler......
  • Qt-FFmpeg开发-音频解码为PCM文件(9)
    音视频/FFmpeg#QtQt-FFmpeg开发-使用libavcodecAPI的音频解码示例(MP3转pcm)目录音视频/FFmpeg#QtQt-FFmpeg开发-使用libavcodecAPI的音频解码示例(MP3转pcm)1、概述2、实现效果3、主要代码4、完整源代码更多精彩内容......
  • 【算法数据结构专题】「延时队列算法」史上手把手教你针对层级时间轮(TimingWheel)实现
    承接上文承接上一篇文章【算法数据结构专题】「延时队列算法」史上手把手教你针对层级时间轮(TimingWheel)实现延时队列的开发实战落地(上)】我们基本上对层级时间轮算法的基本原理有了一定的认识,本章节就从落地的角度进行分析和介绍如何通过Java进行实现一个属于我们自己的时间轮服务......
  • SpringCloud使用Consul作为配置中心
    Consul提供了一个key/value存储,用于存储配置和其他元数据。SpringCloudConsulConfig是ConfigServer和Client的替代方案。在特殊的“bootstrap”阶段,配置被加载到Spring环境中。默认情况下,配置存储在/config文件夹中。根据应用程序的名称和模拟SpringCloud配置顺序解析财产的......
  • 查看 GPU 使用情况命令行代码
    要查看GPU使用情况,您可以根据您的操作系统使用以下命令行代码:对于NVIDIA显卡:使用nvidia-smi命令来查看GPU的使用情况。在命令行中输入以下命令:nvidia-smi这将显示当前NVIDIAGPU的状态,包括温度、功率、显存使用情况以及正在运行的进程等信息。对于Linux系......
  • Qt-FFmpeg开发-回调函数读取数据(8)
    音视频/FFmpeg#QtQt-FFmpeg开发-使libavformat解复用器通过自定义AVIOContext读取回调访问媒体内容目录音视频/FFmpeg#QtQt-FFmpeg开发-使libavformat解复用器通过自定义AVIOContext读取回调访问媒体内容1、概述2、实现效果3、主要代码4、完整源代码更多精彩内容......
  • Qt-FFmpeg开发-打开本地摄像头录制视频(7)
    音视频/FFmpeg#QtQt-FFmpeg开发-打开本地摄像头录制视频【软解码+OpenGL显示YUV】目录音视频/FFmpeg#QtQt-FFmpeg开发-打开本地摄像头录制视频【软解码+OpenGL显示YUV】1、概述2、实现效果3、FFmpeg录制视频编码流程4、主要代码5、完整源代码更多精彩内容......
  • Qt-FFmpeg开发-打开本地摄像头(6)
    音视频/FFmpeg#QtQt-FFmpeg开发-打开本地摄像头【软解码+OpenGL显示YUV】目录音视频/FFmpeg#QtQt-FFmpeg开发-打开本地摄像头【软解码+OpenGL显示YUV】1、概述2、实现效果3、FFmpeg打开本地摄像头解码流程4、查询可用摄像头5、设置摄像头打开参数6、主要代码6.1解码代码5.2......
  • Python开发遇到的一些问题
    1.SettingWithCopyWarning:AvalueistryingtobesetonacopyofaslicefromaDataFrame.Tryusing.loc[row_indexer,col_indexer]=valueinstead原因:python中的“变量”其实是一个“标签”,而不是一个“容器”。“链式索引”(chainedindexing)而引起的错误或警告!解决......
  • Qt-FFmpeg开发-视频播放(5)
    音视频/FFmpeg#QtQt-FFmpeg开发-视频播放【软/硬解码+OpenGL显示YUV/NV12】目录音视频/FFmpeg#QtQt-FFmpeg开发-视频播放【软/硬解码+OpenGL显示YUV/NV12】1、概述2、实现效果3、FFmpeg硬解码流程4、优化av_hwframe_transfer_data()性能低问题5、主要代码5.1解码代码5.2......