一、用于创建对象的
1)@Component:将资源交给Spring进行管理,相当于在xml中配置了一个bean。该注解一般用于即不是表现层又不是业务层更不是持久层的类上面。
2)@Controller:标识该类为表现层
3)@Service:标识该类为业务层
4)@Repository:标识该类为持久层
二、用于注入数据的
1)@Autowired:自动按照类型注入。当使用注解注入属性时,set 方法可以省略。它只能注入其他 bean 类型。当有多个 类型匹配时,使用要注入的对象变量名称作为 bean 的 id,在 spring 容器查找,找到了也可以注入成功。找不到 就报错。
2)@Qualifier:在自动按照类型注入的基础之上,再按照 Bean 的 id 注入。它在给字段注入时不能独立使用,必须和 @Autowire 一起使用;但是给方法参数注入时,可以独立使用。
3)@Resource:直接按照 Bean 的 id 注入,如果根据id无法找到则根据类型进行查找。
4)@Value:注入基本数据类型和 String 类型数据的
三、用于改变作用范围的
1)@Scope:指定 bean 的作用范围(singleton 、prototype、 request 、session、globalsession)。
四、和生命周期相关的
1)@PostConstruct:用于指定初始化方法。
2)@PreDestroy:用于指定销毁方法。
五、新注解
1)@Configuration:用于指定当前类是一个 spring 配置类,当创建容器时会从该类上加载注解。获取容器时需要使用 AnnotationApplicationContext(有@Configuration 注解的类.class)。
2)@ComponentScan:用于指定 spring 在初始化容器时要扫描的包。作用和在 spring 的 xml 配置文件中的:
<context:component-scan base-package="com.demo"/>
是一样的。
3)@Bean:该注解只能写在方法上,表明使用此方法创建一个对象,并且放入 spring 容器。
4)@PropertySource:用于加载.properties 文件中的配置。例如我们配置数据源时,可以把连接数据库的信息写到 properties 配置文件中,就可以使用此注解指定 properties 配置文件的位置。
5)@Import:用于导入其他配置类,在引入其他配置类时,可以不用再写@Configuration 注解。当然,写上也没问 题。
//示例代码:
@Configuration
@ComponentScan(basePackages = "com.itheima.spring")
@Import({ JdbcConfig.class})
public class SpringConfiguration {
}
@Configuration
@PropertySource("classpath:jdbc.properties")
public class JdbcConfig{
}