初识Spring与第一个入门demo

结束了Mybatis框架的学习,这几天开始接触Spring框架,每天学习完,差不多在十点之后都会写个博文来记录复盘今天的所学,也顺便整理加深印象。

什么是Spring框架?

Spring框架是为了解决软件开发的复杂性而创建的,其使用基本的JavaBean来完成以前只能由EJB完成的事情。其适用范围是任何的Java应用。Spring是一个轻量级控制反转(IOC)和面向切面(AOP)的容器框架。

Spring有哪些优点?

  1. Spring是一个开源的免费框架(容器)
  2. Spring是一个轻量级,非侵入式的框架
  3. 控制反转,面向切面编程
  4. 支持事物的处理,对框架整合的支持

下面做个实例演示,看看传统开发模式和使用Spring框架后的开发有什么不同


传统开发大体结构如下:

 

 dao层的一个 接口是:

public interface UserDao {
    void getUser();
}

 实现dao接口的一个类:

public class UserDaoimpl implements UserDao {
    @Override
    public void getUser() {
        System.out.println("获取用户的数据");
    }
}

service业务层接口:

public interface UserService {
    void getUser();
}

实现service层接口的一个类:

public class UserServiceImpl implements UserService {
    private UserDao userDao=new UserDaoimpl
    @Override
    public void getUser() {
        userDao.getUser();
    }
}

测试:

    public void Test1() {
        UserServiceImpl userService = new UserServiceImpl();
        userService.getUser();
    }

结果是

========================================================

现在我们要给上面的dao接口增加一个 实现类

public class UserDaoMysqlImpl implements UserDao {
    @Override
    public void getUser() {
        System.out.println("MySql获取用户数据");
    }
}

 当我们想在测试类中调用这个实现类的时候,你会发现我们还要把下面的标记处代码修改

 从中我们可以看到,在原有的业务中,在增加新的需求的时候很有可能会影响到原来的代码,进而还得根据需求修改原有的代码,如果程序很大,那么修改起来是一个很费时,成本还挺大的事情。

现在,我们尝试将上面业务层的一个实现类做下修改,增加一个set方法,如下

public class UserServiceImpl implements UserService {
    private UserDao userDao;

    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }
    @Override
    public void getUser() {
        userDao.getUser();
    }
}

然后新的测试方法如下:(利用Set进行动态实现值注入)

    @Test
    public void Test1() {
//        用户实际调用的是业务,Dao层不需要接触
        UserServiceImpl userService = new UserServiceImpl();
//        userService.setUserDao(new UserDaoimpl());
        userService.setUserDao(new UserDaoMysqlImpl());
        userService.getUser();
    }

当我们再增加的一个dao实现类的时候,原有的业务层就不用动了。这样,之前是程序主动创建对象,控制权在程序员手上,而使用了set注入后,程序不在具有主动性,变成了被动的接受对象。这种思想,从本质上解决了问题,让程序员不用再去管理对象的创建,可以更加专注在业务的实现上。


我的第一个spring入门案例:

首先是创建maven项目,然后在pom.xml里导入依赖:

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

创建实体类:

public class Hello {
    private String name;

    public void show() {
        System.out.println("hello"+name);
    }

    public String getName() {
        return name;
    }

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

在resources目录下创建beans.xml    (id是bean的唯一标识,class是实体类的全限定名)

<?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">
    <!--使用spring创建对象-->
    <bean id="hello" class="com.ys.pojo.Hello">
        <property name="name" value="spring"/>
    </bean>
</beans>

测试

@Test
    public void Test1() {
//        获取spring的上下文对象
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
//        我们的对象都在spring中的管理了
        Hello hello = (Hello) context.getBean("hello");
        hello.show();
    }

运行结果:

 


使用spring后,我们就不用再去程序中改动原有代码了,要实现不同的操作,只需在xml配置文件中进行修改,这就实现了控制反转IOC

控制:谁来控制对象的创建,传统应用程序的对象有程序本身来控制创建,使用Spring后,对象有spring来创建

反转:程序本身不创建对象,而变成被动的接收对象

依赖注入:即利用Set方法进行注入

总之,IOC即对象由Spring来创建吗,管理和装配!

O(∩_∩)O哈哈~   觉得不错三连支持一下哦,有不对的地方欢迎指正!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员-小李

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值