Spring学习笔记(一)----使用IDEA编写Spring Hello World
1.版本说明
IDE:Idea 2017
Spring:5.0.1 (如果你使用了Spring4.0以上版本,则需要保证JDK版本在1.8及以上!)
JDK:1.8
2.配置Spring环境
(1)配置前准备:
Spring的jar包,以及Spring的依赖包common-logging。你可以前往官方网站下载zip压缩包:
commonlogging下载:
http://commons.apache.org/proper/commons-logging/download_logging.cgi
Spring 下载:进入该站后点击你需要的版本,下载其中的“spring-framework-(版本号).RELEASE-dist.zip”,里面包含了类文件和doc文档
http://repo.spring.io/release/org/springframework/spring/
(2)创建Spring Hello World
①创建JavaWeb项目
file --->new project --->选择java ee下的Web Application
②next--->编辑你的项目名称---->finish
③创建完成后,在项目的的web目录下的WEB-INF下创建lib、classes文件夹,
用于存放下载的Spring和common-logging。
④Project Structure配置
file ----> Project Structure 进入Modules
1)选择Path,将路径指向刚刚建立的classes的路径(该步骤是设置class文件的输出路径)
2)选择dependcies,点击右边 “+” 号,选择JAR or directories,路径指向刚刚建立的lib文件夹(该步骤是设置Project的外部依赖包的路径)
3)当然,作为Java Web项目,后续还有其他配置。但是,仅仅做demo,Project Structure到这里可以了。点击apply。你会发现WEB-INF下多了classes文件夹
⑤将Spring jar包和common jar包copy到lib文件夹下
将下载的zip包解压后,如下:其中libs目录下是所有jar包,docs中有api文档。
我们需要将libs目录下所有以 ******.RELEASE.jar结尾的文件以及commons-logging-1.x.jar copy到Project中的lib目录下
注意:在Idea中 ,所有外部依赖的jar包在加入到project中后 ,要选中该jar 右键点击“add as library”,或者在加入全部的jar后,右键lib文件夹,“add as library”。
值得一说的是:docs ---> javadoc-api 下有index.html,打开它就可以在浏览器出查看Spring的API了
⑥编写demo.java
我的项目结构如下,主要是为了接着往后面学习,所以创建了很多包
一共需要三个文件:User.java UserTest.java,以及Spring Bean的配置文件----UserBean.xml
User.java
package com.test.springtest.test; public class User { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
UserTest.java
package com.test.springtest.test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class UserTest { public static void main(String[] arg){ //一般情况下的创建新对象方式 User user1 = new User(); user1.setName("张三"); System.out.println("----使用new的方式创建对象----"); System.out.println("user1's name is:" + user1.getName()); /*
*使用框架的API ClassPathXmlApplicationContext() 来创建应用程序的上下文。
*这个 API 加载 beans 的配置文件并最终基于所提供的 API,它处理创建并初始化所有的对象,即在配置文件中提到的 beans。
*/ ApplicationContext context = new ClassPathXmlApplicationContext("UserBean.xml");
/*
*使用已创建的上下文的 getBean() 方法来获得所需的 bean。
*这个方法使用 bean 的 ID 返回一个最终可以转换为实际对象的通用对象。
*一旦有了对象,你就可以使用这个对象调用任何类的方法。
*/ User user2 = (User) context.getBean("User"); System.out.println("----使用Spring Bean的方式创建对象----"); System.out.println("user2's name is:" + user2.getName()); } }
UserBean.xml
Beans.xml 用于给不同的 bean 分配唯一的 ID,并且控制不同值的对象的创建,而不会影响 Spring 的任何源文件。例如,使用下面的文件,你可以为 “name” 变量传递任何值,因此你就可以输出信息的不同值,而不会影响的 User.java和UserTest.java 文件。
一个个的<bean></bean>就相当于要实例化的对象。在Spring中将对象的管理交给了Spring 容器。
<?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"> <!--id指向User类--> <bean id="User" class="com.test.springtest.test.User"> <!--在实例化对象时为成员变量赋值--> <property name="name" value="李四"></property> </bean> </beans>
运行main:
----使用new的方式创建对象----
user1's name is:张三
八月 11, 2018 3:52:51 下午 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@2530c12:
startup date [Sat Aug 11 15:52:51 CST 2018]; root of context hierarchy
八月 11, 2018 3:52:51 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from class path resource [UserBean.xml]
----使用Spring Bean的方式创建对象----
user2's name is:李四
在输出中可以发现:
使用Spring的方式需要加载上下文(context),Beans.xml文件