这个注解包含四种。
- @Component
- @Repository
- @Service
- @Controller
介绍
@Service
, @Controller
, @Repository
= {@Component
+ 一些特定的功能}。这个就意味着这些注解在部分功能上是一样的。
注解 | 含义 |
---|---|
@Component | 最普通的组件,可以被注入到spring容器进行管理 |
@Repository | 作用于持久层 |
@Service | 作用于业务逻辑层 |
@Controller | 作用于表现层(spring-mvc的注解) |
如果你不知道要在项目的业务层采用@Service
还是@Component
注解。那么,@Service
是一个更好的选择。
添加这些注解的作用是,被这些注解修饰的类就会被Spring
扫描到并注入到Spring
的bean
容器中。
目前,我对容器的理解并不深,所以,在这里只是简单的说一下我的看法。在一般的 java
程序中,一个类我们可能会创建多个实例,实际上是很没有必要的,所以,有的时候,我们为了不创建那么多的实例,会使用单例设计模式。而 spring IOC
「spring 容器」就是管理类实例的容器。其具体作用,体现在,使用上述的注解修饰的类,会被 spring
扫描,并且自动在容器中注入一个唯一实例,这样就不需要使用 new
来创建实例了。
当然,容器中的实例可以取出来,使用注解 @Autowired
。
和该四种注解相似的注解,还有 @Bean
。
有两个注解是不能被其他注解所互换的:
@Controller
注解的bean
会被spring-mvc
框架所使用。@Repository
会被作为持久层操作(数据库)的bean
来使用
如果想使用自定义的组件注解,那么只要在你定义的新注解中加上@Component
即可:
1 |
|
这样,所有被@ScheduleJob
注解的类就都可以注入到spring
容器来进行管理。我们所需要做的,就是写一些新的代码来处理这个自定义注解(译者注:可以用反射的方法),进而执行我们想要执行的工作。
目前,这四种注解只是简单的说一下,日后会继续更新。