Bean
Bean = 被 Spring IoC 容器自动创建、统一管理的 Java 对象普通对象:自己手动new Xxx()创建,自己管理生命周期; Bean:不用你 new,Spring 容器根据 xml / 注解帮你创建、存起来、自动注入依赖。
Bean 能干什么(容器如何管理)
- 自动实例化:Spring 帮你 new 对象;
- 统一存入容器:存到单例池,全局只用一个对象;
- 自动注入依赖:配合
<property>/@Autowired自动装配; - 管控生命周期:对象初始化、销毁由容器统一处理。
XML
XML = Extensible Markup Language 可扩展标记语言
本质:一种结构化文本格式,用成对标签存储、描述信息,人能看懂,程序也能解析读取。
例:
这份 XML 文件存储了一组用户数据: 用户编号:1,用户名:小明。
Spring中使用XML
告诉 Spring IoC 容器: 去Demo3包下找到UserService这个类,自动实例化创建一个对象,存入容器;并且给这个对象起唯一标识userService,后续可以通过这个标识取出对象。
Spring beans.xml 关联
两者语法规则完全相同:
- 第一行都要有 xml 声明头;
- 外层有唯一根标签(beans.xml 根标签是
<beans>,这个文件根标签是<users>); - 嵌套自定义标签存储数据 / 配置; 区别:
- 这份 xml 用来存业务数据;
- beans.xml 用来给 Spring 框架写配置。
一、什么是注解
注解就是写在类、方法、变量上方,以@开头的标记,是给 Java 程序、框架看的
「特殊备注指令」。
- 普通注释
//:只给程序员看,程序运行直接忽略; - 注解
@XXX:程序 / 框架运行时能读取,会执行对应的逻辑。
二、注解的作用
- 给框架传递指令(你现在学 Spring 最常用)
@Service:告诉 Spring,把这个类创建成 Bean 放进容器@Autowired:告诉 Spring,自动注入对应依赖对象@Component:通用 Bean 注册标记 - 编译校验
@Override:标记重写方法,编译器检查你是否写错父类方法名 - 生成代码、文档
@SuppressWarnings:压制警告;@Deprecated:标记方法过时废弃
三、三大类注解
1.Jdk内置基础注解
@override:重写父类/接口方法
@Deprecated:方法/类已过时,一般不用
@Suppersswarnings("all"):消除代码警告
2.元注释
定义注解时使用,如:@Targer、@Retention
3.框架自定义注解(Spring、MyBatis大量使用)
@Component/@Service/@Repository/@Controller:注册Baen
@Autowired:依赖注入
@Configuration/@Bean:配置类、注册第三方Bean
@RequestMapping:Web接口路径绑定
例:
xml写法
<bean id="userService" class="Demo3.UserService"/>
给当前这个OrderService对象,调用setUserService()方法,把容器中 id 为userService的 Bean 注入赋值给成员变量userService
注解配置
@Service
public class UserService {}
两者效果完全一样,都是告诉 Spring 创建这个类的 Bean,注解省去大量 XML 配置文件,SpringBoot 主推注解开发。
依赖注入:
xml写法:
<property name="userService" ref="userService"/>
注解写法:
@Autowired private UserService userService;
框架启动时会扫描全部类,读取类上的注解标记,根据标记执行对应逻辑: 看到@Service就创建 Bean,看到@Autowired就自动装配依赖,全程不用手动写 XML 配置
一句话总结
注解是@开头的程序可读标记,代替老式 XML 配置,用来给 Spring 等框架下达创建对象、注入依赖等指令。