Spring 常用注解@Configuration,@Bean,@Component,@Service,@Controller,@Repository,@Entity的区分与学习

学习了Spring这么久,有时候总是被各种注解弄混了头脑,今天写下此文记录一下这些常用注解的区别,文章中片段均有参考别人的博客,如有抄袭就不一一致歉了,写这个主要是为了学习且记录一下以便日后翻出来看看。

1. @Component

作用于类上,相当于一个基类,跟 @Bean 一样,可以托管到Spring容器进行管理。

2. @Service, @Controller , @Repository

作用于类上,={@Component + 一些特定的功能}。这些注解在部分功能上是一样的,但有一些细分(这不就是继承的理念吗):

	2.1 @Controller注解类:SpringMVC的理念,进行前端请求的处理,转发,重定向。包括调用Service层的方法。
	
	2.2 @Service注解类:处理业务逻辑 
	
	2.3 @Repository注解类:作为DAO对象(数据访问对象,Data Access Objects),这些类可以直接对数据库进行操作。

有这些分层操作的话,代码之间就实现了松耦合,代码之间的调用也清晰明朗,便于项目的管理; 假想一下,如果只用@Controller注解,那么所有的请求转发,业务处理,数据库操作代码都糅合在一个地方,那这样的代码该有多难拓展和维护!

3. @Entity注解

作用于类上,数据表对应到实体类的映射。

4. @Configuration

作用于类上,从Spring3.0始,@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法, 这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器。

5. @Bean

标注在方法上,返回某个实例的方法,这个实例就会交给Spring容器管理。 此注解其实就等价于spring的xml配置文件中的,作用为:注册bean对象。 @Bean一般是跟@Configuration一起用的相当于< beans >< bean >< /bean >< /beans >。

以上都是注册bean,那怎么使用bean呢?

其实java归根到底:面向对象的思想!万变不离其中。咱们想一下平时我们普通java项目想要用某个对象为我们做某些事的时候,是不是得new 一个对象出来,然后再调用其中的方法。那么Spring bean也是同理的,在同一个类内相互调用方法不用new 对象,在不同类中,就需要new 对象(静态类另说)。因此在不用类中需要调用某个bean时怎么调呢:

  1. @Autowired
    根据类的类型进行装配,也可以设定根据类的名字
  2. @Resource
    根据类的名字进行装配。

这两个区别我这里就不细说了,这里列出2个参考文章:
参考文章1: @Autowired 与@Resource的区别
参考文章2: @Autowired 与@Resource的区别

你可能感兴趣的:(Spring 常用注解@Configuration,@Bean,@Component,@Service,@Controller,@Repository,@Entity的区分与学习)