深入探索Spring注解

一、Spring 2.5 注解概述

1. 注入类

  • @Component:定义通用Bean的注解,适合无法明确归属层次的Bean。

    • 相当于XML配置中的 <bean id="" class=""></bean>
    • 示例:
      @Component
      class User {}
      
  • @Service:专用于数据访问层的Bean。

  • @Repository:用于业务层的Bean。

  • @Controller:针对控制层的Bean。

注:@Service@Repository@Controller 功能和语法相同。

2. 注入基本数据

  • @Value:注入基本属性数据。

    • 类似于XML中的 <property>,可用于成员变量或set方法。

    • 示例:

      @Value("数据内容")
      private String data;
      
    • XML配置:

      <context:property-placeholder location="classpath:jdbc.properties"/>
      
  • @Autowired:通过set方法进行类型装配,set方法可省略。

    • 语法:@Autowired(required = true)

    • 示例:

      @Autowired
      private IAccountService accountService;
      
    • 注意事项:

      1. 默认按类型装配。
      2. 当有多个相同类型Bean时,自动切换为名称装配,若无则报错。

3. 其他注解

  • @Primary:指明首选的Bean。
    示例:

    @Service
    @Primary
    public class MainServiceImpl implements MainService {
        // ...
    }
    
  • @Qualifier:指定具体注入的Bean。
    示例:

    @Autowired
    @Qualifier("mainService")
    private MainService mainService;
    
  • @Scope:定义Bean的作用域(如singleton和prototype)。
    示例:

    @Service
    @Scope("prototype")
    public class PrototypeService {
        // ...
    }
    
  • @PostConstruct:依赖注入完成后调用,用于初始化。
    示例:

    @PostConstruct
    public void initialize() {
        System.out.println("Initializing...");
    }
    
  • @PreDestroy:对象销毁前调用,用于清理工作。
    示例:

    @PreDestroy
    public void cleanup() {
        System.out.println("Cleaning up...");
    }
    

二、Spring 3.0 注解新特性

1. @Configuration

表示类为配置类,替代XML配置文件。
示例:

@Configuration
public class AppConfig {
    @Bean
    public MyService myService() {
        return new MyServiceImpl();
    }
}

2. @ComponentScan

扫描指定包及其子包下的所有组件。
示例:

@Configuration
@ComponentScan(basePackages = {"com.example.service", "com.example.repository"})
public class AppConfig {
    // ...
}

3. @PropertySource

指定外部属性文件位置,加载配置属性。
示例:

@Configuration
@PropertySource("classpath:application.properties")
public class AppConfig {
    @Autowired
    private Environment env;

    @Value("${my.property}")
    private String myProperty;
}

4. @Bean

在配置类中定义Bean,替代XML中的 <bean>
示例:

@Configuration
public class AppConfig {
    @Bean
    public Date myDate() {
        return new Date();
    }
}

5. @Import

导入其他配置类或静态工厂类。
示例:

@Configuration
@Import(OtherConfig.class)
public class AppConfig {
}

这些注解显著简化了Spring的配置方式,提高了代码的可读性与可维护性。灵活运用这些注解,能够更高效地构建和管理Spring应用程序,让开发过程变得更为顺畅。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值