spring入门

spring是一个开放源代码的Java EE框架,主要是为了解决企业应用程序维护复杂性而创建的。spring简化了Java EE开发,提升了软件项目开发效率,提高开发效率的解决办法是使用模块结构,每一个模块处理一个功能或者是业务。spring的主要的模块如下图:
在这里插入图片描述

在spring框架中提供了一个JavaBean容器,在这个容器中存储不同的数据类型的JavaBean对象,容器中可以将很多种不同功能的JavaBean进行整合,进行集成,来达到综合技术应用的目的。

spring的好处:
(1)方便解耦,简化开发:spring一大重要特性控制翻转,可以将所有对象创建和依赖关系维护由spring管理;
(2)AOP:spring提供面向切面编程,可以方便实现对程序进行权限拦截、运行监控等功能;
(3)声明式事务的支持
(4)方便测试:支持junit4
(5)方便集成各种优秀框架

spring快速入门

(1)创建一个项目,在创建项目时,选择spring。将需要用到的jar包放在一个文件夹,创建时在右下角use library选择存储jar包的文件夹,选中所有jar包。如下图所示:


我导入的jar包:
在这里插入图片描述
(2)配置项目,在src下创建配置文件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">

</beans>

(3)简单实现控制反转。
spring很重要的一个特性就是控制反转。简单的说,就是将对象的创建,维护,销毁等工作由开发人员管理改为交由spring管理。控制权实现由开发人员到spring的反转。

创建一个接口:

package com.spring.service;

public interface UserService {
    public void add();
}

创建实现类:

package com.spring.service;

public class UserServiceimpl implements UserService {

    @Override
    public void add() {
        System.out.println("添加一个用户");
    }
}

在配置文件beans.xml配置,在beans标签内部添加如下代码段,其中id是自己起的标识符名称,class是类的全限定名称。

<bean id="userService" class="com.spring.service.UserServiceimpl"> </bean>

编写测试文件:

package com.spring.test;

import com.spring.service.UserService;
import com.spring.service.UserServiceimpl;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Demo1 {

    @Test
    public void test1(){

        //加载beans.xml配置文件
        //注意,在加载配置文件时,ClassPathXmlApplicationContext的参数路径是相对于classpath的路径
        //执行了这一句对象就已经生成并存放于DI容器中
        ApplicationContext context=new ClassPathXmlApplicationContext("beans.xml");
        
        //从容器中获取对象
        UserServiceimpl userservice= (UserServiceimpl) context.getBean("userService");
        userservice.add();
      
    }
}

执行结果如下图所示:
在这里插入图片描述

从DI容器获取对象的两种方法

(1)getbean(类名.class):上面例子中,可以选用

UserServiceimpl userservice= (UserServiceimpl) context.getBean(UserServiceimpl.class);

这个方法适用于容器中只有一个该类的实例。
(2)getbean(“配置文件标识符”):本文即采用这种办法,这种办法适用于容器中出现多个相同数据类型的对象时。如下面代码段,

<bean id="userService1" class="com.spring.service.UserServiceimpl"> </bean>

 <bean id="userService2" class="com.spring.service.UserServiceimpl"></bean>

此时需要分别取用如下所示:

        UserServiceimpl userservice1= (UserServiceimpl) context.getBean("userService1");
        userservice1.add();
        
        UserServiceimpl userservice2= (UserServiceimpl) context.getBean("userService1");
        userservice2.add();

加载spring容器的三种方式

(1)类路径获得配置文件:本文即采取这种办法

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

(2)采用文件系统路径,即绝对路径:

ApplicationContext context=new FileSystemXmlApplicationContext("C:\\Users\\Administrator\\IdeaProjects\\myspring\\src\\beans.xml");

(3)使用BeanFactory,路径需是绝对路径

BeanFactory beanFactory=new FileSystemXmlApplicationContext("C:\\\\Users\\\\Administrator\\\\IdeaProjects\\\\myspring\\\\src\\\\beans.xml");

**BeanFactory和ApplicationContext的对比:**ApplicationContext在完成加载配置文件时就已经初始化Bean,而BeanFactory采取延时加载,第一次getBean时才会初始化Bean。

欢迎指正哈!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值