目录
@EnableAutoConfiguration,@ComponentScan三个注解
SSM常用注解总结
Spring
声明标注注解:
@Service+@Scope
@Service:用于标注业务层的注解
要说明@Service注解的使用,就得说一下我们经常在spring配置文件applicationContext.xml中看到如下图中的配置:
<!-- 采用扫描 + 注解的方式进行开发 可以提高开发效率,后期维护变的困难了,可读性变差了 -->
<context:component-scan base-package="com.study.persistent" />
在applicationContext.xml配置文件中加上这一行以后,将自动扫描指定路径下的包,如果一个类带了@Service注解,将自动注册到Spring容器,不需要再在applicationContext.xml配置文件中定义bean了,类似的还包括@Component、@Repository、@Controller。
@Scope("prototype")//多实例,IOC容器启动创建的时候,并不会创建对象放在容器在容器当中,当你需要的时候,需要从容器当中取该对象的时候,就会创建。
@Scope("singleton")//单实例 IOC容器启动的时候就会调用方法创建对象,以后每次获取都是从容器当中拿同一个对象(map当中)。
@Scope("request")//同一个请求创建一个实例
@Scope("session")//同一个session创建一个实例
如这个类:
@Service("courseDAO")
@Scope("prototype")
public class CourseDAOImpl extends HibernateDaoSupport implements CourseDAO{
......
}
其作用就相当于在applicationContext.xml配置文件里配置如下信息:
<bean id="courseDAO" class="com.study.persistent.CourseDAOImpl" scope="prototype">
......
</bean>
@Service(“serviceName”)注解相当于applicationContext.xml配置文件中配置的,表示给当前类命名一个别名,方便注入到其他需要用到的类中。@Service注解也可以不指定serviceName,如果不指定相当于,com.study.service.ServiceName就是这个类的全限定名,不加的话,默认别名就是当前类名,但是首字母小写。
@Controller
@Controller表示在tomcat启动的时候,把这个类作为一个控制器加载到Spring的Bean工厂,如果不加,就是一个普通的类,和Spring没有半毛钱关系。
@Controller:用于标注控制层的注解
- 用在类上面,表示这个类是一个Controller,比如web controller
- 该注解可以被当作是@Component注解的一个特殊实现
- 允许通过类路径扫描自动检测实现类
- 它通常是和基于注解@RequestMapping的方法结合使用的
- 该注解有一个默认方法,返回类型为String,value的值默认为空
- value的值可能是逻辑组件的名称,如果有自动检测到的组件,则将其转换为Spring bean。
@Repository
@Repository:用于标注数据访问组件,即DAO组件
该注解的作用不只是将类识别为Bean,同时它还能将所标注的类中抛出的数据访问异常封装为 Spring 的数据访问异常类型。
@repository是用来注解接口,如下图:这个注解是将接口BookMapper的一个实现类(具体这个实现类的name叫什么,还需要再分析源码找找看)交给spring管理(在spring中有开启对@repository注解的扫描),当哪些地方需要用到这个实现类作为依赖时,就可以注入了.当然我们也可以主动给这个实现类命名。
@Component
@Component:泛指组件,当组件不好归类的时候可以使用Component
(把普通pojo实例化到spring容器中,相当于配置文件中的 )
泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),我们就可以使用@Component来标注这个类。
被上面四个注解标注的类,都会进入Spring容器中进行管理。
bean注入的注解:
@Autowired
@Autowired:最常用的bean自动注入标签,按bytype自动注入,默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false,如:@Autowired(required=false) ,如果我们想使用名称装配可以结合**@Qualifier**注解进行使用
@Autowired()
@Qualifier("StudentDao")
private StudentDao studentdao;
@Resource
@Resource:作用相当于@Autowired,按byname自动注入
@
Inject
@Inject:是根据类型进行自动装配的,如果需要按名称进行装配,则需要配合**@Named;**
@Value
@Value:为属性注入值
配置类相关注解:
@Configuration
@Configuration:声明当前类为配置类
@Bean
@Bean:注解在方法上,声明当前方法返回值为Bean
@
ComponentScan
@ComponentScan:用于对Component进行扫描
切面
相关注解:
@Aspect
@Aspect:声明这是一个切面
@Before
@Before:前置通知
@After
@After:后置通知
@AfterReturning
@AfterReturning:返回通知
@AfterThrowing
@AfterThrowing:异常通知
@Around
@Around:环绕通知
@pointcut
@pointcut:定义切点
SpringMVC
@Controller
@Controller:用于声明这是一个控制层,SpringMVC中的Controller负责处理由DispatcherServlet 分发的请求
@RequestMapping
@RequestMapping:用来处理请求地址映射,可用在类或方法上
@ModelAttribute
@ModelAttribute:在controller方法调用前,先执行@ModelAttribute方法,可用于注解和方法参数中
@
PathVariable
@PathVariable:用于将请求URL中的模板变量映射到功能处理方法的参数上,即取出uri模板中的变量作为参数。
@requestParam
@requestParam:用于在SpringMVC后台控制层获取参数,类似于request.getParameter(“name”)
@ResponseBody
@ResponseBody:用于将Controller的方法返回的对象,转换为指定格式,如json
@RequestHeader
@RequestHeader:可以把Request请求的header部分的值绑定到方法的参数上。
@CookiesValue
@CookiesValue:把Request header中关于cookie的值绑定到方法的参数上。
Mybatis
@Insert
@Insert:插入sql
@Select
@Select:查询sql
@Update
@Update:更新sql
@Delete
@Delete:删除sql
@Param
@Param:用于传递参数
@Results
@Results:对应于XML中的
@Result
@Result:对应于XML中的
SpringBoot
SpringBoot中与SSM框架中相同的注解就不再写了
@RestController
@RestController:这个注解的意思相当于同时实现了@Controller和@ResponseBody
@SpringBootApplication
@SpringBootApplication:该注解集合了@Configuration,
@EnableAutoConfiguration,@ComponentScan三个注解