初学Spring之 JavaConfig 实现配置

使用 Java 方式配置 Spring

写个实体类:

@Component 表示这个类被 Spring 接管了,注册到了容器中

java 复制代码
package com.demo.pojo;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component //这个类被Spring接管了,注册到了容器中
public class User {
    private String name;

    public String getName() {
        return name;
    }

    @Value("张三") //属性值注入
    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                '}';
    }
}

写个配置类:

@Configuration 会被 Spring 容器托管,注册到容器中,因为他本来就是一个 @Component

@Configuration 代表这是一个**配置类,**和 beans.xml 一样

再写个方法:

@Bean:

注册一个 bean,相当于 bean 标签

这个方法的名字, 相当于 bean 标签中的 id 属性

这个方法的返回值, 相当于 bean 标签中的class 属性

java 复制代码
package com.demo.config;

import com.demo.pojo.User;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

//@Configuration会被Spring容器托管,注册到容器中,因为他本来就是一个@Component
//@Configuration代表这是一个配置类,和beans.xml一样
@Configuration
public class Config {

    /*
    注册一个bean,相当于bean标签
    这个方法的名字,相当于bean标签中的id属性
    这个方法的返回值,相当于bean标签中的class属性
     */
    @Bean
    public User getUser(){
        return new User(); //return返回要注入到bean的对象
    }
}

扫描:@ComponentScans("xx")

导入其他类:@Import(xx.class)

写个测试类:

如果完全使用了配置类方式去做,

只能通过 AnnotationConfig上下文来获取容器,

通过配置类的 class 对象加载

java 复制代码
import com.demo.config.Config;
import com.demo.pojo.User;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class MyTest {
    public static void main(String[] args) {

        //如果完全使用了配置类方式去做,只能通过AnnotationConfig上下文来获取容器,通过配置类的class对象加载
        ApplicationContext context = new AnnotationConfigApplicationContext(Config.class);
        User getUser = (User) context.getBean("getUser");
        System.out.println(getUser.getName());

    }
}
相关推荐
李慕婉学姐6 小时前
【开题答辩过程】以《基于JAVA的校园即时配送系统的设计与实现》为例,不知道这个选题怎么做的,不知道这个选题怎么开题答辩的可以进来看看
java·开发语言·数据库
奋进的芋圆8 小时前
Java 延时任务实现方案详解(适用于 Spring Boot 3)
java·spring boot·redis·rabbitmq
sxlishaobin8 小时前
设计模式之桥接模式
java·设计模式·桥接模式
model20058 小时前
alibaba linux3 系统盘网站迁移数据盘
java·服务器·前端
荒诞硬汉9 小时前
JavaBean相关补充
java·开发语言
提笔忘字的帝国9 小时前
【教程】macOS 如何完全卸载 Java 开发环境
java·开发语言·macos
2501_941882489 小时前
从灰度发布到流量切分的互联网工程语法控制与多语言实现实践思路随笔分享
java·开发语言
華勳全栈9 小时前
两天开发完成智能体平台
java·spring·go
alonewolf_999 小时前
Spring MVC重点功能底层源码深度解析
java·spring·mvc
沛沛老爹10 小时前
Java泛型擦除:原理、实践与应对策略
java·开发语言·人工智能·企业开发·发展趋势·技术原理