Spring5 简介与IOC核心

Spring5 简介与IOC核心

1、Spring是一款轻量级的开源javaEE框架

2、Spring的作用:解决企业应用开发的复杂性

3、Spring的核心:IOC和Aop

(1)IOC: 将耦合度降到最低

一、控制反转,把创建对象和对象之间的调用过程交给Spring管理

使用IOC的目的:为了耦合度降低

入门案例:如5、(1)所示

二、底层原理

xml解析、工厂模式、反射

三、使用过程

第一步:创建XML文件,配置创建的对象

第二步:创建工厂设计模式类

class User{

public static User getUser(){

String userValue = class属性值;//1.xml解析获取

Class clazz = Class.forName(userValue);

return (UserDao)clazz.newInstance();

四、IOC接口

1.IOC的思想要基于IOC容器完成。IOC容器底层就是工厂

2.Spring提供了两种容器的实现方式:(两个接口)

(1)BeanFactory:IOC容器的基本实现,是Spring内部使用的接口,一般不提供给开发人员使用

特点:加载配置文件的时候不会创建对象,只会在获取(使用)对象的时候进行创建

(2)ApplicationContext:BeanFactory的子接口,提供更多更强大的接口,一般由开发人员使用

特点:加载配置文件的时候就会把配置文件的对象进行创建

主要实现类:

1、FileSystemXmlApplicationContext 在盘目录下的XML文件

2、ClassPathXmlApplicationContext 在src下的XML文件

(2)Aop:面向切面,不修改源代码进行功能增强

4、Spring的特点:

(1)方便解耦,简化开发

(2)Aop编程支持

(3)方便程序测试

(4)方便和其他框架进行整合

(5)方便进行事务的操作

(6)降低API开发难度

5、Spring的使用:

(1)对象的创建:

在Spring框架中创建对象是使用配置文件。

如: 已经创建了类User 往常使用User user = new User(); //创建类的对象

现在是在src下创建Spring框架XML配置文件 使用

(2)IOC的具体操作:

Bean管理:由Spring创建对象 由Spring注入属性

Bean管理操作的基本实现方式:

1.基于XML配置文件方式实现

基于XML配置文件实现创建对象

基于XML配置文件实现属性注入

(1)DI:依赖注入,即注入属性

第一种方式 使用set方法进行注入

//设置空值

//设置空值

外部连接

内部连接

级联赋值

数组赋值
123            abc                                    123            abc                                                                a
在数组中注入对象
提取list注入
第二种方式 使用有参构造的方式进行注入

IOC操作 Bean 管理( FactoryBean)

1、Spring有两种类型bean,一种普通bean,另外一种工厂bean(FactoryBean)
2、普通bean:在配置文件中定义bean类型就是返回类型
3、工厂bean:在配置文件定义bean类型可以和返回类型不一样
第一步 创建类,让这个类作为工厂bean,实现接口 FactoryBean
第二步 实现接口里面的方法,在实现的方法中定义返回的bean类型

IOC操作 Bean 管理( bean 作用域)
1、在Spring里面,设置创建bean实例是单实例还是多实例
2、在Spring里面,默认情况下,bean是单实例对象

3、如何设置单实例还是多实例
(1)在spring配置文件bean标签里面有属性(scope)用于设置单实例还是多实例
(2)scope属性值
第一个值 默认值,singleton,表示是单实例对象
第二个值 prototype,表示是多实例对象

(3)singleton和prototype区别
第一 singleton单实例,prototype多实例
第二 设置scope值是singleton时候,加载spring配置文件时候就会创建单实例对象
设置scope值是prototype时候,不是在加载spring配置文件时候创建 对象,在调用getBean方法时候创建多实例对象

IOC
操作 Bean 管理( bean 生命周期)
1、生命周期
(1)从对象创建到对象销毁的过程
2、bean生命周期
(1)通过构造器创建bean实例(无参数构造)
(2)为bean的属性设置值和对其他bean引用(调用set方法)
(3)调用bean的初始化的方法(需要进行配置初始化的方法)
(4)bean可以使用了(对象获取到了)
(5)当容器关闭时候,调用bean的销毁的方法(需要进行配置销毁的方法)

3、bean的后置处理器,bean生命周期有七步
(1)通过构造器创建bean实例(无参数构造)
(2)为bean的属性设置值和对其他bean引用(调用set方法) (3)把bean实例传递bean后置处理器的方法postProcessBeforeInitialization
(4)调用bean的初始化的方法(需要进行配置初始化的方法)
(5)把bean实例传递bean后置处理器的方法 postProcessAfterInitialization
(6)bean可以使用了(对象获取到了)
(7)当容器关闭时候,调用bean的销毁的方法(需要进行配置销毁的方法)

IOC操作 Bean 管理 外部属性文件
1、直接配置数据库信息
(1)配置德鲁伊连接池
(2)引入德鲁伊连接池依赖jar包

2、引入外部属性文件配置数据库连接池
(1)创建外部属性文件,properties格式文件,写数据库信息

driverClass=com.mysql.jdbc.Driverurl=jdbc://localhost:3306/booksuserName=rootpassword=1234

(2)把外部properties属性文件引入到spring配置文件中
* 引入context名称空间

2.基于注解方式实现

IOC

操作 Bean 管理 基于注解方式
1、什么是注解
(1)注解是代码特殊标记,格式:@注解名称(属性名称=属性值, 属性名称=属性值..)
(2)使用注解,注解作用在类上面,方法上面,属性上面
(3)使用注解目的:简化xml配置
2、Spring针对Bean管理中创建对象提供注解
(1)@Component

(2)@Service

(3)@Controller

(4)@Repository
* 上面四个注解功能是一样的,都可以用来创建bean实例
3、基于注解方式实现对象创建
第一步 引入依赖
第二步 开启组件扫描

第三步 创建类,在类上面添加创建对象注解 //在注解里面value属性值可以省略不写, //默认值是类名称,首字母小写 //UserService — userService

@Component(value = “userService”) //

public class UserService { public void add() { System.out.println(“service add…….”); } }

4、开启组件扫描细节配置

5、基于注解方式实现属性注入
(1)@Autowired:根据属性类型进行自动装配
第一步 把service和dao对象创建,在service和dao类添加创建对象注解
第二步 在service注入dao对象,在service类添加dao类型属性,在属性上面使用注解

@Service

public class UserService {

//定义dao类型属性

//不需要添加set方法

//添加注入属性注解

@Autowired

private UserDao userDao;

(2)@Qualifier:根据名称进行注入
这个@Qualifier注解的使用,和上面@Autowired一起使用 //定义dao类型属性 //不需要添加set方法
//添加注入属性注解 @Autowired //根据类型进行注入 @Qualifier(value = “userDaoImpl1”) //根据名称进行注入 private UserDao userDao;

(3)@Resource:可以根据类型注入,可以根据名称注入 //@Resource //根据类型进行注入 @Resource(name = “userDaoImpl1”) //根据名称进行注入 private UserDao userDao;
(4)@Value:注入普通类型属性 @Value(value = “abc”) private String name;

6、完全注解开发

(1)创建配置类,替代xml配置文件 @Configuration //作为配置类,替代xml配置文件 @ComponentScan(basePackages = {“com.atguigu”}) public class SpringConfig { }

(2)编写测试类 @Test public void testService2() { //加载配置类 ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class); UserService userService = context.getBean(“userService”, UserService.class); System.out.println(userService); userService.add(); }

Original: https://www.cnblogs.com/wuzkkk/p/15913360.html
Author: 在厂的上进者
Title: Spring5 简介与IOC核心

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/579690/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球