1、@Bean
@Bean用于定义一个Bean,它可以用在方法上,表示该方法返回的对象将会被注册为一个Bean。
@Bean默认情况下会使用方法名作为Bean的名称,也可以通过name、value属性指定Bean的名称。
@SpringBootApplication
public class SpringIocApplication {
public static void main(String[] args) {
//获取IOC容器
ConfigurableApplicationContext ioc = SpringApplication.run(SpringIocApplication.class, args);
//获取容器中所有的bean的名称
String[] names = ioc.getBeanDefinitionNames();
//遍历bean的名称
for (String name : names) {
System.out.println(name);
}
}
@Bean
public Dog getDog(){
return new Dog("毛毛", "Black");
}
}
class Dog{
String name;
String color;
public Dog(String name, String color) {
this.name = name;
this.color = color;
}
}
输出结果:
当@Bean用name或value属性指定名字时,注册到容器的中bean名称就为指定的名称
2、@Component
@Component是用在类上的注解,用于将一个类注册为一个Bean。在使用@Component时,可以通过value或者name属性指定Bean的名称。@Component的默认名称是将类名的首字母小写作为Bean的名称。
@Bean与@Component注解的区别
- @Bean注解可以用在任何类上,包括第三方库中的类,而@Component注解只能用于自己定义的类。
- @Bean注解通常被用于配置类中,用于配置Bean的创建和初始化过程,可以通过方法体内进行自定义操作。而@Component注解通常用于普通的业务类,表示这个类被Spring容器管理。
总的来说,@Bean注解更加灵活,可以在配置类中对Bean进行自定义操作,而@Component注解则更适合普通的业务类。
3、MVC分层注解
@Controller
用于将类注册为一个控制层的Bean。通常用于控制器类,用于处理请求和返回响应。
@Controller
public class UserController {
}
@Service
用于将类注册为一个服务层的Bean。通常用于服务类,用于实现业务逻辑。
@Service
public class UserServiceImpl implements UserService {
}
@Repository
用于将类注册为一个持久化层的Bean。通常用于DAO类,用于访问数据库或其他持久化操作。
@Repository
public class UserDao {
}
@Repository、@Service和@Controller这三个注解底层都是基于@Component注解的。分层注解可以更好地划分组件的角色和用途,使代码更具可读性和可维护性。此外,Spring也可以根据这些注解提供特定的功能和处理。例如,持久化层的异常转换、事务管理等。
4、@Import
@Import注解可以在Spring的配置类中引入其他配置类或组件,从而实现组件的管理和组合,同时也提供了条件化引入的功能,它可以帮助开发者更好地组织和管理应用的配置和组件。
@Configuration
@Import({UserService.class, OrderService.class})
public class MainConfig {
// ...
}
5、@Configuration
@Configuration注解用于标识配置类和配置方法,同时将该配置类注册到IOC容器中。在配置类中,可以使用@Bean注解来定义Bean方法。这些方法用于创建和配置应用程序中的Bean实例。通过调用这些方法,Spring容器可以获取配置类中定义的Bean,并将它们纳入Spring容器的管理。
@Configuration
public class AppConfig {
@Bean
public UserService userService() {
return new UserServiceImpl();
}
@Bean
public OrderService orderService(UserService userService) {
return new OrderServiceImpl(userService);
}
}
标签:name,Spring,Component,public,Bean,注解,IOC,class
From: https://blog.csdn.net/weixin_68901096/article/details/145489083