首页 > 其他分享 >Spring注解开发

Spring注解开发

时间:2023-06-16 10:47:37浏览次数:34  
标签:Autowired Spring bean Bean 开发 使用 注解 注入

注解开发

  • 介绍:注解开发是spring的强项,实际开发过程中更多使用的是注解注入而非bean标签注入
  • xml和注解开发的对比:
    • xml可以适用任何场景 ,结构清晰,维护方便
    • 注解不是自己提供的类使用不了,开发简单方便
  • 建议使用xml和注解整合开发
    • xml管理Bean
    • 注解完成属性注入
    • 使用过程中, 可以不用扫描,扫描是为了类上的注解

原始注解

注解 说明
@Component 使用在类上用于实例化Bean
@Controller 使用在web控制层类上用于实例化Bean
@Service 使用在service层类上用于实例化Bean
@Repository 使用在dao层类上用于实例化Bean
@Autowired 使用在字段上用于根据类型依赖注入
@Qualifier 结合@Autowired一起使用用于根据名称进行依赖注入
@Resource 相当于@Autowired+@Qualifier,按照名称进行注入
@Value 注入普通属性
@Scope 标注Bean的作用范围,默认单例,注解加在类上
@PostConstruct 使用在方法上标注该方法是Bean的初始化方法
@PreDestroy 使用在方法上标注该方法是Bean的销毁方法

@Component - 定义Bean

  1. 设置扫描路径

    1. 在配置文件中启用context命名空间(前文有)

    2. 使用context:component-scan标签

      <context:component-scan base-package="路径"/>
      
    • 路径:用注解设置bean的类的范围
  2. 定义Bean

    • 在类前面使用@Component()注解,代替配置文件中的bean标签

    • 括号内填入bean的id

@Scope - 定义生命周期

  1. 在类前面使用 @Scope("prototype") 启用生命周期注解
    • @Scope("singleton") 取消使用生命周期注解
  2. 在方法上标注 @PostConstruct 表示 init 函数
  3. 在方式上标注 @PreDestroy 表示 destroy 函数

依赖注入

注解 说明
@Autowired 使用在字段上用于根据类型依赖注入
@Qualifier 结合@Autowired一起使用用于根据名称进行依赖注入
@Resource 相当于@Autowired+@Qualifier,按照名称进行注入
@Value 注入普通属性

注入普通属性

@Value("root")
private String userName;

纯注解开发

  • 从Spring3.0开始可以使用@Configuration定义配置类,可以替换xml配置文件
  • 原理:配置类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义对象,初始化Spring容器

@Configuration - 配置

  1. 创建配置类,

  2. 配置类前使用@Configuration注解

  3. 使用@ComponentScan()注解,括号内填入扫描路径

    • 可以填入数组,例如@ComponentScan({"com.ss","com.sss"})
  4. 如何加载配置类初始化容器

    ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);
    

@Bean - 第三方bean管理

  • 标注在某个返回实例的方法上,用于注册bean对象
  • 相当于配置文件中的bean标签
示例:获取DataSource
@Bean
public DataSource dataSource(){
    DruidDataSource ds = new DruidDataSource();
    //dataSource.setDriverClassName(driverClassName);//如果不配置druid会根据url自动识别dbType,然后选择相应的driverClassName
    ds.setUrl("jdbc:mysql://localhost:3306/demo");
    ds.setUsername("root");
    ds.setPassword("root");
    return ds;
}

当第三方bean需要依赖注入时,设置形参后,容器会根据类型自动装配对象

@Bean
public DataSource dataSource(DataSource dataSource){
    return dataSource;
}

@PropertySource - 加载properties配置文件

  • 相当于context:property-placeholder标签

    @Configuration
    @PropertySource("classpath:jdbc.properties")
    

@Import - 导入副配置类

  • 用于在主配置类中导入副配置类

    @Import(SpringConfig.class)
    

标签:Autowired,Spring,bean,Bean,开发,使用,注解,注入
From: https://www.cnblogs.com/WgBlogSpace/p/17484961.html

