Spring注解开发

注解开发

  • 介绍:注解开发是spring的强项,实际开发过程中更多使用的是注解注入而非bean标签注入
  • xml和注解开发的对比:
    • xml可以适用任何场景 ,结构清晰,维护方便
    • 注解不是自己提供的类使用不了,开发简单方便
  • 建议使用xml和注解整合开发
    • xml管理Bean
    • 注解完成属性注入
    • 使用过程中, 可以不用扫描,扫描是为了类上的注解

原始注解

注解 说明
@Component 使用在类上用于实例化Bean
@Controller 使用在web控制层类上用于实例化Bean
@Service 使用在service层类上用于实例化Bean
@Repository 使用在dao层类上用于实例化Bean
@Autowired 使用在字段上用于根据类型依赖注入
@Qualifier 结合@Autowired一起使用用于根据名称进行依赖注入
@Resource 相当于@Autowired+@Qualifier,按照名称进行注入
@Value 注入普通属性
@Scope 标注Bean的作用范围,默认单例,注解加在类上
@PostConstruct 使用在方法上标注该方法是Bean的初始化方法
@PreDestroy 使用在方法上标注该方法是Bean的销毁方法

@Component - 定义Bean

  1. 设置扫描路径

    1. 在配置文件中启用context命名空间(前文有)

    2. 使用context:component-scan标签

      <context:component-scan base-package="路径"/>
      
    • 路径:用注解设置bean的类的范围
  2. 定义Bean

    • 在类前面使用@Component()注解,代替配置文件中的bean标签

    • 括号内填入bean的id

@Scope - 定义生命周期

  1. 在类前面使用 @Scope("prototype") 启用生命周期注解
    • @Scope("singleton") 取消使用生命周期注解
  2. 在方法上标注 @PostConstruct 表示 init 函数
  3. 在方式上标注 @PreDestroy 表示 destroy 函数

依赖注入

注解 说明
@Autowired 使用在字段上用于根据类型依赖注入
@Qualifier 结合@Autowired一起使用用于根据名称进行依赖注入
@Resource 相当于@Autowired+@Qualifier,按照名称进行注入
@Value 注入普通属性

注入普通属性

@Value("root")
private String userName;

纯注解开发

  • 从Spring3.0开始可以使用@Configuration定义配置类,可以替换xml配置文件
  • 原理:配置类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义对象,初始化Spring容器

@Configuration - 配置

  1. 创建配置类,

  2. 配置类前使用@Configuration注解

  3. 使用@ComponentScan()注解,括号内填入扫描路径

    • 可以填入数组,例如@ComponentScan({"com.ss","com.sss"})
  4. 如何加载配置类初始化容器

    ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);
    

@Bean - 第三方bean管理

  • 标注在某个返回实例的方法上,用于注册bean对象
  • 相当于配置文件中的bean标签
示例:获取DataSource
@Bean
public DataSource dataSource(){
    DruidDataSource ds = new DruidDataSource();
    //dataSource.setDriverClassName(driverClassName);//如果不配置druid会根据url自动识别dbType,然后选择相应的driverClassName
    ds.setUrl("jdbc:mysql://localhost:3306/demo");
    ds.setUsername("root");
    ds.setPassword("root");
    return ds;
}

当第三方bean需要依赖注入时,设置形参后,容器会根据类型自动装配对象

@Bean
public DataSource dataSource(DataSource dataSource){
    return dataSource;
}

@PropertySource - 加载properties配置文件

  • 相当于context:property-placeholder标签

    @Configuration
    @PropertySource("classpath:jdbc.properties")
    

@Import - 导入副配置类

  • 用于在主配置类中导入副配置类

    @Import(SpringConfig.class)
    

posted @   ---Wg---  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
点击右上角即可分享
微信分享提示