Springboot:@component使用案例
时间: 2023-09-22 08:11:14 浏览: 87
好的,下面是一个简单的SpringBoot @Component的使用案例。
假设我们有一个服务类,需要在其他类中进行调用。首先,我们需要在服务类上添加@Component注解,如下所示:
```
@Component
public class MyService {
public void doSomething() {
// 这里是服务类的具体实现
}
}
```
然后,在需要使用服务类的类中,我们可以使用@Autowired注解将服务类注入进来,如下所示:
```
@Service
public class MyController {
@Autowired
private MyService myService;
public void doSomethingInController() {
myService.doSomething();
}
}
```
这样,我们就可以在MyController类中使用MyService服务类了。
需要注意的是,@Component注解是用来标记一个普通的Java类,表示这个类是一个组件,可以被其他类使用。@Service注解是@Componnet注解的特殊形式,表示这个类是一个服务类,通常用来处理业务逻辑。在使用@Autowired注解时,Spring会自动将符合条件的Bean注入到类中,无需手动创建对象。
相关问题
springboot 使用@conditionalonmissingbean案例
SpringBoot中,使用@ConditionalOnMissingBean注解可以实现按需自动配置。当原本已经存在的Bean不存在时,该注解才会进行自动配置。
在使用该注解时,需要在配置类或者注解类上进行标注。在类上标注时,需要添加@Component注解并指明其扫描路径。然后,使用@ConditionalOnMissingBean注解来判定是否需要自动配置。当原本存在的Bean不存在时,该注解会根据指定的判断条件完成自动配置。
例如,我们需要根据条件来判定是否需要自动配置数据源,可以使用@ConditionalOnMissingBean注解。在使用该注解时,我们需要指定检测的bean类型和对应的bean名称,如果检测到该bean不存在,则进行自动配置。具体实现如下:
@Configuration
public class DataSourceConfig {
@Bean(name = "dataSource")
@ConditionalOnMissingBean(name = "dataSource")
public DataSource dataSource() {
// 数据库连接等代码
return dataSource;
}
}
在该配置类中,我们使用@ConditionalOnMissingBean标注了成员函数dataSource(),并且指定了该函数返回的Bean的名称为“dataSource”。当判定不存在该名称的Bean时,就会自动进行配置。
除了根据bean名称判断外,@ConditionalOnMissingBean注解还可以根据Bean类型和条件进行判断。例如,我们需要判断一个接口实现是否存在,可以使用@ConditionalOnMissingBean注解结合@ConditionalOnClass注解进行判定。
@Configuration
public class ServiceConfig {
@Bean
@ConditionalOnMissingBean(IService.class)
@ConditionalOnClass(IService.class)
public IService iService() {
// 接口实现代码
return iService;
}
}
在该配置类中,我们使用@ConditionalOnMissingBean注解结合@ConditionalOnClass注解判断接口实现是否存在。当判定该接口实现不存在时,就会自动进行配置。
总之,@ConditionalOnMissingBean注解为我们带来了更多自动配置的灵活性,可以根据不同的条件进行自动配置,提高了开发效率,减少了代码冗余。它是SpringBoot中一个非常实用的注解,开发者可以灵活运用该注解,并根据业务需求进行适当的配置,以满足项目的要求。
springboot中ApplicationEventPublisher的使用案例
在Spring Boot中,我们可以使用ApplicationEventPublisher来发布自定义事件。下面是一个简单的使用案例:
```java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.stereotype.Component;
@Component
public class MyEventPublisher {
@Autowired
private ApplicationEventPublisher applicationEventPublisher;
public void publishEvent(final String message) {
System.out.println("Publishing custom event. ");
MyEvent customSpringEvent = new MyEvent(this, message);
applicationEventPublisher.publishEvent(customSpringEvent);
}
}
```
在上面的代码中,我们首先注入了ApplicationEventPublisher,然后定义了一个publishEvent方法,该方法接受一个字符串参数message。在该方法中,我们创建了一个自定义事件MyEvent,并使用ApplicationEventPublisher发布了该事件。
下面是自定义事件MyEvent的定义:
```java
import org.springframework.context.ApplicationEvent;
public class MyEvent extends ApplicationEvent {
private String message;
public MyEvent(Object source, String message) {
super(source);
this.message = message;
}
public String getMessage() {
return message;
}
}
```
在上面的代码中,我们继承了ApplicationEvent,并添加了一个message属性和相应的getter方法。
最后,我们需要定义一个事件监听器来处理自定义事件。下面是一个简单的事件监听器:
```java
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;
@Component
public class MyEventListener {
@EventListener
public void onApplicationEvent(MyEvent event) {
System.out.println("Received spring custom event - " + event.getMessage());
}
}
```
在上面的代码中,我们使用@EventListener注解来标记onApplicationEvent方法,该方法接受一个MyEvent参数。当MyEvent事件被发布时,该方法将被调用,并输出事件的message属性。
阅读全文