相关文章

  • Spring----AOP入门介绍、原理与使用
    AOP介绍AOP:面向切面编程,无入侵式编程一种编程范式,指导开发者如何组织程序结构OOP:面向对象作用:在不惊动原始设计的基础上为其做功能增强概念定义Aspect(切面):描述通知与切入点的对应关系(执行位置和共性之间的关系)Aspect声明类似于Java中的类声明,在Aspect中会包含......
  • Spring事务基础介绍
    事务本文只介绍声明式事务管理,即使用AOP实现,使用@Transactional开始事务事务角色事务管理员:发起事务方,在Spring中通常指代业务层开启事务的方法事务协调员:加入事务方,在Spring中通常指代数据层方法,也可以是业务层方法接口介绍PlatformTransactionManager:Spring事务......
  • SpringMVC基础详解(包含示例)
    SpringMVC简介SpringMVC是一种基于Java的实现MVC设计模型的请求驱动类型的轻量级Web框架,跟Spring,Mybatis框架并称为SSM。是由Spring官方提供的基于MVC设计理念的web框架也是基于Servlet封装的用于实现MVC控制的框架,实现前端和服务端的交互与Servlet技术功能相同,均是......
  • 支付宝小程序云正式公测,让小程序开发更简单高效
    随着移动互联网的快速发展,小程序成为了越来越多人使用的应用形态。今天,支付宝正式推出“支付宝小程序云”平台并开展公测,服务支付宝小程序生态合作伙伴,提供低成本稳定可靠的基础环境和营销工具,帮助支付宝生态及商家安心开展业务,把更多资源投入到服务好消费者方面。支付宝将通过“......
  • Spring框架中的线程池
    原文合集地址如下,有需要的朋友可以关注本文地址合集地址Spring框架中的线程池使用Java的ExecutorService接口实现ExecutorService是Java提供的用于管理线程池的高级工具。下面是在Spring框架中使用线程池的一般步骤:导入所需的依赖首先,确保你的项目中包含了使用线程池所需......
  • 驱动开发:内核RIP劫持实现DLL注入
    本章将探索内核级DLL模块注入实现原理,DLL模块注入在应用层中通常会使用CreateRemoteThread直接开启远程线程执行即可,驱动级别的注入有多种实现原理,而其中最简单的一种实现方式则是通过劫持EIP的方式实现,其实现原理可总结为,挂起目标进程,停止目标进程EIP的变换,在目标进程开启空间,并......
  • Spring Boot 实现定时任务动态管理,太爽了!
    一、功能说明SpringBoot的定时任务的加强工具,实现对SpringBoot原生的定时任务进行动态管理,完全兼容原生@Scheduled注解,无需对原本的定时任务进行修改二、快速使用具体的功能已经封装成SpringBoot-starter即插即用:<dependency><groupId>com.github.guoyixing</groupId>......
  • springboot 中使用 redis 处理接口的幂等性
    什么是接口幂等性?数学中:在一次元运算为幂等时,其作用在任一元素两次后会和其作用一次的结果相同;在二次元运算为幂等时,自己重复运算的结果等于它自己的元素。计算机学中:幂等指多次操作产生的影响只会跟一次执行的结果相同,通俗的说:某个行为重复的执行,最终获取的结果是相同的,不会因......
  • 国产MCU-CW32F030开发学习--按键检测
    国产MCU-CW32F030开发学习--按键检测bsp_key按键驱动程序用于扫描独立按键,具有软件滤波机制,采用FIFO机制保存键值。可以检测如下事件:按键按下。按键弹起。长按键。长按时自动连发。我们将按键驱动分为两个部分来介绍,一部分是FIFO的实现,一部分是按键检测的实现......
  • SpringBoot快速整合RabbitMq小案例
    对于一个直接创建的springBoot项目工程来说,可以按照以下步骤使用rabbitmq添加依赖:添加rabbitMQ的依赖。<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency>配置连接:在配置文件中配置虚拟主......