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