spring的新注解

原始注解不能完全代替xml的配置, 比如

  1. 非自定义的bean
  2. 加载properties文件
  3. 组件扫描
  4. 引入其他文件

@Configuration
作用:指定当前类是一个配置类
细节:当配置类作为 AnnotationConfigApplicationContext 对象创建的参数时,该注解可以不写

@ComponentScan
作用:用于通过注解指定 Spring 在创建容器时要扫描的包
属性:
value : 它和 basepackages 的作用是一样的,都是用于指定创建容器时要扫描的包
使用此注解就等同于在 xml 中配置了:

@Bean
作用:用于把当前方法的返回值作为 bean 对象放入 Spring 的IOC容器中
属性:
name : 用于指定 bean 的 id,当不写时,默认值为当前方法的名称
细节:当我们使用注解配置方法时,如果方法有参数,Spring 框架会去容器中查找有没有可用的 bean 对象,查找的方式和 Autowired 注解的作用是一样的

@Import
作用:用于导入其他的配置类
属性:
value : 用于指定其他配置类的字节码
当我们使用 Import 的注解之后,有 Import 注解的类就是父配置类,而导入的都是子配置类

@PropertySource
作用:用于指定 properties 文件的位置
属性:
value : 指定文件的名称和路径
关键字:classpath , 表示类路径下

核心思想: 就是创建一个核心配置类, 去替代applicationContext.xml文件
在java下新建一个config包
这个包里面就放spring的配类
代码实例

/*
* 标志该类作为spring的核心配置类*/
@Configuration
/*
* 包组件扫描*/
@ComponentScan("dao")
@ComponentScan("service")
@ComponentScan("model")
/*
* 加载properties文件*/
@PropertySource("classpath:jdbc.properties")
public class SpringConfiguration {  //替代applicationContext.xml

    @Value("${jdbc.driver}")
    private String jdbcdriver;  //配合原始注解拿properties文件的信息
    @Value("${jdbc.url}")
    private String jdbcurl;
    @Value("${jdbc.username}")
    private String jdbcusername;
    @Value("${password}")
    private String jdbcpassword;


    @Bean("druidDataSource")
    public DruidDataSource getDruidDataSource(){
        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.setDriverClassName(jdbcdriver);
        druidDataSource.setUrl(jdbcurl);
        druidDataSource.setUsername(jdbcusername);
        druidDataSource.setPassword(jdbcpassword);
        return druidDataSource;
    }
}

如果说, 单独一个配置类十分不方便管理, 例如这里我们可以将配置数据源单独拿出来
新建一个配置;类

/*
 * 加载properties文件*/
@PropertySource("classpath:jdbc.properties")
public class DruidDataSourceConfiguration {

    @Value("${jdbc.driver}")
    private String jdbcdriver;  //配合原始注解拿properties文件的信息
    @Value("${jdbc.url}")
    private String jdbcurl;
    @Value("${jdbc.username}")
    private String jdbcusername;
    @Value("${password}")
    private String jdbcpassword;


    @Bean("druidDataSource")
    public DruidDataSource getDruidDataSource(){
        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.setDriverClassName(jdbcdriver);
        druidDataSource.setUrl(jdbcurl);
        druidDataSource.setUsername(jdbcusername);
        druidDataSource.setPassword(jdbcpassword);
        return druidDataSource;
    }
}

再导入进主配置类

/*
* 标志该类作为spring的核心配置类*/
@Configuration
/*
* 包组件扫描*/
@ComponentScan("dao")
@ComponentScan("service")
@ComponentScan("model")
/*
* 导入其他配置类*/
@Import({DruidDataSourceConfiguration.class})
public class SpringConfiguration {  //替代applicationContext.xml

    //这里是主配置文件的内容

}

这样一来, 基本applicationContext.xml都可以删掉了, 因为全都可以使用注解来配置了
注意
这里获取app对象就不能再用ApplicationContext的前两个实现类了
得用这个

ApplicationContext app = new AnnotationConfigApplicationContext(SpringConfiguration.class);
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值