zoukankan      html  css  js  c++  java
  • @Configuration和@Bean的用法和理解

    1、第一种自己写的类,Controller,Service。 用@controller @service即可

    2、第二种,集成其它框架,比如集成shiro权限框架,集成mybatis分页插件PageHelper,第三方框架的核心类都要交于Spring大管家管理

    @Configuration可理解为用spring的时候xml里面的<beans>标签

    @Bean可理解为用spring的时候xml里面的<bean>标签

    Spring Boot不是spring的加强版,所以@Configuration和@Bean同样可以用在普通的spring项目中,而不是Spring Boot特有的,只是在spring用的时候,注意加上扫包配置

    <context:component-scan base-package="com.xxx.xxx" />,普通的spring项目好多注解都需要扫包,才有用,有时候自己注解用的挺6,但不起效果,就要注意这点。

    Spring Boot则不需要,主要你保证你的启动Spring Boot main入口,在这些类的上层包就行

    用@Bean注解的方法:会实例化、配置并初始化一个新的对象,这个对象会由spring IoC 容器管理。

    实例:

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

     生成对象的名字:默认情况下用@Bean注解的方法名作为对象的名字。但是可以用 name属性定义对象的名字,而且还可以使用name为对象起多个名字

    @Configuration
    public class AppConfig {
     
        @Bean(name = "myFoo")
        public Foo foo() {
            return new Foo();
        }
     
    }
    @Configuration
    public class AppConfig {
     
        @Bean(name = { "dataSource", "subsystemA-dataSource", "subsystemB-dataSource" })
        public DataSource dataSource() {
            // instantiate, configure and return DataSource bean...
        }
     
    }

    @Bean 一般和 @Component或者@Configuration 一起使用:@Component和@Configuration不同之处

    在 @Component 注解的类中不能定义 类内依赖的@Bean注解的方法。@Configuration可以。

    就像这样,DemoApplication是启动类,关于启动类的位置放置,在另一篇博客有专门的去分析。

    @Configuration和@Bean的Demo类

    @Configuration  
    public class ExampleConfiguration {  
      
        @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;  
      
        @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  
        public PlatformTransactionManager transactionManager() {  
            return new DataSourceTransactionManager(dataSource());  
        }  
      
    }

    这样,在项目中

    @Autowired

    private DataSource dataSource;

    的时候,这个dataSource就是我们在ExampleConfiguration中配的DataSource


    ————————————————
    版权声明:本文为CSDN博主「有逼格d伊凡」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/u012260707/article/details/52021265

  • 相关阅读:
    jeecg 笔记之 自定义显示按钮 (exp 属性)
    jeecg 笔记之 自定义word 模板导出(一)
    jeecg 默认为空的字段值是如何被填充的?
    算法题——立方体的体对角线穿过多少个正方体?
    借用Snippet插件美化博客中的代码
    用PS设计等高线效果的背景图片
    算法题——投篮比赛获胜概率问题
    计算机中的颜色XIV——快速变换颜色的V分量
    算法实践——Twitter算法面试题(积水问题)的线性时间解法
    UI设计实战篇——利用Bootstrap框架制作查询页面的界面
  • 原文地址:https://www.cnblogs.com/yss818824/p/12289868.html
Copyright © 2011-2022 走看看