Spring(十二):使用JavaConfig实现配置

上一篇文章我们学习了使用注解开发,但还没有完全脱离xml的配置,现在我们来学习JavaConfig配置来代替xml的配置,实现完全注解开发。

下面我们用一个简单的例子来进行学习。

一、首先建立两个实体类

User:

package com.jms.pojo;

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

@Component
public class User {
    @Value("jms")
    private String name;
    private Address address;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Address getAddress() {
        return address;
    }
    @Autowired
    public void setAddress(Address address) {
        this.address = address;
    }

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

Address:

package com.jms.pojo;

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

@Component
public class Address {
    @Override
    public String toString() {
        return "Address{" +
                "id=" + id +
                '}';
    }

    @Value("100")
    private int id;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
}

两个简单的类,并且实现了值的注入和Bean的自动装配。

二、建立一个配置类

package com.jms.config;

import com.jms.pojo.Address;
import com.jms.pojo.User;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

//@Configuration代表他是一个配置类,可以看作原来的xml文件,它本身还是一个@Component,所以它也被注册到Spring容器中,由Spring容器托管
@ComponentScan("com.jms.pojo")
@Configuration
public class JmsConfig {

    //这一个方法就相当于xml中的一个Bean标签,方法名对应id属性,返回值对应class属性
    @Bean
    public Address address() {
        return new Address();
    }

    @Bean
    public User getUser() {
        return new User();
    }
}

这个配置类的作用就是代替原来的xml配置文件,所以xml文件中有的功能这里基本上都可以配置。

上面只简单配置了最基础的Bean和ComponentScan扫描包。

三、测试

@Test
    public void test1() {
        ApplicationContext applicationContext = new AnnotationConfigApplicationContext(JmsConfig.class);
        User user = applicationContext.getBean("getUser", User.class);
        System.out.println(user);
    }

Spring(十二):使用JavaConfig实现配置

注意点:

1.我们new的不再是ClassPathXmlApplicationContext对象,而是AnnotationConfigApplicationContext;

2.getBean方法中传入的是配置类里的方法名,因为方法名对应原来xml里的id。

(本文仅作个人学习记录用,如有纰漏敬请指正)

Original: https://www.cnblogs.com/jmsstudy/p/16731096.html
Author: 谁知道水烫不烫
Title: Spring(十二):使用JavaConfig实现配置

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/616418/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 每天代码量多少正常?

    关于程序员每天代码量的讨论,众说纷纭。我个人觉得需要根据具体情况而定。 如果你刚实习,或刚步入工作不久,上司一般都会交给你一些简单的功能实现,这时候一般都含有大量简单而重复或者说类…

    Java 2023年6月13日
    099
  • SpringBoot启动代码和自动装配源码分析

    ​ 随着互联网的快速发展,各种组件层出不穷,需要框架集成的组件越来越多。每一种组件与Spring容器整合需要实现相关代码。SpringMVC框架配置由于太过于繁琐和依赖XML文件;…

    Java 2023年6月13日
    062
  • PyCharm正版(专业版)购买的话多少钱一年?

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Java 2023年5月29日
    0105
  • 淦,为什么 “𠮷𠮷𠮷” .length !== 3 ??

    来源:juejin.cn/post/7025400771982131236 在开发过程中偶尔会遇到关于编码、Unicode,Emoji 的问题,发现自己对这方面的基础知识并没有充分…

    Java 2023年5月29日
    089
  • Java 泛型擦除

    泛型擦除概念 Java的泛型是伪泛型,这是因为Java在 编译期间,所有的泛型信息都会被擦掉,正确理解泛型概念的首要前提是理解类型擦除。Java的泛型基本上都是在编译器这个层次上实…

    Java 2023年5月29日
    096
  • logrotate 切割Tomcat的catalina.out文件

    使用logrotate进行切割。 在/etc/logrotate.d下,新建tomcatrotate,编辑tomatrotate,写入如下内容: /usr/local/tomcat…

    Java 2023年6月15日
    085
  • Guava 内存缓存的使用

    一、概述 guava⽬前有三种刷新本地缓存的机制: expireAfterAccess:当缓存项在指定的时间段内没有被读或写就会被回收。 expireAfterWrite:当缓存项…

    Java 2023年6月7日
    086
  • 彻底掌握Makefile(二)

    彻底掌握Makefile(二) 前言 在前面的文章彻底掌握Makefile(一)当中,我们简要的介绍了一些常见的makefile使用方法,在本篇文章当中我们将继续介绍一些makef…

    Java 2023年6月8日
    0122
  • 如何设置博客首页显示透明的人物图像

    在个人博客的设置里,页脚HTML代码内输入以下内容: __ 按照此设置后,页面效果如图所示: 欢迎关注我的博客,获取更多精品知识合集 如果觉得对您有帮助的话,请帮我点赞、分享!您的…

    Java 2023年6月5日
    074
  • SSH 端口转发(本地转发与远程转发)

    SSH 端口转发处于机构SSH用于从所述客户端机器隧道应用程序的端口到服务器计算机上,或反之亦然。它可用于为 遗留应用程序添加加密、 通过防火墙,并且一些系统管理员和 IT 专业人…

    Java 2023年5月30日
    096
  • SpringBoot整合SpringCloud

    1、先创建一个空工程,然后创建注册中心模块(Eureka)、服务消费者和服务提供者 ​ 注册中心 服务消费者 服务提供者 2、注册中心配置 在application.yml配置 s…

    Java 2023年6月7日
    085
  • 通用树形结构的迭代与组合模式实现方案

    日常开发过程过程中。树形结构运用的非常频繁。 例如:公司组织结构、各种分类结构、分组结构等等。 SET FOREIGN_KEY_CHECKS = 0; CREATE TABLE I…

    Java 2023年6月9日
    0118
  • DNS服务端搭建

    Docker使用 sameersbn/bind 镜像搭建dns服务器 https://hub.docker.com/r/sameersbn/bind进行下面测试的时候记得将本机的d…

    Java 2023年5月30日
    099
  • 设计模式之状态模式

    状态模式又称状态对象模式,属于行为型模式;状态模式允许一个对象在其内部状态改变的时候改变其行为,这个对象看上去就像是改变了它的类一样。状态模式把所研究的对象的行为包装在不同的状态对…

    Java 2023年6月5日
    091
  • Git常用命令

    1.仓库 2.配置 3.增加/删除文件 4.代码提交 5.分支 6.标签 7.查看信息 8.远程同步 9.撤销 10.其他 1.仓库 将当前目录初始化为Git代码库 $ git i…

    Java 2023年6月8日
    099
  • 常用的线程池介绍

    线程池: 简介:线程池是用来统一管理线程的,在 Java 中创建和销毁线程都是一件消耗资源的事情,线程池可以重复使用线程,不再频繁的创建、销毁线程。 线程池的作用是提高系统的性能和…

    Java 2023年6月5日
    087
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球