一、Spring概述
1.Spring是轻量级的开源的免费的JavaEE框架(容器);
2.Spring 是一个轻量级、非入侵式的框架;
3.Spring可以解决企业应用的开发的复杂性;
4.Spring有两个核心部分:控制反转(IOC),面向切面编程(AOP);
4.支持事务的处理,对框架整合的支持。
5.Spring特点:
- 方便解耦,简化开发
- Aop编程支持
- 方便程序测试
- 方便与其他框架进行整合
- 方便进行事务操作
- 降低API开发的难度
总结:Spring就是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的框架。
6.拓展知识:
- Spring Boot 是 Spring 的一套快速配置脚手架,可以基于Spring Boot 快速开发单个微服务;
- Spring Cloud是基于Spring Boot实现的;
- Spring Boot专注于快速、方便集成的单个微服务个体,Spring Cloud关注全局的服务治理框架;
- Spring Boot使用了约束优于配置的理念,很多集成方案已经帮你选择好了,能不配置就不配置 , Spring Cloud很大的一部分是基于Spring Boot来实现,Spring Boot可以离开Spring Cloud独立使用开发项目,但Spring Cloud离不开SpringBoot,属于依赖的关系。
- SpringBoot在SpringClound中起到了承上启下的作用,如果你要学习SpringCloud必须要学习SpringBoot。
二、Spring快速入门
2.1 Spring入门案例开发步骤
(1)导入Spring开发的基本坐标;
(2)编写Dao接口和实现类;(创建bean)
(3)创建Spring核心配置文件;
(4)在Spring配置文件中配置UserDaoImpl;
(5)使用Spring的API获得Bean实例。
2.2 Spring入门案例开发详细步骤
准备建立一个Maven工程的java或javaweb工程,详细步骤参见Maven工程的知识学习;
(1)导入Spring开发的基本坐标;
- 在pom.xml中加入Spring的坐标
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.1.6.RELEASE</version>
</dependency>
(2)编写Dao接口和实现类;
- 在主程序中建立Dao接口
package com.itsheep.dao;
public interface UserDao {
public void save();
}
- 在主程序中建立实现类
package com.itsheep.dao.impl;
import com.itsheep.dao.UserDao;
public class UserDaoImpl implements UserDao {
public void save(){
System.out.println("HelloWorld!");
}
}
(3)创建Spring核心配置文件;
(4)在Spring配置文件中配置UserDaoImpl;
- 在resources中建立applicationContext.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">
<bean id = "userDao" class="com.itsheep.dao.impl.UserDaoImpl"></bean>
</beans>
(5)使用Spring的API获得Bean实例。
package com.itsheep.demo;
import com.itsheep.dao.UserDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class UserDaoDemo {
public static void main(String[] args) {
ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
//类型强转,ALT +ENTER
UserDao userDao = (UserDao) app.getBean("userDao");
userDao.save();
}
}
输出:HelloWorld!
2.3 Spring入门案例步骤解析
Spring 的相关API
1)ClassPathXmlApplicationContext
它是从类的根路径下加载配置文件 推荐使用这种
2)FileSystemXmlApplicationContext
它是从磁盘路径上加载配置文件,配置文件可以在磁盘的任意位置。
3)AnnotationConfigApplicationContext
当使用注解配置容器对象时,需要使用此类来创建 spring 容器。它用来读取注解。
getBean方法使用:两个常用的API
public Object getBean(String name) throws BeansException {
assertBeanFactoryActive();
return getBeanFactory().getBean(name);
}
public <T> T getBean(Class<T> requiredType) throws BeansException {
assertBeanFactoryActive();
return getBeanFactory().getBean(requiredType);
}
第一种:
public class UserDaoDemo {
public static void main(String[] args) {
ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
UserDao userDao = (UserDao) app.getBean("userDao"); //类型强转,ALT +ENTER
userDao.save();
}
}
第二种:
public class UserDaoDemo {
public static void main(String[] args) {
ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
UserDao userDao = app.getBean(UserDao.class);
userDao.save();
}
}
其中,当参数的数据类型是字符串时,表示根据Bean的id从容器中获得Bean实例,返回是Object,需要强转。
当参数的数据类型是Class类型时,表示根据类型从容器中匹配Bean实例,当容器中相同类型的Bean有多个时,
则此方法会报错。