自学spring的回顾(1/3
spring概述
spring是一个框架,它有两个核心技术:ioc和aop。
它是一个容器(存放的是java对象),能实现解耦合的作用。
能够进行管理对象和给对象进行属性赋值。
ioc概述
ioc:控制反转,即对象不需要开发人员创建,由容器创建。能够提供对象,对象创建、查找等功能。
ioc的技术实现是使用的di(依赖注入),底层使用的是反射机制。
使用spring中的配置文件创建对象的基本流程
1、创建maven项目
2、加入maven依赖
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
3、创建类
public class Student {
private String name;
private int age;
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age ;
}
}
4、创建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">
<bean id="xiaohong" class="com.my.service.Student"></bean>
</beans>
5、测试
@Test
public void Test1(){
String config="beans.xml";
//在创建容器时,会自动将配置文件中的所有对象都创建
ApplicationContext applicationContext=new ClassPathXmlApplicationContext(config);
Student bean = (Student) applicationContext.getBean("xiaohong");
}
注:可以创建一个主spring配置文件,然后使用import标签导入其他spring配置文件,这样一个类一个spring配置文件。
使用配置文件来对对象属性赋值的几种方式
1、set方法注入:
(1)简单类型的属性赋值:property标签,属性值name和value
(2)引用类型的属性赋值:property标签,属性值name和ref
2、构造方法注入:
(1)根据name来获取属性名赋值:constructor-arg标签,属性值name
(2)根据index来获取属性的位置(从0开始)赋值:constructor-arg标签,属性值index
3、引用类型的自动注入:
(1)byName:根据属性中的属性名和对象名进行匹配,如果有相同的自动赋值
(2)byType:根据属性的类型和对象的类型进行匹配,如果有相同的自动赋值
使用spring中的注解创建对象的基本流程
1、创建maven项目
2、加入maven依赖
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
3、创建类
@Component(value = "xiaohong")
public class Student {
private String name;
private int age;
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age ;
}
}
常见注解:
(1)@Compontent:创建对象
(2)@Repository:创建Dao对象,用来访问数据库的
(3)@Service:创建Service对象,处理业务逻辑,可以有事务功能
(4)@Controller:创建控制器对象,接收请求,处理结果
4、使用配置文件创建组件扫描器扫描注解
<?xml version="1.0" encoding="UTF-8"?>
<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
https://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="com.my"></context:component-scan>
</beans>
5、测试
@Test
public void Test1(){
String config="beans.xml";
//在创建容器时,会自动将配置文件中的所有对象都创建
ApplicationContext applicationContext=new ClassPathXmlApplicationContext(config);
Student bean = (Student) applicationContext.getBean("xiaohong");
}
使用注解来对对象属性赋值的几种方式
常用的赋值注解:
(1)@Value:简单类型的属性赋值
(2)@Qualifier:引用类型的属性赋值
(3)@Autowired:引用类型自动赋值,默认是byType(有一个属性是required,如果这个属性值为true,找不到引用类型就报错,如果是false,则没有就不赋值,为null,默认是true)。
(4)@Resource:jdk中的注解,也是引用类型自动赋值,默认是byName
将注解使用在属性上,就可以完成对属性的赋值