Spring介绍
Posted 小布丁value
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring介绍相关的知识,希望对你有一定的参考价值。
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());
}
}
}
5
以上是关于Spring介绍的主要内容,如果未能解决你的问题,请参考以下文章
Spring boot:thymeleaf 没有正确渲染片段
What's the difference between @Component, @Repository & @Service annotations in Spring?(代码片段
spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象(代码片段
Spring Rest 文档。片段生成时 UTF-8 中间字节无效 [重复]
解决spring-boot启动中碰到的问题:Cannot determine embedded database driver class for database type NONE(转)(代码片段