初识Spring(IOC,DI,创建流程)
Posted 满眼*星辰
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初识Spring(IOC,DI,创建流程)相关的知识,希望对你有一定的参考价值。
Spring Framework 布局图
IOC 控制反转
(Inversion of Control,控制反转) ,是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。
使用 IOC 之前,我们需要自己 new 对象,相当于对象的创建权和销毁权在我们手中,而使用 IOC 之后,相当于将控制权交给第三方(Spring容器)进行管理。
DI 依赖注入
DI (Dependency Injection,依赖注入) 是实现IoC的方法之一。所谓依赖注入,就是由IOC容器在运行期间,动态地将某种依赖关系注入到对象之中。
总结: IOC 控制反转是一种程序设计思想,而 DI (依赖注入)是实现控制反转的技术实现
Spring Bean 类注册
@Controller —— 控制器(web逻辑处理层)
@Service —— 业务逻辑层 Article(CRUD)
@Component —— 通用组件
@Repository —— 数据库持久层,操作数据库数据(CRUD)
在spring项目中创建对象
- pom.xml中添加引用
<properties>
<java.version>1.8</java.version>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring-framework.version>5.2.10.RELEASE</spring-framework.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring-framework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring-framework.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.16</version>
</dependency>
</dependencies>
- 创建一个类,然后得到它的父类对象,需要配置xml文件来扫描spring根路径
package org.example;
import org.example.controller.LoginController;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class App {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
}
}
- 在资源中创建次xml文件,有固定的格式,修改context的路径为扫描路径
<?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
https://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="org.example"/>
</beans>
- 在路径下创建controller,添加@Controller注解来注册此类到spring项目中
package org.example.controller;
import org.springframework.stereotype.Controller;
@Controller
public class LoginController {
}
- 使用getbean方法取到创建的新类
- 可以使用字符串的格式
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
LoginController loginController = (LoginController) context.getBean("loginController");
System.out.println(loginController);
//关闭容器
((ClassPathXmlApplicationContext)context).close();
}
要注意的是getbean中的参数是需要有规范的,
第一个字母为大写,后面为小写,则需要第一个字母小写,如Login,需要变为login
前三个字母为大写,则不需要改变,如UMLlala,不用改变
ps:如果不确定需要改的格式,则可以用这种方式来看需要改的格式
System.out.println(Introspector.decapitalize("LoginController"));
- 参数也可以用类的方式
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
LoginController loginController = context.getBean(LoginController.class);
System.out.println(loginController);
//关闭容器
((ClassPathXmlApplicationContext)context).close();
}
同样的,都是可以得到该类的
总结 Spring 创建流程
- 创建一个 maven
- 创建一个启动类,创建 ApplicationContent 对象,设置一个 XML
- XML 规定了依赖主入对象的根路径
- 依赖注入
a)Controller —— 前端业务交互层【参数效验】
b)Service —— 业务处理的中间层【业务处理】
c)Reoisitory —— 数据持久层
d)Component —— 通用对象工具类 - 得到 bean 对象
a)注解:@Autowrited、@Resource
b)ApplicationContent. getBean()
【getBean(“类名”) —— 首字母大写,对应类名应该是首字母小写;如果首字母和第二个字母都是大写,那么对应类名不改变。“Abc” -> “abc”,“ABC” -> “ABC”】
【getBean(类型) 得到bean。getBean(Login.class)】
以上是关于初识Spring(IOC,DI,创建流程)的主要内容,如果未能解决你的问题,请参考以下文章