当前位置: 首页 > news >正文

Sring框架-IOC篇

一.什么是Spring框架

Spring是一个轻量级的,IOC和AOP的一站式JAVA开发框架,是为了简化企业级应用开发而生的

1.IOC(Inversion of Control)

反转控制,是由Spring 管理对象而非传统实现中由程序代码直接操控

2.AOP(Aspect Oriented Programming)

面向切面编程,AOP是一种编程思想,是面向对象编程的一种补充

3.Spring体系结构

二.Spring的搭建

1.创建一个Maven项目

2.在pom.xml文件中导入Spring核心依赖Spring context

<!-- spring-context -->
<dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.2.RELEASE</version>
</dependency>

3.编写spring配置文件

首先在resources目录下创建spring配置文件application.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance" xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="user" class="com.ff.spring.model.User"> </bean>
</beans

三.IOC(控制反转)

先创建model包,dao包,service包.

创建实体类User

public class User {private int no;private String name;public int getNo() {return no;}public void setNo(int no) {this.no = no;}public String getName() {return name;}public void setName(String name) {this.name = name;}
}

UserDao

public class UserDao {public void save(){System.out.println("Hello world");}
}

UserService

public class UserService {User user;UserDao userDao;public void save(){userDao.save();}public User getUser() {return user;}public void setUser(User user) {this.user = user;}public UserDao getUserDao() {return userDao;}public void setUserDao(UserDao userDao) {this.userDao = userDao;}
}

1.基于xml配置方式

在spring中配置我们的类,将我们的类交给spring管理(哪个类需要让Spring管理,就将该类配置到Spring中)

<bean id="属性名" class="类的地址(eg:springpro.model.User)"></bean>

我们写一个测试类,测试使用Spring是否可以获取User对象

//启动spring框架,读取配置文件,最原始的写法,
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("application1.xml");
User user = applicationContext.getBean("user",User.class);
System.out.println(user1);

如果我们同时获取两个User对象并打印出来,可以发现两个User对象的地址相同,这说明Spring框架实际上只给我们生成了一个User对象,这是因为bean标签中有一个属性Scope

Spring生成对象的作用域:

        Scope属性值为singleton则是单列模式(Spring只生成一个唯一的对象)

        Scope属性值为prototype则是原型(每次getBean()都会生成一个新的对象)

        scope的默认值是singleton

如果一个类(UserService)中调用了其他类,在从Spring中获取前我们需要进行在xml文件中配置.

为对象赋值的方式有两种:

1>set方法赋值

    <bean id="userService" class="springpro.service.UserService"><property name="userDao" ref="userDao"> </property><property name="user" ref="user"> </property></bean>

2>构造器赋值

<bean id="userService" class="springpro.service.UserService"><!--创建对象,并为属性注入值--><constructor-arg name="userDao" ref="userDao"></constructor-arg><constructor-arg name="user" ref="user"></constructor-arg>
</bean>

使用set方法赋值时,必须有对应的set方法

使用构造器赋值时,必须有对应的构造方法

配置完之后,生成对象时Spring框架会自动为我们赋值

2.基于注解配置方式

1.首先开启注解扫描

在application.xml文件中添加

<!--配置spring对哪个包下的类进行扫描-->
<context:component-scan base-package="包名"></context:component-scan>

Spring就会对这个包下面所有的类进行扫描

2.为类添加注解标签

1>生成对象的注解

@Component,@Service,@Repository以上注解都可以实现创建对象功能,只是为了后续扩展功能,在不同的业务层使用不同的注解标记

@Scope用于控制生成对象作用域

2>属性注入的注解:

@Autowired,@Resource都可以让Spring给对象赋值,前提是注入的对象必须存在,如果对象不存在会报错

可以根据类名去spring框架中查找,也可以通过属性名去spring框架中查找

@Autowried,需要通过@Qualifier(value="属性名")注解去指定属性名

@Resource(name="属性名")

http://www.dtcms.com/a/338381.html

相关文章:

  • ​​Java核心知识体系与集合扩容机制深度解析​
  • JavaSE高级-02
  • JDBC的使用
  • 【Python】Python Socket 网络编程详解:从基础到实践​
  • Street Crafter 阅读笔记
  • IDEA创建项目
  • MYSQL中读提交的理解
  • MySQL新手教学
  • lesson41:MySQL数据库进阶实战:视图、函数与存储引擎全解析
  • springBoot启动报错问题汇总
  • OVS:ovn是如何支持组播的?
  • LwIP 核心流程总结
  • wishbone总线
  • thinkphp8:一、环境准备
  • c++26新功能—可观测检查点
  • torch.nn.Conv1d详解
  • C++最小生成树
  • 高等数学 8.5 曲面及其方程
  • Python打卡Day45 预训练模型
  • 【加密PMF】psk-pmk-ptk
  • 【168页PPT】IBM五粮液集团数字化转型项目实施方案建议书(附下载方式)
  • 块体不锈钢上的光栅耦合表面等离子体共振的复现
  • 九联科技UMA223-H低功耗蜂窝模组在物联网设备中的应用与价值分析
  • 信号上升时间Tr不为0的信号反射情况
  • 工具集成强化学习:AI数学推理能力的新跃迁
  • Milvus向量数据库安装步骤
  • DRG/DIP支付改革如何通过大数据分析优化病种分组和权重调整?
  • 知识蒸馏 - 各类概率分布
  • CPP异常
  • 公司无公网IP,如何将内网服务,给外面异地连接使用?远程办公可通过什么访问?