spring简介(来自百度百科):
* Spring是一个开源框架
* Spring是于2003 年兴起的一个轻量级的Java开发框架,由Rod Johnson在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。
* 它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。
* Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以 从Spring中受益。
* Spring的核心是控制反转(IoC)和面向切面(AOP)。简单来说,Spring是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开源框架。
* EE开发分成三层结构
* WEB层 -- Spring MVC
* 业务层 -- Bean管理:(IOC)
* 持久层 -- Spring的JDBC模板.ORM模板用于整合其他的持久层框架
本次案例使用IoC 控制反转
spring入门案例需要以下几步来完成:
- 导入jar包
spring的基础功能只需要6个包就可以了,如下图:
其中log4j需要配置一下可以参考:https://blog.csdn.net/alexzt/article/details/83412687
- 创建对应的包结构与java类
接口就不贴了
package service;
import test.Demo1;
public class UserServiceImpl implements UserService{
@Override
public void usDemo1() {
new Demo1().demo1();
// System.out.println("demo1");
}
}
package test;
import org.apache.log4j.Logger;
import org.junit.Test;
public class Demo1 {
/*
* 使用log4j来输出log信息,需要在log4j.properties中配置
*/
@Test
public void demo1() {
Logger logger = Logger.getLogger(Demo1.class);
logger.info("running: "+ Demo1.class.getName() + "." +new Exception().getStackTrace()[0].getMethodName()+"()");
}
}
- 将userService交给spring来管理,创建spring的配置文件,命名为applicationContext.xml(可以任意名称)
Spring框架中<bean>标签的配置
1. id属性和name属性的区别
* id -- Bean起个名字,在约束中采用ID的约束,唯一
* 取值要求:必须以字母开始,可以使用字母、数字、连字符、下划线、句话、冒号 id:不能出现特殊字符
* name -- Bean起个名字,没有采用ID的约束(了解)
* 取值要求:name:出现特殊字符.如果<bean>没有id的话 , name可以当做id使用
* Spring框架在整合Struts1的框架的时候,Struts1的框架的访问路径是以/开头的,例如:/bookAction
2. class属性 -- Bean对象的全路径
3. scope属性 -- scope属性代表Bean的作用范围
* singleton -- 单例(默认值)
* prototype -- 多例,在Spring框架整合Struts2框架的时候,Action类也需要交给Spring做管理,配置把Action类配置成多例!!
* request -- 应用在Web项目中,每次HTTP请求都会创建一个新的Bean
* session -- 应用在Web项目中,同一个HTTP Session 共享一个Bean
* globalsession -- 应用在Web项目中,多服务器间的session
<?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">
<!-- 需要管理的bean -->
<bean id="userSerivce" class="service.UserServiceImpl"/>
</beans>
如果在eclipse中配置applicationContext.xml没有提示的话,可能需要导入一下xsd约束可以参考以下链接:
- 编写测试用例通过spring工厂来获得配置好的bean(这里是userService)
* 使用ApplicationContext工厂的接口,使用该接口可以获取到具体的Bean对象
* 该接口下有两个具体的实现类
* ClassPathXmlApplicationContext -- 加载类路径下的Spring配置文件
* FileSystemXmlApplicationContext -- 加载本地磁盘下的Spring配置文件
package test;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import service.UserService;
/**
* spring的测试代码
* @author Administrator
*
*/
public class Demo2 {
/*
* spring入门代码,通过spring的工厂模式来获得UserService接口来执行方法
*/
@Test
public void demo1() {
//获得ApplicationContext,如需关闭context,需要将变量的接口类型换位ClassPathXmlApplicationContext实现类
ApplicationContext aContext = new ClassPathXmlApplicationContext("applicationContext.xml");
//通过工厂获得UserService
UserService us = (UserService) aContext.getBean("userSerivce");
//执行方法
us.usDemo1();
}
}
输出:
好了这就完成了一次spring的入门案例。