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

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/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">
	<!-- 配置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 {
    @Test
    public 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取到对象
    @Bean
    public 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 {
    @Test
    public 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.kler.cn/a/500557.html

相关文章:

  • 【Linux】文件 文件描述符fd
  • linux服务器安装mysql数据库和nginx
  • 多线程面试相关
  • 【python进阶——封装|继承|多态|类型注解】
  • 【软件安装】Visual Studio Code安装教程VScode安装教程
  • 下载并安装MySQL
  • 基于FFmpeg 6.x与SDL2的音视频播放器开发全解析
  • 数字孪生可视化在各个行业的应用场景
  • 数据结构·二叉树(2)
  • 【RabbitMQ】消息队列消息确认机制
  • 绘制三角形、正六边形、五角星、六角星
  • USRP X310 Windows 烧录镜像
  • 【C++】拷贝构造函数与运算符重载
  • 【Bluedroid】HFP连接流程源码分析(一)
  • 基于ResNet的CIFAR-10分类实现与分析
  • django基于Python的校园个人闲置物品换购平台
  • Android Framework WMS全面概述和知识要点
  • 浅谈云计算03 | 云计算的技术支撑(云使能技术)
  • 基于华为ENSP的OSPF-开放式最短路径优先协议保姆级别详解(1)
  • JAVA 嵌套列表初始化和转字符串
  • 十大排序简介