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

Spring——几个常用注解

环境配置

1.在配置文件中导入约束(context — 共三个)并添加一项配置( context:annotation-config/) 才能支持注解的使用

context 约束:

  1. xmlns:context=“http://www.springframework.org/schema/context”
    2.xsi:schemaLocation下的:" http://www.springframework.org/schema/context"
    3.xsi:schemaLocation下的:" https://www.springframework.org/schema/context/spring-context.xsd"
<?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/beanshttps://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttps://www.springframework.org/schema/context/spring-context.xsd"><!-- 配置Spring自动扫描com.zbt.anno包 这个包下的注解就可以生效 --><context:component-scan base-package="com.zbt.anno"/><context:annotation-config/></beans>

2.在配置文件中添加一项注解扫描配置,扫描指定的包

<!-- 配置Spring自动扫描com.zbt.anno包 这个包下的注解就可以生效 -->
<context:component-scan base-package="com.zbt.anno"/>

使用注解进行开发

1. 类的注册——@Component

1.在dto包下建一个类User

有一个属性name 我们给他一个默认值为“名字”

package com.zbt.anno.dto;/*** @author* @createAt 2025/1/12 16:36*/public class User {private String name = "名字";public String getName() {return name;}public void setName(String name) {this.name = name;}
}

按照之前接触到的开发方式,我们需要将user类在xml中注册为bean

<bean id="user" class="com.zbt.anno.dto.User"/>

使用注解进行开发则不必如此麻烦,因为User的包路径为 com.zbt.anno.dto,而我们将com.zbt.anno 配置为Spring自动扫描路径,所以,只要在User类的类名的上一行加上注解==@Component==即可完成User类在Spring容器中的注册。

package com.zbt.anno.dto;import org.springframework.stereotype.Component;/*** @author* @createAt 2025/1/12 16:36*/@Component
public class User {private String name = "名字";public String getName() {return name;}public void setName(String name) {this.name = name;}
}

编写测试类MyTest.java

import com.zbt.anno.dto.User;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;/*** @author* @createAt 2025/1/12 17:00*/public class MyTest {@Testpublic void testComponent(){ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");User user = context.getBean("user", User.class);System.out.println(user.getName());}
}

控制台输出如下:
在这里插入图片描述
Component有几个衍生注解@Controller、@Service、@Repository
@Controller:controller层注册bean使用
@Service:service层注册bean使用
@Repository:dao层注册bean使用

2.属性的注入——@Value

按照之前接触到的开发方式,我们需要将user类在xml中注册为bean,然后通过标签注入String类型的属性

<bean id="user" class="com.zbt.anno.dto.User"><property name="name" value="名字"/></bean>

使用注解进行开发则,只要在属性名的上一行加上注解==@Value(“要注入的属性值”)==即可完成该属性的属性值注入。

package com.zbt.anno.dto;import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;/*** @author* @createAt 2025/1/12 16:36*/@Component
public class User {@Value("名字")private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}
}

运行先前的测试类MyTest.java
同样可以看到控制台输出——名字

java类进行配置(无需使用xml文件配置bean)

可以在java类名上加上@Configuration,即可将这个类作为Spring的配置类

@Configuration 可以理解为xml标签中的beans标签,里面可以用bean标签配置多个类的bean,@Configuration注解的类里面,可以使用@Bean注解配置类的bean。

MyConfiguration .java

package com.zbt.anno.conf;import com.zbt.anno.dto.User;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** @author* @createAt 2025/1/12 19:37*/@Configuration
public class MyConfiguration {/*等同于<bean id="getUser" class="com.zbt.anno.dto.User" />*///使用@Bean标注  取对象时 要通过 方法名获取 也可以写作@Bean(name="bean的id") 规定bean的id,就可以直接通过这个id取到对象@Beanpublic User getUser(){return new User();}
}

加载配置
之前加载xml配置文件,现在加载java配置类。

import com.zbt.anno.conf.MyConfiguration;
import com.zbt.anno.dto.User;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;/*** @author* @createAt 2025/1/12 17:00*/public class MyTest {@Testpublic void testJavaApplicationConfig(){//加载配置类ApplicationContext context = new AnnotationConfigApplicationContext(MyConfiguration.class);//取对象时 要通过 方法名获取User user = context.getBean("getUser", User.class);System.out.println(user.getName());}
}

配置类可以使用的一些注解
@ComponentScan(“包路径”):配置包的扫描路径 等同于配置文件中的 <context:component-scan base-package=“包路径”/>
@Import(被引入的配置类的class对象):合并其他的配置类至此 等同于配置文件中的


http://www.mrgr.cn/news/83522.html

相关文章:

  • 探索OpenAI API:Python开发者的快速上手指南
  • 基于 JavaEE 的影视创作论坛
  • 大模型评测
  • 探索 Oracle 数据库:核心概念与实践指南
  • vue封装axios请求
  • 2024AAAI SCTNet论文阅读笔记
  • mybatis分页插件:PageHelper、mybatis-plus-jsqlparser(解决SQL_SERVER2005连接分页查询OFFSET问题)
  • 【leetcode刷题】:双指针篇(有效三角形的个数、和为s的两个数)
  • 文献阅读分享:XSimGCL - 极简图对比学习在推荐系统中的应用
  • 【大数据】Apache Superset:可视化开源架构
  • PatchTST:通道独立的、切片的 时序 Transformer
  • 【JVM-2.3】深入解析JVisualVM:Java性能监控与调优利器
  • 25/1/12 嵌入式笔记 学习esp32
  • Elasticsearch快速入门
  • 浅谈云计算03 | 云计算的技术支撑(云使能技术)
  • 现代 CPU 的高性能架构与并发安全问题
  • AWS简介
  • 【Excel/WPS】根据平均值,随机输出三个范围在80到100的随机值。
  • 从预训练的BERT中提取Embedding
  • 机械燃油车知识图谱、知识大纲、知识结构(持续更新...)
  • 【Rust自学】11.9. 单元测试
  • qt QPainter setViewport setWindow viewport window
  • 如何在Jupyter中快速切换Anaconda里不同的虚拟环境
  • 【数通】MPLS
  • 【Bluedroid】HFP连接流程源码分析(一)
  • Centos9-SSH免密登录配置-修改22端口-关闭密码登录-提高安全性