栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

spring的新注解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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的配类
代码实例

@Configuration

@ComponentScan("dao")
@ComponentScan("service")
@ComponentScan("model")

@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;
    }
}

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

@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;
    }
}

再导入进主配置类

@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);
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/671419.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号