1、@Controller
标注控制层,相当于structs中的action
2、@Service
标注业务逻辑处理层,实现接口
3、@Repository
标注数据访问层,即Dao层
4、@Component
把普通实体类实例化到spring容器中,相当于配置文件中的<bean id="" class=“”/>,泛指各种组件,当我们的类不属于各种归类(不属于@Controller、@Service等)的时候,我们就可以使用@Component来标注这个类
<!--使用注解扫描组件,除注解为controller的-->
<context:annotation-config />
<context:component-scan base-package="com.test">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />
</context:component-scan>
<!--base-package表示为需要扫描的所有子包-->
被@Controller 、@Service、@Repository 、@Component 注解的类,这些类都会被纳入进spring容器中进行管理
5、@Lazy
@Lazy用于指定该类是否取消预初始化,即是否延迟加载该实体类。主要用于修饰Spring Bean类,用于指定该类的预初始化行为,使用该注解时可以指定一个boolean型的value属性,该属性决定是否要预初始化该Bean
- lazy代表延时加载,lazy=false,代表不延时,如果对象A中还有对象B的引用,会在A的xml映射文件中配置b的对象引用,多对一或一对多,不延时代表查询出对象A的时候,会把B对象也查询出来放到A对象的引用中,A对象中的B对象是有值的。
- lazy=true代表延时,查询A对象时,不会把B对象也查询出来,只会在用到A对象中B对象时才会去查询
没加注解之前主要容器启动就会实例化bean,加上@Lazy注解则会在第一次调用的时候实例化,@Lazy注解的作用主要是减少springIOC容器启动时的加载时间
6、@PostConstruct
在方法上加上该注解,项目会在启动的时候就执行该方法。本人用这个注解的时候是要写一个在项目启动后持续执行的线程,用来持续读取数据。(实现这个目的也可用监听器)。