关键词:
Spring介绍
介绍
Spring中AOP、IOC等点
IOC介绍
Spring核心思想之一:IOC(Inversion Of Control)控制反转
对象创建交给外部容器完成,这个过程就是控制反转
在之前java使用中,需要使用那个类的对象,在调用方直接New 对象出来,然后完成调用
class User
//User类中用到UserInfo,需要在那个类中创建出对象实例
UserInfo uderinfo = new UserInfo();
getUserInfo()
//todo
updateUserInfo
//todo
class UserInfo
String name;
Intterger ID;
String address;
//getter和setter方法
对象创建交给外部容器完成,这个过程就是控制反转
对于类的创建及销毁等生命周期内的操作都交给容器管理,对象创建也是在容器中,如果调用方需要使用某一个对象,由IOC容器将对象的使用权交给了调用方,调用方只需要关注使用即可,对于对象的回收、创建都不在关注
解耦合!!!
Spring容器管理对象
1、添加依赖
通过maven来管理依赖jar包
Spring容器管理对象
1、添加依赖
通过maven来管理依赖jar包
<!--Spring 基本核心jar包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.1.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.1.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.1.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>4.1.7.RELEASE</version>
</dependency>
<!--log4j日志-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!--注解相关jar包-->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
2、配置spring配置文件(applicationCintext.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-3.0.xsd">
</beans>
3、创建实体类
public class StudentGX21
private String id;
private String name;
public String getId()
return id;
public void setId(String id)
this.id = id;
public String getName()
return name;
public void setName(String name)
this.name = name;
4、spring来管理容器
在之前 new StudentGY21()创建对象
现在有了IOC容器,将该类讲给IOC容器帮助管理
<!--通过bean节点来创建对象,id属性标识对象,class属性是对应类的全路径-->
<bean id="student" class="com.tulun.bean.StudentGX21"/>
5、通过容器获取对象
//获取IOC容器对象
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
StudentGX21 student = (StudentGX21)applicationContext.getBean("student");
System.out.println(student);
先通过读取xml配置文件
对象xml进行解析
通过反射创建bean对象
Spring中DI介绍
DI-Dependency Injection:即依赖注入,将bean的依赖关系由容器来运行决定的,即容器动态的将某个依赖关系注入到组件中
对于依赖注入的使用
以StudentGX21为例,对其属性id和name完成注入
public class StudentGX21
private String id;
private String name;
public String getId()
return id;
public void setId(String id)
this.id = id;
public String getName()
return name;
public void setName(String name)
this.name = name;
依赖注入如下:
<!--通过set方法完成注入-->
<bean id="student" class="com.tulun.bean.StudentGX21">
<!--name属性注入-->
<property name="name" value="工业实训"/>
<property name="id" value="计算机学院"/>
</bean>
Spring中bean实例和依赖注入基于注解形式使用
xml配置文件如下:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
</beans>
开启注解扫描
<!--开启注解扫描,指定包路径或者类名:会扫描类、方法、属性上是否有注解-->
<context:component-scan base-package="com.tulun"/>
在需要交给容器管理的类上添加注解
@Component(value = "student")
//<bean id="student" class="com.tulun.bean.StudentGX21">
public class StudentGX21
@Value("1")
private String id;
@Value("工业大学")
private String name;
@ Resource
private UserGX12 user;
在类上添加的注解是进行bean实例化的注解:
@Component
@Repository
@Controller
@Service
可以互相替换使用
依赖注入相关注解:
@Value:对于普通类型的属性
@ Resource :注入对象类型
@Autowired:注入对象类型
spring和mybatis的整合
整合思路
将SQLSessionFactory等创建交给Spring管理,
将mybatis的数据源、mapper的映射关系都可以交给spring管理
整合步骤
1、引入依赖
除了mybatis、spring依赖外,特定的依赖是mybatis提供专门和spring整合的依赖jar包
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.0</version>
</dependency>
所有的依赖
<!--Spring 基本核心jar包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.1.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.1.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.1.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>4.1.7.RELEASE</version>
</dependency>
<!--log4j日志-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!--注解相关jar包-->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.39</version>
</dependency>
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5.2</version>
</dependency>
2、创建mybatis相关依赖信息
pojo\\mapper.xml\\mapper.java\\全局配置文件
全局配置文件(mybatis-config.xml)
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--数据源及映射都可以不配置,放在spring配置文件中-->
</configuration>
pojo类
public class StudentGX21
private Integer SID;
private String Sname;
private String Ssex;
private Integer Sage;
//省略getter和setter方法
mapper.java接口文件
public interface StudentMapperGX21
public List<StudentGX21> getAllStudent();
mapper.xml配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace:命令空间 为对应的接口文件的全路径-->
<mapper namespace="com.tulun.mapper.StudentMapperGX21">
<select id="getAllStudent" resultType="com.tulun.bean.StudentGX21">
select * from student
</select>
</mapper>
3、spring的配置文件(applicationContext1.xml)
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!--开启注解扫描,指定包路径或者类名:会扫描类、方法、属性上是否有注解-->
<context:component-scan base-package="com.tulun"/>
<!--配置数据源:c3p0数据源-->
<bean id="datasource" class="com.mchange.v2.c3p0.DriverManagerDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver"/>
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test"/>
<property name="user" value="root"/>
<property name="password" value="123456"/>
</bean>
<!--会话工厂的配置-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!--加载mybatis的配置文件-->
<property name="configLocation" value="mybatis-config.xml"/>
<!--配置数据源-->
<property name="dataSource" ref="datasource"/>
<!--配置映射文件-->
<property name="mapperLocations" value="mapper/*.xml"/>
</bean>
<!--动态代理对象-->
<bean class="org.mybatis.spring.mapper.MapperFactoryBean">
<!--接口-->
<property name="mapperInterface" value="com.tulun.mapper.StudentMapperGX21"/>
<property name="sqlSessionFactory" ref="sqlSessionFactory"/>
</bean>
</beans>
4、service层(StudentServce.java
//通过注解形式将该类交给spring管理
@Service(value = "studentService")
public class StudentServiceGX21
// 注入依赖:注入mapper层依赖
@Autowired
private StudentMapperGX21 studentMapperGX21;
public void allStudents()
List <StudentGX21> studentGX21s = studentMapperGX21.getAllStudent();
Iterator <StudentGX21> iterator = studentGX21s.iterator();
while (iterator.hasNext())
System.out.println(iterator.next());
5spring配置使用介绍(代码片段)
Spring配置使用介绍文章目录Spring配置使用介绍一、集合类型注入1、注解形式2、xml形式二、alias使用1、xml形式2、注解形式三、depends-on1、xml形式2、注解形式四、继承关系五、scope1、xml形式2、注解形式六、replaced-method七、配置文... 查看详情
spring中的advice类型介绍(代码片段)
Spring中的Advice类型介绍翻译原文链接IntroductiontoAdviceTypesinSpring1.概述在本文中,我们将讨论可以在Spring中创建的不同类型的AOP通知。Inthisarticle,we’lldiscussdifferenttypesofAOPadvicethatcanbecreatedinSpring.通知是切面在特定连接点采取的... 查看详情
spring(34)——springretry介绍(代码片段)
SpringRetry介绍Springretry是Spring提供的一种重试机制的解决方案。它内部抽象了一个RetryOperations接口,其定义如下。publicinterfaceRetryOperations<T,EextendsThrowable>Texecute(RetryCallback<T,E>retryCallback)throwsE;< 查看详情
spring中的advice类型介绍(代码片段)
Spring中的Advice类型介绍翻译原文链接IntroductiontoAdviceTypesinSpring1.概述在本文中,我们将讨论可以在Spring中创建的不同类型的AOP通知。通知是切面在特定连接点采取的行动。不同类型的通知包括环绕、前置和后置通知。切面的主要... 查看详情
day02-spring基本介绍02(代码片段)
Spring基本介绍025.简单模拟Spring基于XML配置的程序5.1需求说明自己写一个简单的Spring容器,通过读取beans.xml,获取第一个Javabean:Monster的对象,给该对象属性赋值,放入到容器中,并输出该对象信息也就是说,不使用spring原生框... 查看详情
spring初识spring--spring介绍(代码片段)
Spring入门之初识Spring1.概述1.1优点1.2组成2.IOC基础2.1IOC理论推导2.2IOC本质1.概述Spring轻量级的开源的JavaEE框架2002年,Spring框架的雏形:Interface21Spring框架即以Interface21框架为基础,经过重新设计,并不断丰富其内涵... 查看详情
spring中的切点表达式介绍(代码片段)
Spring中的切点表达式介绍翻译原文链接IntroductiontoPointcutExpressionsinSpring1.概述在本教程中,我们将讨论SpringAOP切点表达式语言。InthistutorialwewilldiscusstheSpringAOPpointcutexpressionlanguage.我们将首先介绍一些在面向切面编程中使用的术... 查看详情
spring读源码系列01---spring核心类及关联性介绍(代码片段)
Spring读源码系列01---Spring核心类及关联性介绍Spring核心类引子DefaultListableBeanFactoryDefaultListableBeanFactory的继承体系XmlBeanDefinitionReader容器的基础XmlBeanFactory配置文件--->Resource进入源码追踪XmlBeanFactory的构造函数loadBeanDefinit 查看详情
springspring入门介绍(代码片段)
文章目录1.Spring介绍1.1Spring是什么?1.2IoC是什么?1.3DI是什么?1.4Spring的核心功能1.5Spring的应用上下文2.Spring项目的创建和使用2.1创建Maven项目2.2存储Bean对象2.3获取并使用Bean对象3.Spring更简单的读取和存储对象方式3.1存... 查看详情
一spring介绍以及版本历史演进(代码片段)
背景Spring的第一个版本于2002年10月发布,由一个带有易于配置和使用的控制反转(IoC)容器的小型内核组成。多年来,Spring已经成为JavaEnterpriseEdition(Java企业版JEE)的主要替代品,并且发展成一个由许... 查看详情
spring源码分析容器的基本实现——核心类介绍(代码片段)
bean是Spring中最核心的东西,因为Spring就像是个大水桶,而bean就像是容器中的水,水桶脱离了水便也没什么用处了,那么我们先看看bean的定义。publicclassMyTestBeanprivateStringtestStr="testStr";publicStringgetTestStr()returntestStr;publicvoids... 查看详情
springboot脚手架项目001__项目介绍技术介绍(代码片段)
SpringBoot、脚手架项目001——Spring的基础文章目录SpringBoot、脚手架项目001——Spring的基础SpringBoot是什么?作用——我们可以把这个项目作为脚手架什么是面向对象编程我们思考Spring框架去解决了一个什么问题呢后话spring全家... 查看详情
spring项目xml文件使用常见介绍(代码片段)
1项目pom.xml<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance 查看详情
spring项目xml文件使用常见介绍(代码片段)
1项目pom.xml<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance 查看详情
spring基础:代理模式介绍(代码片段)
目录代理模式介绍一、静态代理二、动态代理1、Proxy动态代理2、Cglib动态代理三、总结代理模式介绍代理模式是通过代理对象访问目标对象,这样可以在目标对象基础上增强额外的功能,如添加权限,访问控制和审计... 查看详情
ipv6-基础介绍(代码片段)
?本系列文章:读源码,我们可以从第一行读起你知道Spring是怎么解析配置类的吗?配置类为什么要添加@Configuration注解?br/>本系列文章:读源码,我们可以从第一行读起你知道Spring是怎么解析配置类的吗?配置类为什么要添加@C... 查看详情
spring学习-ioc-xml关键配置介绍(代码片段)
介绍spring的xml配置项较多,这里作一个综述配置示例如下:<?xmlversion="1.0"encoding="UTF-8"?><!--xml的版本和编码方式,必须放在开始--><!--参考:https://www.cnblogs.com/zhao1949/ 查看详情
spring的介绍引用spring的依赖包resources下xml的配置简单示例(代码片段)
文章目录前言一、spring简介二、spring特点三、IOC概念四、DI概念五、使用spring实现一个简单程序(在jdk,还有maven安装好的前提下)1.引用spring的依赖包2.引用springcontext的依赖包3.编写dog类4.在resources文件夹中创建spring-2... 查看详情