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


相关文章
|
1月前
|
XML Java 测试技术
Spring IOC—基于注解配置和管理Bean 万字详解(通俗易懂)
Spring 第三节 IOC——基于注解配置和管理Bean 万字详解!
133 26
|
2月前
|
缓存 Java 数据库
SpringBoot缓存注解使用
Spring Boot 提供了一套方便的缓存注解,用于简化缓存管理。通过 `@Cacheable`、`@CachePut`、`@CacheEvict` 和 `@Caching` 等注解,开发者可以轻松地实现方法级别的缓存操作,从而提升应用的性能和响应速度。合理使用这些注解可以大大减少数据库的访问频率,优化系统性能。
210 89
|
3月前
|
Java Spring
【Spring】方法注解@Bean,配置类扫描路径
@Bean方法注解,如何在同一个类下面定义多个Bean对象,配置扫描路径
196 73
|
1月前
|
监控 Java Spring
SpringBoot:SpringBoot通过注解监测Controller接口
本文详细介绍了如何通过Spring Boot注解监测Controller接口,包括自定义注解、AOP切面的创建和使用以及具体的示例代码。通过这种方式,可以方便地在Controller方法执行前后添加日志记录、性能监控和异常处理逻辑,而无需修改方法本身的代码。这种方法不仅提高了代码的可维护性,还增强了系统的监控能力。希望本文能帮助您更好地理解和应用Spring Boot中的注解监测技术。
67 16
|
3月前
|
Java Spring 容器
【SpringFramework】Spring IoC-基于注解的实现
本文主要记录基于Spring注解实现IoC容器和DI相关知识。
70 21
|
3月前
|
存储 Java Spring
【Spring】获取Bean对象需要哪些注解
@Conntroller,@Service,@Repository,@Component,@Configuration,关于Bean对象的五个常用注解
|
10月前
|
Java API Spring
Spring容器如何使用一个注解来指定一个类型为配置类型
Spring容器如何使用一个注解来指定一个类型为配置类型
97 0
|
5月前
|
XML Java 数据格式
手动开发-简单的Spring基于注解配置的程序--源码解析
手动开发-简单的Spring基于注解配置的程序--源码解析
76 0
|
9月前
|
XML Java 数据格式
Spring5系列学习文章分享---第三篇(AOP概念+原理+动态代理+术语+Aspect+操作案例(注解与配置方式))
Spring5系列学习文章分享---第三篇(AOP概念+原理+动态代理+术语+Aspect+操作案例(注解与配置方式))
85 0
|
9月前
|
Java Spring
spring基于注解配置数据源
spring基于注解配置数据源