Spring 中简单存取 Bean 的相关注解(一)

简介: Spring 中简单存取 Bean 的相关注解

前言


之前我们存储获取 Bean 的操作很繁琐,需要将 Bean 放入 xml 文件中,获取 Bean 还必须得获取上下文,就很麻烦。


其实这些都可以简化,在 Spring 中想要更简单的存储和读取对象,核⼼是使⽤注解。


想要将对象存储在 Spring 中,有两种注解类型可以实现:


  1. 类注解:@Controller、@Service、@Repository、@Component、@Configuration。
  2. ⽅法注解:@Bean


获取对象的实现⽅法有以下 3 种:


  1. 属性注⼊
  2. 构造⽅法注⼊
  3. Setter 注⼊


存储 Bean 对象


五大类注解


五大类注解有:

@Controller(控制器)校验参数的合法性,相当于安检系统

@Service(服务)业务组装,相当于客服中心

@Repository(数据持久层)实际业务处理,就是实际办理的业务

@Component(组件)工具类层,基础工具

@Configuration(配置层)配置


首先,我们得配置一下 xml 文件:

3ec5ca274471439fb1155ab44c25efb3.png

注意:使用类注解存储 bean,和使用 xml 存储 bean 是可以混用的。


User 类:


//使用类注解
@Controller
public class User {
    public void sayHi(String name) {
        System.out.println("hello " + name);
    }
}


public class App {
    public static void main(String[] args) {
        //得到 spring 上下文
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
        //得到 bean 对象
        User user = (User) context.getBean("user");
        user.sayHi("张三");
    }
}

53402be30ecb47d18cd06628a0bdf380.png


关于 getBean 后面应该填什么?

对于不同的类名有不同的写法,如果首字母大写,第二个字母小写,那么 bean 的名称就是类名首字母小写;如果不满足首字母大写第二字母小写,则使用原类名。


当然了,我们也可以在类注解后面设置 id,通过 id 来得到 bean 对象。


//id 可以随便取, 两种方式都可
//@Controller(value = "666")
@Controller("666")
public class User {
    public void sayHi(String name) {
        System.out.println("hello " + name);
    }
}


public class App {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
        User user = (User) context.getBean("666");
        user.sayHi("张三");
    }
}


来看看五大类注解间的关系:f9588d53f10043558b667a8676810853.png367435b0ed054e4e9c7fd8475049cf4a.png

4770ade3796f405caf1af599a673b5e6.png

4debcc8fe8a349b893117d6cb31c7cec.png


这些注解⾥⾯都有⼀个注解 @Component,说明它们本身就是属于 @Component 的“⼦类”。

所以它们在使用上都差不多,那为什么还要分出 5 大类呢?

直接一个 @Component 就可以 存储 bean 对象了,还要分这么多有什么用呢?


其实是让程序员看到类注解之后,就能直接了解当前类的⽤途,比如我们看到一辆车的车牌号就知道它的归属地是哪,这个也一样。


程序的⼯程分层,调⽤流程如下:


53208aa7c8e44e2095fad21401ebd597.png


相关文章
|
6天前
|
安全 Java Spring
Spring框架中的单例Bean是线程安全的吗?
Spring框架中的单例Bean是线程安全的吗?
10 1
|
5天前
|
Java
Springboot 使用自定义注解结合AOP方式校验接口参数
Springboot 使用自定义注解结合AOP方式校验接口参数
Springboot 使用自定义注解结合AOP方式校验接口参数
|
6天前
|
XML 前端开发 Java
【JavaEE】深入了解Spring中Bean的可见范围(作用域)以及前世今生(生命周期)
【JavaEE】深入了解Spring中Bean的可见范围(作用域)以及前世今生(生命周期)
10 0
|
6天前
|
存储 缓存 Java
【JavaEE】Spring中注解的方式去获取Bean对象
【JavaEE】Spring中注解的方式去获取Bean对象
3 0
|
6天前
|
存储 Java 对象存储
【JavaEE】Spring中注解的方式去存储Bean对象
【JavaEE】Spring中注解的方式去存储Bean对象
9 0
|
6天前
|
存储 Java 对象存储
【JavaEE】DI与DL的介绍-Spring项目的创建-Bean对象的存储与获取
【JavaEE】DI与DL的介绍-Spring项目的创建-Bean对象的存储与获取
9 0
|
11月前
|
XML Java 数据库连接
【Spring学习笔记 五】Spring注解及Java类配置开发
【Spring学习笔记 五】Spring注解及Java类配置开发
71 0
|
XML Java 数据格式
spring基于注解的配置
**不管是 XML 还是注解,它们都是表达 Bean 定义的载体,其实质都是为 Spring 容器提供 Bean 定义的信息,在表现形式上都是将 XML 定义的内容通过类注解进****行描述。**Spring 从2.0开始就引入了基于注解的配置方式,在2.5时得到了完善,在4.0时进一步增强。
|
XML Java 数据格式
Spring(七)之基于注解配置
基于注解的配置 从 Spring 2.5 开始就可以使用注解来配置依赖注入。而不是采用 XML 来描述一个 bean 连线,你可以使用相关类,方法或字段声明的注解,将 bean 配置移动到组件类本身。 在 XML 注入之前进行注解注入,因此后者的配置将通过两种方式的属性连线被前者重写。
741 0
|
前端开发 Java 数据库连接
spring(四)之基于注解(Annotation-based)的配置
注解 Autowired 可以用于传统的setter 方法 用于以属性为参数多个参数的方法 用于构造器与字段 ApplicationContext - 用于集合类型 Maps 缺省情况 Qualifier注解 创建您自定义的限定器注解 定义一个注解时提供Qual...
1288 0