【spring】spring手动导包,启动项目

1、spring的下载

       spring基本上是每个企业必用的框架,至于spring是干什么的?有什么作用?特点是什么?自行百度,网上一大堆,大同小异。这里变不在啰嗦这些。这里直接从下载框架开始到第一个hello word程序结束。spring的官网地址为https://spring.io/,进入官网之后,点击PROJECT可以找到spring框架的连接,由于spring生态中有很多框架,如果能将所有的框架搞定,也算是大神了。下面粘贴一个下载教程的博客,目前是最新的一种下载方式下载教程。

写hello word程序需要导入基本的jar包,如下:

最后的项目结构如下:

在下载的jar包的zip中有文档,接下来从文档中的提示创建配置文件applicationContext.xml,直接拷贝文档中的xml格式,然后创建文件:

然后创建一个student类,并且将student类配置到配置文件中,并且设置初始值:

配置文件内容如下:

然后是书写测试类:

二、ApplicationContext和BeanFactory的区别

在上面的程序中,使用ClassPathXmlApplicationContext对象来作为初始化容器。其实ClassPathXmlApplicationContext实现了一个接口BeanFactory。那么BeanFactory也可以作为容器。就是BeanFactory接口的实现类所定义的容器对象,代码如下:

    @Test
    public void test3() {
        //第一种获取配置文件的方式
        //String configPath = "G:\\laiwenbo\\java\\idea\\spring\\src\\cn\\lwb\\spring\\helloword\\applicationContext.xml";
        //Resource resource = new PathResource(configPath);
        //第二中获取配置文件的方式
        String configPath = "cn/lwb/spring/helloword/applicationContext.xml";
        Resource resource = new ClassPathResource(configPath);
        BeanFactory beanFactory = new XmlBeanFactory(resource);
        Object student = beanFactory.getBean("student");
        System.out.println(student);
    }

那么在这两种方式中,有什么区别呢?下面在Student类中加上构造方法,

public class Student {
    private String name;
    private Integer age;

    public Student() {
        System.out.println("Student对象被创建了.....");
    }

    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 "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

然后来运行两种方式容器的构造方法:

    @Test
    public void test4() {
        String configPath1 = "cn/lwb/spring/helloword/applicationContext.xml";
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext(configPath1);
        //Student student1 = (Student)applicationContext.getBean("student");
        System.out.println("===============华丽的分割线=================");
        String configPath2 = "cn/lwb/spring/helloword/applicationContext.xml";
        Resource resource = new ClassPathResource(configPath2);
        BeanFactory beanFactory = new XmlBeanFactory(resource);
        //Object student2 = beanFactory.getBean("student");
    }

可以发现,在注释掉获取Bean代码的情况下,ClassPathXmlApplicationContext(applicationContext.xml)在初始化创建容器的时候,就创建了配置文件中所定义的Bean。而BeanFactory在初始化容器的时候,并没有创建配置文件(applicationContext.xml)中所定义的对象。那么放开BeanFactory中注释掉的获取Bean对象的代码,再次运行呢?

此时发现配置文件中所定义的student对象被创建了。所以它们的区别是:

  • ApplicationContext:在初始化容器的时候,会将所有的Bean(对象)进行创建
  1. 缺点:占用系统资源
  2. 优点:响应速度快
  • BeanFactory:初始化容器的时候,容器中定义的对象并不会被创建,而是在真正使用的时候被创建。
  1. 缺点:响应速度慢
  2. 优点:不多占用系统资源

通常情况下,我们使用ApplicationContext,因为用户的体验才是系统的优劣所在。而对于系统资源来说,我们可以借助硬件来解决。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值