@Component
用于描述spring中的bean,泛化概念,仅仅表示一个组件bean,可以作用任何层次。
@Value
将外部的值动态注入到Bean中。
使用的情况:注入普通字符串,注入操作系统属性,注入表达式结果,注入其他Bean属性,
注入beanInject对象的属性another,注入文件资源,注入URL资源
@Repository
用于数据访问层dao层
@Service
用于业务层,service层
@Controller
用于控制层如springmvc的controller ,对应web中servlet实现
@Autowired
用于属性变量及其setter方法和构造方法进行标注,
配合对应的注解处理器完成自动装配
@Resource
与@Autowired一样,区别在于@Autowired默认按bean类型装配,
而@Resource按照实例名称装配。@Resource两个重要属性:name和type,对应实例名称和实例类型。
@Scope(“singleton”)
单例模式的spring注解配置
@Scope(“prototype”)
多例模式的spring注解配置
【
补充:单例模式与多例模式的优缺点与使用场景
singleton 单例模式:对象在整个应用只有一个,所有的请求都用这个对象处理,如service和dao一般是单例。
单例场景:不需要为每个请求新建一个对象,节省系统开销(CPU资源和内存)
prototype 多例模式:对象在整个应用中有多个实例,每个请求用一个新的对象来处理 。
多例场景:防止并发,即一个请求改变了对象的状态,此时对象又处理另一个请求,而之前请求对对象的状态改变导致了对象对另一个请求做了错误的处理。(即每个对象对应的各个请求独立分开操作)
单例:一个类只能创建一个实例(1个内存地址),多例:一个类创建多个实例
】
@Lazy
spring中实现懒加载的注解
【
补充:立即加载与懒加载的区别
立即加载:Spring容器启动就会创建实例(对象),默认。 对象的引用作为属性关联(连表查询,一对一/一对多/多对多),初始化时即创建对象或查询数据。
懒加载:Spring容器创建对象,使用到才去创建。需要用到关联对象(数据)的时候,再创建对象或查询数据
】
@PostConstruct //初始化执行
开启spring的生命周期
@PreDestroy //销毁的方法
关闭spring的生命周期
补充:
【
在使用注解之前务必要在spring配置文件里写入扫描
<context:component-scan base-package=“填入要扫描的包名”></context:component-scan>
】
【
在spring管理bean的一些小结
<bean id=“类名小写或自定义名称”
class=“包1.包2.实体类名”
scope=“singleton” (单例或者多例)
lazy-init=“false” (懒加载或立即加载)
init-method=“init” (spring的开始对应的方法)
destroy-method=“destroy”(spring的消亡对应的方法)
bean如果配置服务层级如service
(将dao层的接口实现类通过构造方法或setting注入service层的事务处理类)
】