当前位置: 首页 > article >正文

Spring6 IOC 全注解式开发

在这里插入图片描述

1. 依赖

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>6.1.14</version>
    </dependency>
    <!-- @Resource注解的依赖包,该注解是jdk提供的,不是spring的   -->
    <dependency>
      <groupId>jakarta.annotation</groupId>
      <artifactId>jakarta.annotation-api</artifactId>
      <version>3.0.0</version>
    </dependency>

2. 用注解类代替xml配置文件

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
// spring的全注解式开发
@Configuration
@ComponentScan({"org.example.service", "org.example.dao"})  // 指定要扫描的包
@ImportResource(locations = {"classpath:spring.xml"})	// 导入spring的XML配置文件(如果配置文件还需要导入时使用)
public class SpringConfig {
}

3. @Resource:非简单类型注入,官方推荐

@Service
public class StudentService {
      //  @Resource // 用法2:没有指定名字,先按属性名也就是studentDao查找,如果按属性名没有找到,就按属性类型查找
  	  @Resource(name = "studentByMySql")  // 用法1:指定名字
	  private StudentDao studentDao;
	  
	  public void save() {
	  	studentDao.save();
	}
}

4. 测试

@Test
public void testApp() {
	// 相当于读取xml文件,这条语句执行,代表创建了类的实例
    ApplicationContext applicationContext = new AnnotationConfigApplicationContext(SpringConfig.class);
    // 从bean池子中取出想要的实例对象
    StudentService studentService = applicationContext.getBean("studentService", StudentService.class);
    System.out.println(studentService);
    // 可以执行实例对象中的方法
    studentService.save();
}

5. 注解

  1. 类:
@Component

// @Component的别名:
@Controller //对Controller层类进行标注(主要接受处理URL)
@Service //对Service层的类进行标注(是进行业务处理)
@Repository //对DAO层实现类进行标注(和数据库打交道的类)
  1. 属性
@Value		// 简单类型注入
@Resource   // 非简单类型注入

http://www.kler.cn/a/406529.html

相关文章:

  • transformer.js(一):这个前端大模型运行框架的可运行环境、使用方式、代码示例以及适合与不适合的场景
  • numpy中的nan填充
  • VSCode快速生成vue组件模版
  • 【企业级分布式系统】ZooKeeper集群
  • 【前端】第12节:Vue3新特性
  • ara::com 与 AUTOSAR 元模型的关系总结
  • Ribbon 入门实战指南
  • 推荐几个 VSCode 流程图工具
  • streaming消费kafka手动维护offset到redis
  • 如何快速开发一款AI小程序?基于微信云开发的实战指南
  • tdengine学习笔记-建库和建表
  • Ubuntu上安装MySQL并且实现远程登录
  • Redis中常见的数据类型及其应用场景
  • 【机器学习】决策树算法原理详解
  • 1.langchain中的prompt模板(Prompt Templates)
  • 直播预告| 深入探索 DB-GPT GraphRAG 的设计解读与优化
  • 【K8S问题系列 |18 】如何解决 imagePullSecrets配置正确,但docker pull仍然失败问题
  • [Redis#2] 定义 | 使用场景 | 安装教程 | 快!
  • 聊聊主流几个JDK版本:JDK 8、JDK 11、JDK 17 和 JDK 21 的区别
  • summernote富文本批量上传音频,视频等附件
  • ftdi_sio应用学习笔记 4 - I2C
  • Mesh路由组网
  • 端到端的专线管理与运维:实时掌握专线的运行状态
  • python pytorch 加载MNIST训练集,解释
  • 谁的年龄最小(结构体专题)
  • udp_socket