第一章 Spring框架概述
1.1 两大核心:
- IOC(控制翻转)也叫DI(依赖注入)
- AOP(面向切面编程):就是可以给业务方法增加功能,而且不用修改源代码。
使用编程环境(IDE):Idea(也可以选择Eclipse,但是不建议)超级好用,谁用谁知道 。
1.2 SpringIOC:
IOC(控制反转)也可以称之为DI(依赖注入):
- **控制反转:**将 创建对象、属性值的方式 进行了翻转。从new一个对象、xxx.setXXX()设置属性翻转为了从springIOC容器 getBean()获取对象。
- **DI(依赖注入):**只需要在程序中提供要使用的对象名称就可以了,至于对象如何在容器中创建赋值,查找都是由容器内部实现的。
**注:**spring是使用的di实现了ioc的功能,spring底层创建对象是使用反射机制。
第二章 IOC控制反转
实现步骤:
1、创建maven项目
2、加入maven依赖
spring的依赖,
junit依赖
3、创建类(接口和他的实现类)
和普通java程序一样
4、创建spring需要使用的配置文件
声明类的信息,这些类由spring创建和管理
5、测试spring创建的对象。
IDEA中使用spring框架的步骤
1、创建maven工程
注意:
maven工程构建失败的话,有可能是没有更改下载源,maven默认的下载源是国外的,因为国内是访问不到外网的,
所以需要更改一下下载源,建议换成阿里云镜像,这是国内大多数人都在用的,如何换,请自行百度。
创建成功:
这就是工程的目录结构
2、加入maven依赖(pom.xml)
添加位置是在pom.xml文件中的
<dependencies>
....... <!--这里面加入依赖-->
</dependencies>
2.1、spring的依赖
<!-- spring Context包 这里也间接加入了spring-aop了-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>
2.2、junit依赖
<!-- 单元测试类-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
3、创建类(实体类、接口和他的实现类)
实体类 Student:
package com.lg.beans;
public class Student {
private String name;
private Integer age;
private String sex;
public Student() {
}
public Student(String name, Integer age, String sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", sex='" + sex + '\'' +
'}';
}
}
接口 SomeService
package com.lg.service;
public interface SomeService {
void doSome();
}
实现类 SomeServiceImpl
package com.lg.service.impl;
import com.lg.service.SomeService;
public class SomeServiceImpl implements SomeService {
@Override
public void doSome() {
System.out.println("hello Spring!!!!");
}
}
4、创建spring需要使用的配置文件
4.1 如果 mian文件下没有resources文件的得自己创建
如果没有这个标识可以自己手动标记
4.2 创建spring的配置文件
在resources目录下创建配置文件:applicationContext.xml(名字可以自定义,建议使用这个名字命名)
applicationContext.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.xsd">
<!--
spring配置文件
1、beans:是根标签 ,spring把java对象变成bean。
2.spring-beans.xsd 是约束文件,和mybatis中的 dtd是一样的
-->
</beans>
5、创建对象
在spring容器中创建对象
-
使用bean标签,来声明对象
-
bean标签
-
<bean id="" class=""> <!--这里面可以给对象的属性 赋值--> </bean>
-
<bean id="" class="" /> <!--这种写法就不可以给属性赋值-->
-
-
-
属性
- id: 对象的自定义名称,唯一值,spring是通过这个来找到对象的
- class: 类的全限定名称,也就是你要创建的对象的类型,(不能是接口,因为spring是使用的反射机制创建的
对象,必须使用类,而且在java中接口是不能创建对象的。
-
这个例子中还没涉及到如何给类的属性赋值。
-
这样,spring就简单的完成了对象的创建。spring是吧创建好的对象放入到map对象中,
spring框架中有一个map对象一个bean标签声明一个对象
<?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">
<!--
spring配置文件
1、beans:是根标签 ,spring把java对象变成bean。
2.spring-beans.xsd 是约束文件,和mybatis中的 dtd是一样的
-->
<!-- SomeServiceImpl对象-->
<bean id="someService" class="com.lg.service.impl.SomeServiceImpl">
</bean>
<!-- 还有一种格式:
<bean id="someService" class="com.lg.service.impl.SomeServiceImpl" />
-->
<!-- 学生类对象-->
<bean id="myStudent" class="com.lg.beans.Student">
</bean>
</beans>
6、测试spring创建的对象。
示例程序:
public void testSpring()
{
//配置文件名称
String config = "applicationContext.xml"; //spring的配置文件名称
//创建spring容器 并传入spring的路径
//ClassPathXmlApplicationContext 表示从类路径中加载spring的配置文件
ApplicationContext ac = new ClassPathXmlApplicationContext(config);
//从容器中拿出对象 通过配置文件中的bean标签中的id值来获取对象
Student s = (Student) ac.getBean("myStudent");
System.out.println(s);
SomeService someService = (SomeService) ac.getBean("someService");
someService.doSome();
}
运行结果:
7、Spring创建对象的时间
//在创建spring的容器时会创建配置文件的所有对象。
//创建spring容器
// s 是指配置文件路径
ApplicationContext ac = new ClassPathXmlApplicationContext(s);
8、总结:
1、构建好工程项目,使用maven工程直接导依赖(jar)。没有maven工程的自己手动导包。
2、创建好spring容器,通过容器来获取想要的对象。就可以正常的编写代码了。
关于spring:
在创建spring的容器时会创建配置文件的所有对象。
spring创建对象默认会调用无参构造方法。