标签:总结 SpringBoot 配置 class Bean 注解 Configuration public
在SpringBoot框架中,注解做为一种隐式配置,极大的简化了之前xml文件的配置方式。SpringBoot中包含许多种类的注解,这里对在SpingBoot项目中经常使用到的一些注解的进行大致的归纳总结;
一、启动相关
1、@SpringBootApplication
SpringBootApplication注解:
- @Target(ElementType.TYPE)
- @Retention(RetentionPolicy.RUNTIME)
- @Documented
- @Inherited
- @SpringBootConfiguration
- @EnableAutoConfiguration
- @ComponentScan(excludeFilters = {
- @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
- @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
- public @interface SpringBootApplication {
在SpirngBoot启动类里面,都加入了此启动注解,此注解是个组合注解,三个比较重要的:
- @SpringBootConfiguration 继承至@Configuration,其实两种功能一致,都是标注该类为配置类
- @EnableAutoConfiguration 这个注解是SpirngBoot自动配置的核心所在,通过此注解,能所有符合自动配置条件的bean的定义加载到spring容器中。
- @ComponentScan 该注解会扫描当前包及子包下面被纳入sping容器管理的类。
注意事项:
- 一般我们在实际项目中会根据自己的需要排除一些无需自动配置的类,例如我们会配置自己的数据库,所以就不需要springboot自动注入数据源,这可以利用exclude进行排除
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
- 当需扫描第三方jar包时,我们可以通过在配置类中使用@Configuration与@ComponentScan来引入第三方jar包下的类
@Configuration
@ComponentScan(basePackages = {"com.test.service"}) //引入第三方jar包下的类
2、@Import
@Import注解可用来导入一个或者多个 Spring 配置文件,特别是第三方jar包下的一些配置类,需要通过Import注解进行加载,代码如下所示
@Import({KafkaConfig.class, JedisConfig.class}) //引入第三方jar包里配置类
二、配置相关
以一般的的配置类中用到的注解为例
1、@Configuration
@Configuration专门用来标注配置类,它一般会配合
2、@Bean
使用@Bean注解拿到配置返回相关实例,并放入sping容器中统一管理
3、@PropertySource
目的是加载指定路径下的属性文件
4、@Value
配合@PropertySource注解使用,指定该字段对应的配置文件中的内容
5、@Order
利用@Order控制配置类的加载顺序
结合以上注解对kafka进行配置示例代码如下
@Configuration @PropertySource("classpath:spring-kafka.properties") @Order(2) public class KafkaConfig { @Value("${spring.kafka.bootstrap-servers}") private String bootstrapServers; @Bean public KafkaListenerContainerFactory<ConcurrentMessageListenerContainer<Object, Object>> kafkaListenerContainerFactory() { ConcurrentKafkaListenerContainerFactory<Object, Object> factory = new ConcurrentKafkaListenerContainerFactory<Object, Object>(); factory.setConsumerFactory(consumerFactory()); factory.setConcurrency(1); // factory .getContainerProperties().setPollTimeout(1000); return factory; } }
三、构造相关
1、@Service
用于标注服务层,主要用来进行业务的逻辑处理
2、@Repository
用于标注持久层,主要用来进行数据库相关操作
3、@Component
一个通用的注解,可以注解各种组件,就是说当我们需要注入sping容器中bean类没有明确分类时(不属于@service、@Repository等的时候),我们就可以使用@Component来标注这个类。
4、@Scope
spring容器管理bean默认是单例模式,如果你需要使用多例模式可以通过@Scope("prototype")注解来实现。
5、@Autowired
这个就很简单了,用于Spring容器中Bean类实例的注入
6、@PostConstruct
在Bean初始化之后(构造方法和@Autowired之后)执行指定操作。如果在项目中有些操作需要在Bean类构造后执行,可以使用@PostConstruct注解,实例代码如下
@RestController @RequestMapping("/api") public class ApiController extends BaseController { @PostMapping("/login") public User login(@RequestBody User user){ //代码 } @GetMapping("/getUser") public User getUser(@RequestParam String userName, @RequestParam String userPhone){ //代码 } }
标签:总结,SpringBoot,配置,class,Bean,注解,Configuration,public 来源: https://www.cnblogs.com/yysbolg/p/13569273.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。