总结:003 我的第一个Spring程序(入门程序)

今天学习了Java EE企业级应用开发课程。总结一下我的第一个Spring入门程序如何实现的。

Spring:是一个框架,很受欢迎就对了,不知道怎么解释。我对它的理解目前只达到了“只可意会不可言传”的层次

这个程序用到了里面的“控制反转”的概念;我自己对控制反转的理解,大致如此:就是把平时用new关键字来创建实例的那段代码,换成用Spring容器与配置文件结合来创建。

你问为什么要这么搞呢?我也不知道哈哈哈哈,我猜想可能是开发过程中有很多类要被实例化,这样子能减少代码量,使阅读起来更容易。这里欢迎大佬赐教

实现的大致步骤:

在平常我们创建一个类的对象都是用new关键字,而这里运用xml配置文件设置(配置文件怎么设置看正文过程);

创建一个加载了配置文件的Spring容器(怎么创建看正文过程);

然后调用容器的getBean()方法获得指定类的实例对象(怎么调用获得看正文过程)。

正文过程:

1、打开Eclipse,新建一个Web工程,取名chapter01

点击文件》new》other,如下图输入web

我这里已经创建了chapter01所以报错。Target runtime没有没关系,这里不会用到。然后next、next

这里我为了演示就把名字改成chapter011,等会儿依然用chapter01演示。这里注意将Generat web.xml deployment descriptor给勾选上,点击finish

2、导入jar文件,添加到运行目录里。

将图中的四个Spring组件的jar文件和一个第三方jar包复制到WebContent目录下WebInfo下的lib目录下,如下图第一个图;然后右键每一个jar包,选择build path点击add to build path如下图第二个图

3、在java Resources下的src下面,创建一个包,取名com.itheima.ioc,创建一个interface接口,取名为UserDao,代码如下:

package com.itheima.ioc;

public interface UserDao {
	public void say();
}

4、在com.itheima.ioc,包下创建一个类UserDaoImpl,继承接口UserDao,实现接口中的方法say()。代码如下:

package com.itheima.ioc;

public class UserDaoImpl implements UserDao {

	@Override
	public void say() {
		System.out.println("UserDao say Hello World!");

	}

}

 5、在src目录下,创建一个applicationContext.xml配置文件;其中前四行为Spring的约束条件不需要我们编写,第五行指定所用的Spring版本,我的为4.3。第六行bean标签里,用来配置可以实例化的类,其中id是某个类的标识,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
    http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">
    <bean id="userDao" class="com.itheima.ioc.UserDaoImpl">      
    </bean>
</beans>

上面我的代码bean表示:可以创建com.itheima.ioc.UserDaoImpl类的对象,Spring容器通过向getBean()方法传参userDao来获得该类的对象。新手没看懂?接着看下去就懂了。

6、在包下新建TestIoC类,代码如下:

package com.itheima.ioc;

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

public class TestIoC {

	public static void main(String[] args) {
//		初始化Spring容器,加载配置容器
		ApplicationContext applicationContext = 
				new ClassPathXmlApplicationContext("applicationContext.xml");
//		通过容器获得UserDao的实例对象
		UserDao userDao = (UserDao) applicationContext.getBean("userDao");
		userDao.say();

	}

}

我的理解是这样的,Spring容器ApplicationContext的对象applicationContext里面,存了applicationContext.xml里面指定的所有类的对象或者说构造方法,当我们需要的时候,只需要通过调用容器对象applicationContext的getBean(String id)方法,传入想要获得对象的类的id就可以了,然后将获得的对象返回给声明的对象,这样就相当于创建了指定类的对象。

这里就是向getBean()方法传入了UserDaoImpl类的iduserDao,然后获得了这个类的对象,返回给声明的成员对象UserDao 的userDao,这样就创建了UserDao类对象userDao。调用它的方法,可以成功输出,表示这样是可行的。注意这里getBean()方法返回的是Object类,因此需要强制类型转换成指定类。

如果有错误的地方或者疑问的地方,欢迎指出,我每天都会登录。一起学习,一起进步。越努力越幸运。

发布了38 篇原创文章 · 获赞 9 · 访问量 1437

猜你喜欢

转载自blog.csdn.net/qq_42023080/article/details/104978606