学习Spring5必知必会(4)~使用注解配置、使用java代码配置

简介: 学习Spring5必知必会(4)~使用注解配置、使用java代码配置
● 注意:使用注解并不能完全取代xml配置,比如配置连接池DruidDataSource,我们就不能到这个类中去贴注解。
  • 想要实现零配置(完全不使用xml进行配置):javaConfig + 注解


● DI注解:注解配置 <context:congfig-config/>

● IoC注解:组件扫描器 <context:component-scan base-package=""/>


一、通过注解自动装配(比起xml配置的对象类型配置ref,更加推荐使用注解注入

1、 DI 注解:@Autowired、@Resource、@Value

  • value注解的威力: 结合动态properties配置文件引入值变量 @Value("${service.port}")


★ 注入:

  • 常量类型 value Value
  • 对象类型 ref Autowired/Resource


(1)在配置文件中添加注解的解析器的配置:

<!-- DI注解的解析器 -->
    <context:annotation-config/>


(2)使用注解@Autowired

□ Autowired 注解寻找 bean 的方式:

1) 首先按照依赖对象的类型找,如果找到,就是用 setter 方法或者字段直接注入;

2)如果在 Spring 上下文中找到多个匹配的类型,再按照名字去找,如果没有匹配报错;

3)可以通过使用 注解@Qualifier("id名字") 来规定依赖对象按照 bean 的 id 和类型的组合方式去找


■ DI注解 Autowired 和 Resource(都需要配置DI注解的解析器):

  • Spring官方是使用:Autowired
  • javaEE规范:Resource 【依赖:javax.annotation-api.jar】


2、IoC 注解:

(1)在配置文件中添加注解的解析器的配置:

<!-- IoC注解的解析器 -->
  <context:component-scan base-package="com.shan.ioc"/>

(2)使用注解@Component 配置Bean

  • @Component 组件若是不写value属性值,此时的bean的id默认是类型首字母小写
// <bean id="dataSource" class="com.shan.ioc.MyDataSource"/>
@Component("dataSource")
public class MyDataSource {
}


■ bean 组件版型:四个组件的功能是相同的,只是用于标注不同类型的组件。

@Component 泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。

@Repository (持久层)用于标注数据访问组件,即 DAO 组件。

@Service (业务层)用于标注业务层组件。

@Controller (控制层)用于标注控制层组件(如 struts 中的 Ation,SpringMVC 的 Controller)


3、作用域注解、初始化和销毁注解: @Scope、@PostConstruct、@PreDestroy

  • 其中初始化和销毁注解【依赖:javax.annotation-api.jar】


二、通过java代码装配 java-config


目录
相关文章
|
5月前
|
Java 开发工具
【Azure Storage Account】Java Code访问Storage Account File Share的上传和下载代码示例
本文介绍如何使用Java通过azure-storage-file-share SDK实现Azure文件共享的上传下载。包含依赖引入、客户端创建及完整示例代码,助你快速集成Azure File Share功能。
443 7
|
5月前
|
IDE Java 编译器
java编程最基础学习
Java入门需掌握:环境搭建、基础语法、面向对象、数组集合与异常处理。通过实践编写简单程序,逐步深入学习,打牢编程基础。
311 1
|
5月前
|
存储 Oracle Java
java零基础学习者入门课程
本课程为Java零基础入门教程,涵盖环境搭建、变量、运算符、条件循环、数组及面向对象基础,每讲配示例代码与实践建议,助你循序渐进掌握核心知识,轻松迈入Java编程世界。
444 0
|
5月前
|
Java 数据处理 API
为什么你的Java代码应该多用Stream?从循环到声明式的思维转变
为什么你的Java代码应该多用Stream?从循环到声明式的思维转变
312 115
|
5月前
|
安全 Java 编译器
为什么你的Java代码需要泛型?类型安全的艺术
为什么你的Java代码需要泛型?类型安全的艺术
228 98
|
5月前
|
人工智能 监控 Java
零代码改造 + 全链路追踪!Spring AI 最新可观测性详细解读
Spring AI Alibaba 通过集成 OpenTelemetry 实现可观测性,支持框架原生和无侵入探针两种方式。原生方案依赖 Micrometer 自动埋点,适用于快速接入;无侵入探针基于 LoongSuite 商业版,无需修改代码即可采集标准 OTLP 数据,解决了原生方案扩展性差、调用链易断链等问题。未来将开源无侵入探针方案,整合至 AgentScope Studio,并进一步增强多 Agent 场景下的观测能力。
2298 74
|
5月前
|
安全 前端开发 Java
《深入理解Spring》:现代Java开发的核心框架
Spring自2003年诞生以来,已成为Java企业级开发的基石,凭借IoC、AOP、声明式编程等核心特性,极大简化了开发复杂度。本系列将深入解析Spring框架核心原理及Spring Boot、Cloud、Security等生态组件,助力开发者构建高效、可扩展的应用体系。(238字)
|
5月前
|
Java 编译器 API
java最新版和java8的区别,用代码展示
java最新版和java8的区别,用代码展示
427 43
|
5月前
|
安全 Java 测试技术
《深入理解Spring》单元测试——高质量代码的守护神
Spring测试框架提供全面的单元与集成测试支持,通过`@SpringBootTest`、`@WebMvcTest`等注解实现分层测试,结合Mockito、Testcontainers和Jacoco,保障代码质量,提升开发效率与系统稳定性。
|
5月前
|
负载均衡 Java API
grpc-java 架构学习指南
本指南系统解析 grpc-java 架构,涵盖分层设计、核心流程与源码结构,结合实战路径与调试技巧,助你从入门到精通,掌握高性能 RPC 开发精髓。
526 7