第1次Spring源码学习之@Bean、@Configuration、xml、分析

简介: 第1次Spring源码学习之@Bean、@Configuration、xml、分析

1、准备环境

idea
jdk1.8
maven3.5
Spring 4.3.12

首先这是一个maven项目,为了简单明了此处就不多说了

pom.xml文件引入spring坐标

<dependency>
    <groupId>org.springframework</groupId>
     <artifactId>spring-context</artifactId>
     <version>4.3.12.RELEASE</version>
 </dependency>

创建一个bean对象

package com.zhenghui.bean;
public class Person {
    private String name;
    private Integer age;
    public Person() {
    }
    public Person(String name, Integer age) {
        this.name = name;
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

2、传统的加载Bean模式

在resources目录下创建一个beans.xml配置文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="person" class="com.zhenghui.bean.Person">
        <property name="name" value="zhenghui"/>
        <property name="age" value="18"/>
    </bean>
</beans>

解释

<bean></bean>标签:

id:取的一个名字
class:需要加载的bean的实体类

<property/>标签:

name:实体类的变量名
value:需要赋值的数据

测试类

package com.zhenghui;
import com.zhenghui.bean.Person;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MainTest {
    public static void main(String[] args) {
        //配置的方式
        ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");
        Person person = (Person)applicationContext.getBean("person");
        System.out.println(person.toString());
    }
}

测试结果

可以看出成功的打印出了我们想要的结果

Person{name='zhenghui', age=18}

评价使用xml加载bean的方式这种方式

太笨拙了。

3、使用注解加载bean

创建一个MainConfig.java文件内容如下:

package com.zhenghui.config;
import com.zhenghui.bean.Person;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
//配置类(java代码的方式)==以前的配置文件(xml文件的方式)
@Configuration //告诉Spring这是一个配置类
public class MainConfig {
    //给容器中注册一个Bean;类型就是返回值的类型,id模式是使用的方法名作为id
    @Bean()
    public Person person(){
        return new Person("里斯",20);
    }
}

修改MainTest.java

package com.zhenghui;
import com.zhenghui.bean.Person;
import com.zhenghui.config.MainConfig;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MainTest {
    public static void main(String[] args) {
        ApplicationContext acac = new AnnotationConfigApplicationContext(MainConfig.class);
        Person person = acac.getBean(Person.class);
        System.out.println(person.toString());
    }
}

运行结果

Person{name='里斯', age=20}

分析与评价

可见这种方式比加载配置文件的方式要好的多。

目录
相关文章
|
2月前
|
XML Java 数据格式
Spring从入门到入土(xml配置文件的基础使用方式)
本文详细介绍了Spring框架中XML配置文件的使用方法,包括读取配置文件、创建带参数的构造对象、使用工厂方法和静态方法创建对象、对象生命周期管理以及单例和多例模式的测试。
102 7
Spring从入门到入土(xml配置文件的基础使用方式)
|
3月前
|
XML 存储 JSON
Twaver-HTML5基础学习(19)数据容器(2)_数据序列化_XML、Json
本文介绍了Twaver HTML5中的数据序列化,包括XML和JSON格式的序列化与反序列化方法。文章通过示例代码展示了如何将DataBox中的数据序列化为XML和JSON字符串,以及如何从这些字符串中反序列化数据,重建DataBox中的对象。此外,还提到了用户自定义属性的序列化注册方法。
48 1
|
1月前
|
XML 前端开发 Java
XML基本概念入门学习指南
XML(eXtensible Markup Language)是一种可扩展的标记语言,和HTML语言语法类似,同属于标记语言。
|
3月前
|
XML Java 数据格式
spring复习02,xml配置管理bean
详细讲解了Spring框架中基于XML配置文件管理bean的各种方式,包括获取bean、依赖注入、特殊值处理、属性赋值、集合类型处理、p命名空间、bean作用域及生命周期和自动装配。
spring复习02,xml配置管理bean
|
2月前
|
XML Java 应用服务中间件
tomcat学习一:tomcat 目录及配置文件学习 server.xml 等
这篇文章是关于Apache Tomcat服务器的目录结构、配置文件(特别是server.xml)的详细介绍和学习指南。
72 0
tomcat学习一:tomcat 目录及配置文件学习 server.xml 等
|
2月前
|
Java BI API
spring boot 整合 itextpdf 导出 PDF,写入大文本,写入HTML代码,分析当下导出PDF的几个工具
这篇文章介绍了如何在Spring Boot项目中整合iTextPDF库来导出PDF文件,包括写入大文本和HTML代码,并分析了几种常用的Java PDF导出工具。
506 0
spring boot 整合 itextpdf 导出 PDF,写入大文本,写入HTML代码,分析当下导出PDF的几个工具
|
2月前
|
XML Java 应用服务中间件
【Spring】运行Spring Boot项目,请求响应流程分析以及404和500报错
【Spring】运行Spring Boot项目,请求响应流程分析以及404和500报错
192 2
|
3月前
|
负载均衡 Java 网络架构
实现微服务网关:Zuul与Spring Cloud Gateway的比较分析
实现微服务网关:Zuul与Spring Cloud Gateway的比较分析
129 5
|
3月前
|
XML 存储 Java
Spring-源码深入分析(二)
Spring-源码深入分析(二)
|
2月前
|
XML Java 数据格式
手动开发-简单的Spring基于XML配置的程序--源码解析
手动开发-简单的Spring基于XML配置的程序--源码解析
82 0