Spring
常说Spring的两个特点是:IOC和AOP。
- IOC作为一个容器,负责管理Bean(类)
- AOP作为一个切面增强机制,可以做到不修改源代码的情况下对非业务功能进行增强。
这里我们先主要学习IOC
学习Spring的核心,先从一个依赖开始:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
如何将类交给IOC管理
IOC是核心,它有两个配置方式,一个是通过配置文件XML的方式,另外一种是通过配置类注解的方式。
XML的方式
下面是一个固定模板,用来做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">
</beans>
我们通过让Spring管理一个类的例子了解一下简单的配置。
- 让Spring管理类,有两种类:第一个是自定义的类;第二个是JAR包中的类。
如果是自定义的类,我们首先需要自定义一个类。假设在top.chengyunlai.bean
包下有一个Person
类
public class Person {
}
- 需要在XML文件中定义该类
需要用到一个标签:<bean>
,被这个标签定义后,表示该类由Spring的IOC进行管理。
这个标签中有两个属性:id
和class
。
- id:该bean在IOC容器中叫什么名字,定义后,可以通过名字的方式取到该bean
- class:该bean的全类路径在哪里(必填)
<bean id="person" class="top.chengyunlai.bean.Person"></bean>
如果省略id
,就只能通过类型取到该bean
配置类注解的方式
配置类也是一个普通的自定义类,它得有一个标识:@Configuration
;然后<bean>
标签,在这里面是通过@Bean
替换。配置文件中的class
全类路径是通过,方法的方式获得被管理的Bean,先手动将需要被管理的类New出来,所以方法的返回值是被管理的Bean类型。id
属性可以在@Bean
中进行声明。
@Configuration
public class ApplicationConfig {
// 可以直接在 `@Bean` 注解上显式的声明 Bean 的 id ,只不过在注解驱动的范畴里,它不叫 id 而是叫 **name**
@Bean("MyPerson")
public Person person(){
Person person = new Person();
return person;
}
}
读取配置
因为有两种配置方式,所以读取也是有两种方式。
ClassPathXmlApplicationContext
,对应的是配置文件AnnotationConfigApplicationContext
,对应的是配置类
读取配置文件
定义一个主类,编写Main
方法,在Main
方法中写如下代码:
- 读取配置文件
其中xxx/applicationConfig.xml
是在resources
文件下的路径。
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("xxx/applicationConfig.xml");
- 读取配置类
其中ApplicationConfig.class
是在配置类。
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(ApplicationConfig.class);