1、Spring依赖
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
</build>
2、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">
<!--id:唯一标识符,相当于Person person中的person
Class:类的全称,相当于new Person()
-->
<!--设值注入(属性注入)-->
<bean id="person" class="vo.Person">
<property name="name" value="小二"/>
<property name="context" value="狼来了"/>
</bean>
<!--构造器注入-->
<bean id="person2" class="vo.Person">
<constructor-arg name="name" value="小三"/>
<constructor-arg name="context" value="狗来了"/>
</bean>
<!--p命名空间注入-->
<bean id="person3" class="vo.Person" p:name="小四" p:context="大狗来了"/>
</beans>
3、Spring基础语法(调用)
//加载spring.xml配置文件 加载ioc
ApplicationContext ioc= new ClassPathXmlApplicationContext("spring.xml");
//获取bean
Person person= (Person) ioc.getBean("person");
4、Spring的生命周期
//srping容器
<!--spring的生命周期
init-method:初始化调用
destroy-method:销毁调用
方法写在实体类中
-->
<bean id="person4" class="vo.Person" p:name="小五" p:context="小狗来了" init-method="init" destroy-method="destory"/>
//java
//加载spring.xml配置文件 加载ioc 加载时就已经调用构造函数并初始化
ClassPathXmlApplicationContext ioc= new ClassPathXmlApplicationContext("spring.xml");
//获取bean
Person person= (Person) ioc.getBean("person4");
person.say();
//释放资源 在ioc销毁的时候实体对象也会销毁
ioc.close();
sout
5、Spring中bean的作用域
//Spring容器
<!--
spring中bean的作用域scope
singleton:单例 没有设置作用域的时候默认为单例
prototype:原型
-->
<bean id="person5" class="vo.Person" scope="singleton"/>
<bean id="person6" class="vo.Person" scope="prototype"/>
//加载spring.xml配置文件 加载ioc 加载时就已经调用构造函数并初始化
ApplicationContext ioc= new ClassPathXmlApplicationContext("spring.xml");
//获取bean 单例
Person person1= (Person) ioc.getBean("person5");
Person person2= (Person) ioc.getBean("person5");
System.out.println(person1==person2);
//输出结果为true
//加载spring.xml配置文件 加载ioc 加载时就已经调用构造函数并初始化
ApplicationContext ioc= new ClassPathXmlApplicationContext("spring.xml");
//获取bean 原型
Person person1= (Person) ioc.getBean("person6");
Person person2= (Person) ioc.getBean("person6");
System.out.println(person1==person2);
//输出结果为false
6、Spring引入外部属性文件
<context:property-placeholder location="classpath:db.properties"/>
<!--JdbcUtilProperties是自己创建的一个实体类 db.properties是存放在资源文件中的外部文件-->