spring bean注解
1、概述
本文主要讨论spring bean的一些常用注解定义不同的bean。
我们一般使用两种方式在spring 容器中定义spring bean。
- 使用xml配置定义
- 使用@Bean注解定义
- 使用org.springframework.stereotype包下面的一个注解
- 使用包扫描
2、包扫描
spring 可以使用动态包扫描注册spring bean。
@ComponentScan
配置我们需要扫描的包的路径,将带有@Controller
、@Service
、@Component
、@Repository
。@ComponentScan
等注解的类自动注册为spring bean。注解里面的值可以是value
也可以是basePackages
如下:
@ComponentScan(value = "com.pengchao")
@Configuration
public class PackageScanConfig {
}
或者
@ComponentScan(basePackages = "com.pengchao")
@Configuration
public class PackageScanConfig {
}
我们也可以指定类名使用basePackageClasses
参数
@ComponentScan(basePackageClasses = com.pengchao.PackageScanConfig.class)
@Configuration
public class PackageScanConfig {
}
也可以使用多个@ComponentScan
@ComponentScan(basePackages = "com.pengchao")
@ComponentScan(basePackageClasses = com.pengchao.PackageScanConfig.class)
@Configuration
public class PackageScanConfig {
}
或者
@ComponentScans({
@ComponentScan(basePackageClasses = com.pengchao.PackageScanConfig.class),
@ComponentScan(basePackages = "com.pengchao")
})
@Configuration
public class PackageScanConfig {
}
3、@Component
@Component
是使用在类上的注解。包扫描时,spring框架会动态扫描含有@Component
的类注册为spring bean。
@Component
public class PengchaoComponent {
}
这些bean的name为:类名首字母小写,如pengchaoComponent。
我们也可以通过value
来指定bean的name。
@Repository
,@Service
,@Configuration
, 及@Controller
都包含元注解@Component
。包扫描是都会自动将含有这些注解的类注册为spring bean。
4、@Repository
@Repository
主要用户数据库访问层。
5、@Service
@Service
主要用于业务逻辑层。
6、@Controller
@Controller
是类级别的注解,在spring MVC中声明该类为controller