Spring 配置方案(注解的使用)

Spring 配置方案(注解的使用)

一、使用注解+xml配置文件

替换:

<bean id="" class="" init-method="" destroy-method="" scope="" autowire="">
    <property></property>
    <constructor-arg></constructor-arg>
</bean>

1、注入类

(1)@Component

1、含义

将注解所修饰的类,注入spring容器

2、位置

使用在类的前面

3、语法

@Component(value = “id”)

如果省略 value = “id” 默认注入的id为类的名称且首字母小写

4、注意

不可以单独使用

在xml中配合 使用

(2)@Repostory 注入数据访问层

(3)@Service 注入业务层

(5)@Controller 注入控制层

以上三个注解与 Component 注解语法一致,主要用在三层架构中

2、注入数据

(1)@Value()

1、含义

向属性注入基本类型与String

2、语法
  • @Value(“数据”) ----------> 直接把数据写死
  • @Value(“${key}”) ---------> 使用键值对进行传值,值需要在一个资源文件中获取
  • 在xml配置文件中加入以下标签,加载资源文件
<context:property-placeholder location="资源文件所在路径"></context:property-placeholder>
3、位置

属性

(2)Autowired

1、含义

通过“set”方法【set 方法可以省略】,按照==“类型”==自动装配,如果类型冲突,则按照“名称”转配,即属性名装配

2、位置

属性

3、注意
  1. 按类型装配如果冲突切换为名称装配
  2. 按类型装配如果冲突切换为名称装配,如果名称也没有则会抛异常 NoUniqueBeanDefinitionException
  3. 按类型装配没一个匹配 NoSuchBeanDefinitionException

说明:一般@Component(或@Repostory @Service @Controller )、Autowired 三个一起使用

  • @Component(或@Repostory @Service @Controller )负责声明需要加入spring容器的类,
  • 配合扫描器在xml中配合 使用,用于扫描整个包路径中需要加入spring容器的类,并将其加入spring容器
  • Autowired 在使用上述注解加入容器成功后,如果需要使用容器创建,则需要配合Autowired注解自动按类型装配,才可成功创建对象

3、其他注解

1、@Primary

  • 含义

在类型装配冲突下,此注解所修饰的类作为首选项

  • 位置

  • 注意

不能单独使用

2、@Qualifier

  • 含义

按照名称装配

  • 位置

属性

  • 注意

不能单独使用

3、@Resource

  • 含义

按照名称装配

  • 位置

属性

  • 注意

单独使用

4、@Scope

  • 含义

作用域 single

  • 位置

  • 注意

不能单独使用

  • 举例
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)

5、@PreDestroy

  • 含义

替换destory-method 销毁

  • 位置

方法

  • 注意

单独用

6、@PostConstruct

  • 含义

替换 init-method 初始化

  • 位置

方法

  • 注意

单独使用

二、注解+JavaConfig配置类

1、@Configuration

  • 含义:配置类
  • 注意:AnnotationConfigApplicationContext
  • 用在定义类之前,声明此类为配置类

2、@ComponentScan

  • 替换:
  • 相当于扫描器
  • 用在需要注入到spring容器中的类

3、@PropertySource()

  • 替换:
  • 加载资源文件

4、@Import()

  • 含义:导入其他配置类
  • 需要传入指定配置类的class对象
@Import(DataSourceConfig.class)

5、@Bean

  • 含义:注入类;方法返回值为class 方法名称为id
  • 位置:修饰方法
  • 注意:单独使用,无需扫描

你可能感兴趣的:(spring,java,后端)