专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

mysql 查询嵌套,springboot为什么要configuration而不用component_数据库

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/3/5 13:07:16       共计:3586 浏览
mysql 查询嵌套,springboot为什么要configuration而不用component?

@Component和@Configuration都属于Spring所提供的注解,两者可谓各司其职。

共同点

@Component这个注解,从刚开始的SpringMVC到现在的SpringBoot,我们都一直有接触到,我们也知道它的功能,它帮我们实现了声明一个bean注入到IOC容器中。

另一个注解@Configuration,它们有个共同点,便是它也可以声明一个bean注入到IOC容器中。

特别点

那这样的话,@Configuration的意义是什么呢?

在我看来,@Configuration这个注解,是最能诠释Spring的去配置文件这个工作的注解,因为这个注解有一个很大的作用,它可以代替xml文件,生成类似<beans>的结果。

也就是除了本身外,它可以在类中通过@Bean注解来注入多个Bean到IOC容器中。

如下:

@Configurationpublic class ExampleConfiguration {// 获取到application.properties里的com.mysql.jdbc.Driver配置项@Value("com.mysql.jdbc.Driver")private String driverClassName;@Value("jdbc://xxxx.xx.xxx/xx")private String driverUrl;@Value("${root}")private String driverUsername;@Value("123456")private String driverPassword;//通过@Configuration和@Bean注解,将注入一个名称为dataSource的Bean,这个Bean的主体,便是dataSource()这个方法的结果@Bean(name = "dataSource")public DataSource dataSource() {BasicDataSource dataSource = new BasicDataSource();dataSource.setDriverClassName(driverClassName);dataSource.setUrl(driverUrl);dataSource.setUsername(driverUsername);dataSource.setPassword(driverPassword);return dataSource;}// 还能再继续注入其他的Bean@Beanpublic PlatformTransactionManager transactionManager() {return new DataSourceTransactionManager(dataSource());}}

之后在需要使用该Bean的地方,便可以使用

@Autowiredprivate DataSource dataSource;

来注入,并使用。

注意点

在使用@Configuration这个注解的时候,有几点是需要注意的,我们顺便提一下:

配置类必须以类的形式提供(不能是工厂方法返回的实例),允许通过生成子类在运行时增强(cglib 动态代理)。

配置类不能是 final 类(没法动态代理)。配置注解通常为了通过 @Bean 注解生成 Spring 容器管理的类,配置类必须是非本地的(即不能在方法中声明,不能是 private)。任何嵌套配置类都必须声明为static。@Bean 方法可能不会反过来创建进一步的配置类(也就是返回的 bean 如果带有 @Configuration,也不会被特殊处理,只会作为普通的 bean)。

版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:mysql查询姓名,你有哪些牛掰的自学经历_数据库 | ·下一条:mysql 查询 包含,mysql关键字查询的配置_数据库

Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有