@Component用于修饰SpringBoot中的组件,会被组件扫描并生成实例化对象。@Controller、@Service、@Repository都是特殊的组件注解。
@Repository用于修饰dao层的组件,dao层组件专注于系统数据的处理,例如数据库中的数据,同样会被组件扫描并生成实例化对象。
@Service用于修饰service层的组件,service层组件专注于系统业务逻辑的处理,同样会被组件扫描并生成实例化对象。
@Controller用于修饰MVC中controller层的组件,SpringBoot中的组件扫描功能会识别到该注解,并为修饰的类实例化对象,通常与@RequestMapping联用,当SpringMVC获取到请求时会转发到指定路径的方法进行处理。
@PostConstruct用于修饰方法,当对象实例被创建并且依赖注入完成后执行,可用于对象实例的初始化操作。
@PreDestroy用于修饰方法,当对象实例将被Spring容器移除时执行,可用于对象实例持有资源的释放。
@Scope用于声明一个SpringBean实例的作用域,作用域的范围有以下几种:
singleton:单例模式,在Spring容器中该实例唯一,Spring默认的实例模式。
prototype:原型模式,每次使用实例都将重新创建。
request:在同一请求中使用相同的实例,不同请求重新创建。
session:在同一会话中使用相同的实例,不同会话重新创建。
@Scope("singleton")/@Scope(value= ConfigurableBeanFactory.SCOPE_SINGLETON)
@Scope("prototype")/@Scope(value= ConfigurableBeanFactory.SCOPE_PROTOTYPE)
@Autowired会根据对象的类型自动注入依赖对象,默认要求注入对象实例必须存在,可以配置required=false来注入不一定存在的对象。
@Qualifier当同一个对象有多个实例可以注入时,使用@Autowired注解无法进行注入,这时可以使用@Qualifier注解指定实例的名称进行精确注入。
@Resource默认会根据对象的名称自动注入依赖对象,如果想要根据类型进行注入,可以设置属性为type = AdminService.class