非常重要】 组件扫描(Component-Scan)
- <bean>
- cn.tedu.spring.dao
- package,要想自动管理bean,那么还需要配置注解
注解
- @Component注解,可以是的spring知道这个类是一个组件,需要进行管理,所以如过某个类需要被Spring管理,应该将这个类放在被扫描的包中,并且添加注解
前提
- 一定要是在开启组件扫描的包下使用注解,否则将不会扫描到配置的注解
常用注解
- 可以混用,暂时这几个注解没有差异,完全功能相同,但是我们还是要根据规则使用
-
@Component: 通用注解 -
@Service: 用于对业务逻辑类的注解(Service层) -
@Controller: 用于对控制器类的注解 -
@Repository:用于对持久层处理类的注解(Dao层) -
@Named:通用注解(不用) - @Service
其他注解
@Scope
- 表示非单例,默认是单例
@Lazy
- 用于设置成懒加载
- 在类的声明语句上方添加
- 前面之前已经说过,在创建Bean的时候默认使用的是单例模式下的饿汉式的创建,即是在spring配置文件加载的时候创建
@PostConstruct
- 将方法设置为生命周期的初始化方法
- 设置初始化方法,直接在初始化方法的声明语句中添加即可
@PostConstruct
{
System;
}
@PreDestroy(单例模式下才会销毁)
- 在方法的声明语句上方使用,可以将这个方法设置为生命周期的销毁方法
@PreDestroy
{
System;
}
注入值
@Autowired (不推荐使用)
- @Autowired,用于标记该属性是自动装配值
- byType)实现自动装配
- Bean-Id
- UserDao
)
{
{
System;
}
}
- UserService
@Service
{
@Autowired
@)
;
{
userDao;
}
}
@Resource (推荐使用)
- 在需要注入的属性的上方添加该注解
- 默认先按照名称来自动装配的(byName),如果名称对应不上,那么按照类型(byType)进行匹配
@Resource
;
- Bean Id,添加了name属性,那么只是按照名称来装配,如果这个名称对应的Bean不存在,那么就注入失败
)
;
@Value
- @Value注解添加在属性的声明的上方,可以对属性注入值
- 直接注入值
)
;
- 的注解时还可以使用Spring表达式
https://cloud.tencent.com/developer/article/1120386