Spring常用IOC注解说明

1.用于对象的注解-IOC相关注解

1.1组件注解

我们将用于被扫描创建对象的注解,统称为组件注解。

组件包括

@Component用于声明三层以外的组件注解

@Controller:用于声明表示层的组件注解
@Service:用于声明服务层的组件注解

@Repository:用于声明持久层的组件注解

组件注解的功能都是标识类为注解的组件类,启动Spring框架的程序时,声明将这些组件类注入到Spring容器里面。意味着,只要是加了这四个注解任何一个注解的类,在程序启动的时候,Spring就通过配置文件指定的路径将该路径下的所有带组件注解的类创建对象并且放在容器里面。

功能类似原来配置文件的标签

@Component("customerService")
public class CustomerService {
    public void save(){
        System.out.println("保存数据");
    }
}
等同于:
<bean id="customerService" class="com.sxt.service.CustomerService"/>

问题:那么,这四个注解交换使用会报错吗。如:持久层,我放@Service标记。
答:处理@Controller在SpringMVC里面有强制的要求,SpringMVC的表示层必须使用@Controller组件注解。其他情况,用乱了是不会报错的,不过我们必须不能用乱

1.2 @Scope用于设置对象的使用范围注解

Xml配置需要配置对象的作用范围
在这里插入图片描述
如果使用注解配置bean,那么bean的作用范围也需要使用注解配置
@Scope(“作用范围”)
singleton:
单例 ,在Spring IoC容器中仅存在一个Bean实例 (默认的scope)
prototype:
多例 ,每次从容器中调用Bean时,都返回一个新的实例,即每次调用getBean()时 ,相当于执行new XxxBean():
Spring常用IOC注解说明_第1张图片

request:
用于web开发,将Bean放入request范围 ,request.setAttribute(“xxx”) , 在同一个request 获得同一个Bean
session:
用于web开发,将Bean 放入Session范围,在同一个Session 获得同一个Bean

总结:在开发中主要使用 scope=“singleton”、 scope=“prototype”
对于MVC中的Action/Controller使用prototype类型,其他使用singleton

1.3@PostConstruct @PreDestroy初始化和销毁方法注解

在xml配置中可以配置对象的初始化方法和销毁方法`

 <bean id="customerService" class="com.sxt.service.CustomerService" init-method="init" destroy-method="destory"/>

如果使用注解配置bean,那么bean的初始化和销毁方法也需要使用注解配置
配置方法:
直接在初始化方法上打上@PostConstruct,在销毁方法上打@PreDestory

  @PostConstruct //相当于
    public void init(){
        System.out.println("init");
    }

    @PreDestroy//相当于
    public void destory(){
        System.out.println("destory");
    }

你可能感兴趣的:(Spring)