SpringBoot 常用注解 -- Spring Bean 注解

SpringBoot 常用注解 – Spring Bean 注解

@ComponentScan

说明:

@ComponentScan注解用于配置Spring需要扫描的被组件注解注释的类所在的包。可以通过配置其basePackages属性或者value属性来配置需要扫描的包路径。value属性是basePackages的别名。

属性:

    basePackages/value 指扫描哪写包下的组件注解。 basePackageClasses 扫描指定的类,该类有组件注解才能被扫描到。 useDefaultFilters 使用默认的过滤机制,常常搭配下面两个属性一起使用。 includeFilters 扫描哪些组件。 excludeFilters 不扫描哪些组件。 lazyInit 由于是包扫描一次性的,那么无法单独配置哪个组件是否懒加载,因此提供该属性用于声明是否开启懒加载。

示例:

@Configuration
@ComponentScan(basePackages = {
          
   
        "com.controller", 
        "com.dao",
        "com.service"
})
public class MyConfig {
          
   
}

@Component

说明:

@Component注解用于标注一个普通的组件类,它没有明确的业务范围,只是通知Spring被此注解的类需要被纳入到Spring Bean容器中并进行管理。 @Component 有三个衍生注解: @Controller: 用于Controller层 @Service: 用于业务层 @Repository: 用于持久层

示例:

@Component
public class EncryptUserPasswordComponent{
          
   
	public String encrypt(String password,String salt){
          
   
		// .. 
	}
}

@Service

说明:

@Service注解是@Component的一个延伸(特例),它用于标注业务逻辑类。与@Component注解一样,被此注解标注的类,会自动被Spring所管理。

示例:

public interface UserService{
          
   
	User createUser(User user);
}
	
@Service("userService")
public class UserServiceImpl implements UserService{
          
   

	@Autowired
	private UserRepository userRepository;
	
	@Override
	public User createUser(User user){
          
   
		return userRepository.save(user);
	}
}

@RestController
@RequestMapping("/users")
public class UserController{
          
   

	@Autowired
	private UserService userService;
	
	@PostMapping
	public User createUser(aRequestBody User user){
          
   
		return userService.createUser(user);
	}
}

@Repository

说明:

@Repository注解也是@Component注解的延伸,与@Component注解一样,被此注解标注的类会被Spring自动管理起来,@Repository注解用于标注DAO层的数据持久化类。

示例:

@Entity
@Table(name="t_user")
public class User{
          
   

	@ld
	@CoLumn(name="USER_ID")
	private Long id;
		// ...
	}
	
	@Repository
	public interface UserRepository extends JpaRepository<User,Long>{
          
   
		// ...
	}
经验分享 程序员 微信小程序 职场和发展