【关于Spring那些事】——SpringIoC基于注解的配置

简介: 在Spring容器中我们可以使用XML配置实现Bean的装配,但是如果Bean过多,则会显得XML文件过于臃肿,为后续的工作造成了一定的困难,因此Spring提供了一种基于注解(Annotation)的装配方式。

1.Spring配置文件

因为Spring容器初始化时,只会加载applicationContext.xml文件,那么我们在实体类中添加的注解就不会被Spring扫描,所以我们需要在applicationContext.xml声明Spring的扫描范围,以达到Spring初始化时扫描带有注解的实体类并完成初始化工作

在配置applicationContext.xml想要使用context标签声明注解配置需要在原来配置的基础上加context命名空间及相对应的约束。

<?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:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd">
    
    <!--声明使用注解配置,即开启注解处理器-->
    <context:annotation-config/>
    <!--声明Spring工厂注解的扫描范围-->
    <context:component-scan base-package="com.gyh.ioc.pojo"/>
    
</beans>

2.IoC常用注解

@Component

1.@Component:类注解,在实体类的位置加该注解,就表示将该实体类交给Spring容器管理,与bean作用相同。

2.@Component(value = "student"):value属性用来指定当前bean的id,相当于bean的id,value也可以省略,这时候id的值默认为将类名的首字母小写。(如:Student类首字母小写为student)

3.与@Component功能相同的注解还有@Controller、@Service、@Repository

  • @Controller注解 主要声明将控制器类交给Spring容器管理(控制层)
  • @Service注解 主要声明将业务处理类交给Spring容器管理(Service层)
  • @Repository注解 主要声明持久化类交给Spring容器管理(DAO层)
  • @Component 可以作用任何层次

@Scope

1.@Scope:类注解,声明当前类是单例模式还是原型模式,与bean标签中的scope属性作用相同。

2.@Scope(value = "prototype")表示当前类是原型模式,不加value则默认为单例模式

@Lazy

1.@Lazy:类注解,用于声明一个单例模式的bean属于饿汉式还是懒汉式。

2.@Lazy(false):表示当前属于bean是饿汉式,不添加值则默认为懒汉式。

@PostConstruct@PreDestroy

1.@PostConstruct:方法注解,声明一个方法为当前类的初始化方法,与bean标签的init-method属性作用相同,在构造方法执行后调用。

@PostConstruct
public void init(){
    System.out.println("执行init方法!!!");
}

2.@PreDestroy:方法注解,声明一个方法为当前类的销毁方法,与bean标签的destroy-method属性作用相同,在Spring容器关闭时自动调用。

@PreDestroy
public void destroy(){
    System.out.println("执行destroy方法!!!");
}

@Autowired

1.@Autowired:属性注解、方法注解(setter方法),用于声明当前属性自动装配,默认byType。

2.@Autowired(required = false):表示如果找不到与属性类型相匹配的类也不抛异常,而是给null。(默认为required = true 抛出异常)

@Qualifier

1.@Qualifier:与@Autowired配合使用,会将默认的按Bean类型装配改为按Bean的实例名称装配,Bean的实例名称则由@Qualifier属性指定,如下:

@Autowired(required = false)
public void setBook(@Qualifier("book1") Book book) {
    this.book = book;
}

@Resource

1.@Resource:属性注解,用于声明自动装配,先按照byName查找,找不到之后按byType查找;如果都找不到或找到多个则抛出异常。


总结

这篇博客主要介绍了基于注解开发所常用的注解以及功能,希望可以帮到大家!

相关文章
|
1月前
|
XML Java 数据格式
SpringBoot入门(8) - 开发中还有哪些常用注解
SpringBoot入门(8) - 开发中还有哪些常用注解
50 0
|
1月前
|
Java 开发者 微服务
手写模拟Spring Boot自动配置功能
【11月更文挑战第19天】随着微服务架构的兴起,Spring Boot作为一种快速开发框架,因其简化了Spring应用的初始搭建和开发过程,受到了广大开发者的青睐。自动配置作为Spring Boot的核心特性之一,大大减少了手动配置的工作量,提高了开发效率。
53 0
|
6天前
|
NoSQL Java Redis
Spring Boot 自动配置机制:从原理到自定义
Spring Boot 的自动配置机制通过 `spring.factories` 文件和 `@EnableAutoConfiguration` 注解,根据类路径中的依赖和条件注解自动配置所需的 Bean,大大简化了开发过程。本文深入探讨了自动配置的原理、条件化配置、自定义自动配置以及实际应用案例,帮助开发者更好地理解和利用这一强大特性。
47 14
|
4天前
|
XML Java 数据格式
Spring容器Bean之XML配置方式
通过对以上内容的掌握,开发人员可以灵活地使用Spring的XML配置方式来管理应用程序的Bean,提高代码的模块化和可维护性。
23 6
|
5天前
|
XML Java 数据格式
🌱 深入Spring的心脏:Bean配置的艺术与实践 🌟
本文深入探讨了Spring框架中Bean配置的奥秘,从基本概念到XML配置文件的使用,再到静态工厂方式实例化Bean的详细步骤,通过实际代码示例帮助读者更好地理解和应用Spring的Bean配置。希望对你的Spring开发之旅有所助益。
36 3
|
25天前
|
前端开发 Java Spring
Spring MVC核心:深入理解@RequestMapping注解
在Spring MVC框架中,`@RequestMapping`注解是实现请求映射的核心,它将HTTP请求映射到控制器的处理方法上。本文将深入探讨`@RequestMapping`注解的各个方面,包括其注解的使用方法、如何与Spring MVC的其他组件协同工作,以及在实际开发中的应用案例。
38 4
|
25天前
|
前端开发 Java 开发者
Spring MVC中的请求映射:@RequestMapping注解深度解析
在Spring MVC框架中,`@RequestMapping`注解是实现请求映射的关键,它将HTTP请求映射到相应的处理器方法上。本文将深入探讨`@RequestMapping`注解的工作原理、使用方法以及最佳实践,为开发者提供一份详尽的技术干货。
72 2
|
25天前
|
前端开发 Java Spring
探索Spring MVC:@Controller注解的全面解析
在Spring MVC框架中,`@Controller`注解是构建Web应用程序的基石之一。它不仅简化了控制器的定义,还提供了一种优雅的方式来处理HTTP请求。本文将全面解析`@Controller`注解,包括其定义、用法、以及在Spring MVC中的作用。
40 2
|
28天前
|
消息中间件 Java 数据库
解密Spring Boot:深入理解条件装配与条件注解
Spring Boot中的条件装配与条件注解提供了强大的工具,使得应用程序可以根据不同的条件动态装配Bean,从而实现灵活的配置和管理。通过合理使用这些条件注解,开发者可以根据实际需求动态调整应用的行为,提升代码的可维护性和可扩展性。希望本文能够帮助你深入理解Spring Boot中的条件装配与条件注解,在实际开发中更好地应用这些功能。
33 2
|
28天前
|
JSON Java 数据格式
springboot常用注解
@RestController :修饰类,该控制器会返回Json数据 @RequestMapping(“/path”) :修饰类,该控制器的请求路径 @Autowired : 修饰属性,按照类型进行依赖注入 @PathVariable : 修饰参数,将路径值映射到参数上 @ResponseBody :修饰方法,该方法会返回Json数据 @RequestBody(需要使用Post提交方式) :修饰参数,将Json数据封装到对应参数中 @Controller@Service@Compont: 将类注册到ioc容器