SpringBoot 常用注解 – Spring Bean 注解

摘自:https://mp.weixin.qq/s/dWIO1bfmMhVWo1ZPVIS09Q

@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>{
		// ...
	}

更多推荐

SpringBoot 常用注解 -- Spring Bean 注解