Spring系列-(2)HelloWorld的基本构成

Spring系列 -(2)HelloWorld的基本构成

前言

上次演示了SpringIOC的基本用法,这次咱来一起探究一下SpringIOC中都有什么内容组成的

1.pom.xml

<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-webmvc</artifactId>
    <version>5.2.2.RELEASE</version> 
</dependency>

这个不用过多解释,就是导入Spring所需要的jar包

2.Hello.java

public class Hello {
    private String name;
    private String context;

    public Hello() {
    }

    public Hello(String name, String context) {
        this.name = name;
        this.context = context;
    }

    public String getName() {
        return name;
    }

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

    public String getContext() {
        return context;
    }

    public void setContext(String context) {
        this.context = context;
    }

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

这是一个普通的javaBean类,目的就是为了在创建对象时不通过直接new的方式而是通过IOC容器去获取

3.bean.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 https://www.springframework.org/schema/beans/spring-beans.xsd> 
<context:component-scan base-package="java"></context:component-scan>
   <bean id="hello" class="Hello"> 
       <property name="name" value="adai"></property> 
       <property name="context" value="hello"></property>
   </bean> 
 </beans>

这个是Spring的配置文件,补充一下昨天写欠的部分,要加上一句<context:component-scan base-package="java"></context:component-scan>,Spring有两种实现方式,一种是基于注解实现,一种是基于xml配置文件实现,这个bean.xml就是Spring实现的配置文件

<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 https://www.springframework.org/schema/beans/spring-beans.xsd> 
</beans>

这一段是导入命名空间,你xml里面用到了什么标签就要导入对应的命名空间

<context:component-scan base-package="java"></context:component-scan>
<bean id="hello" class="Hello"> 
       <property name="name" value="adai"></property> 
       <property name="context" value="hello"></property>
</bean> 

这一段是bean标签和context标签,context标签里有一个base-package,这是包扫描,意思就是你要扫描哪个包下的类,被扫描到的这些包下的类,在bean标签里面的class就可以只写类名不用写全称,比如下图,我想用java包下的那几个类,那么我可以写base-package="java"这样,你在bean标签的class里面就不用加上java包。
在这里插入图片描述
接下来说说bean标签,bean标签比较复杂,里面可以传很多个值,这里先简单说下上面传的值,后续再跟大家说说别的值

<bean id="hello" class="Hello"> 
       <property name="name" value="adai"></property> 
       <property name="context" value="hello"></property>
</bean> 

首先,bean标签里有id和class两个值,class就是类名,当你要用IOC创建一个对象时,你就需要把要创建的对象的类名写给class,前提是你要有上面说的包扫描,就可以直接写类名,如果没有包扫描,那么就需要把全类名都写进去,id可以取任意,但一般都是把类名的首写字母改为小写作为id。然后可以看到bean标签里面还有两个property子标签,在文中,property传入了两个值,一个是name一个是value,name值就是你要赋给类里哪个属性的属性名,value就是属性的值,比如Hello里面有个name属性,那么就可以写name="name",前一个name是property的name值,后一个name是Hello类的name属性,value是adai。

4.测试类

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Mytest {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
        Hello hello = `context.getBean("hello", Hello.class);`
        String context1 = hello.getContext();
        String name = hello.getName();
        System.out.println(context1);
        System.out.println(name);
    }
}

最后说说测试类

ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");

这一句是最关键的,new了这个ClassPathXmlApplicationContext类,并且传入bean.xml的参数,就可以取到一个类型为ApplicationContext的对象,这里用了多态更加的灵活,至此,bean.xml里的所有bean标签都已经被初始化了,就算后面没有用到,IOC也已经帮你初始化了,然后再通过调用context里的getBean方法并且传入刚才bean标签里面的id的值还有要创建的类.class,就可以获取到你刚才bean标签里面的属性的值,比如context.getBean("hello", Hello.class)这里返回的类型就是Hello类型,并且这个hello对象里面的name和context属性就已经有我们刚才在bean标签里面所赋的value的值了
其实看到这里,很多人有疑问不是说不用new吗,这里不就有一个new创建对象吗,那不也一个样吗,确实,如果当你只创建一个类时确实看不出什么,但是当你有很多类要创建的时候,你就可以只创建一个ApplicationContext的对象,然后通过对象.getBean的方法获取对象。

总结

ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");

这一步很重要,没有这一步就没办法加载bean,后面讲源码的时候也是从这一步切入的,bean标签里面也有很多学问,以后我会慢慢跟大家分享我所了解的Spring,学Spring有时候很枯燥,但是坚持下去会得到意想不到的收获的,一起加油

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值