JavaWeb Bean\XML\Ananaotation(注解)

Bean

Bean = 被 Spring IoC 容器自动创建、统一管理的 Java 对象 普通对象:自己手动 new Xxx() 创建,自己管理生命周期; Bean:不用你 new,Spring 容器根据 xml / 注解帮你创建、存起来、自动注入依赖。

Bean 能干什么(容器如何管理)

  1. 自动实例化:Spring 帮你 new 对象;
  2. 统一存入容器:存到单例池,全局只用一个对象;
  3. 自动注入依赖 :配合 <property> / @Autowired 自动装配;
  4. 管控生命周期:对象初始化、销毁由容器统一处理。

XML

XML = Extensible Markup Language 可扩展标记语言

本质:一种结构化文本格式,用成对标签存储、描述信息,人能看懂,程序也能解析读取。

例:

这份 XML 文件存储了一组用户数据: 用户编号:1,用户名:小明。

Spring中使用XML

告诉 Spring IoC 容器: 去 Demo3 包下找到 UserService 这个类,自动实例化创建一个对象,存入容器;并且给这个对象起唯一标识 userService,后续可以通过这个标识取出对象。

Spring beans.xml 关联

两者语法规则完全相同:

  1. 第一行都要有 xml 声明头;
  2. 外层有唯一根标签(beans.xml 根标签是<beans>,这个文件根标签是<users>);
  3. 嵌套自定义标签存储数据 / 配置; 区别:
  • 这份 xml 用来存业务数据
  • beans.xml 用来给 Spring 框架写配置

一、什么是注解

注解就是写在类、方法、变量上方,以 @ 开头的标记,是给 Java 程序、框架看的

「特殊备注指令」。

  • 普通注释 //:只给程序员看,程序运行直接忽略;
  • 注解 @XXX:程序 / 框架运行时能读取,会执行对应的逻辑。

二、注解的作用

  1. 给框架传递指令 (你现在学 Spring 最常用) @Service:告诉 Spring,把这个类创建成 Bean 放进容器 @Autowired:告诉 Spring,自动注入对应依赖对象 @Component:通用 Bean 注册标记
  2. 编译校验 @Override:标记重写方法,编译器检查你是否写错父类方法名
  3. 生成代码、文档 @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 等框架下达创建对象、注入依赖等指令。