@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