关于java项目中用到的注解

2 篇文章 0 订阅
1.@responsebody
使用在一个方法上面,一般在Controller里面的方法中,都会使用@RequestMapping来定位这个方法的,然后我们一般返回都是一个url,比如return'index',表示返回index.jsp/html页面,而如果我们在方法上面加上@responsebody,那么返回的数据就不会被解析成为跳转的url路径,而是直接写入HTTP responsebody中。比如异步获取json数据,加上@responsebody后,会直接返回json数据。


2.@RequestBody
该注解用于读取request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上面。注解用于将Controller的方法参数,根据HTTP Request Header的content-Type的内容,通过适当的HttpMessageConverter转换为JAVA类,使用在POST或者PUT的数据是JSON格式或者XML格式,而不是普通的键值对形式.


3.@RequestMapping
用来在Controller作定位用的:eg:@RequestMapping("/admin/log/")


4.@Autowired/@resource
1)@Autowired与@Resource都可以用来装配bean.都可以写在字段上,或写在setter方法上。 
2)@Autowired默认按类型装配(这个注解是属业spring的),默认情况下必须要求依赖对象必须存在,如果要允许null 值,可以设置它的required属性为false,如:@Autowired(required=false) ,如果我们想使用名称装配可以结合@Qualifier注解进行使用,如下:
@Autowired() @Qualifier("baseDao")
private BaseDao baseDao;
3)@Resource(这个注解属于J2EE的),默认安照名称进行装配,名称可以通过name属性进行指定, 
如果没有指定name属性,当注解写在字段上时,默认取字段名进行按照名称查找,如果注解写在setter方法上默认取属性名进行装配。 当找不到与名称匹配的bean时才按照类型进行装配。但是需要注意的是,如果name属性一旦指定,就只会按照名称进行装配。
@Resource(name="baseDao")
private BaseDao baseDao;


5.java自定义注解
元注解
元注解是指注解的注解:@Retention @Target @Document @Inherited四种。
1)
@Retention: 定义注解的保留策略


@Retention(RetentionPolicy.SOURCE)   //注解仅存在于源码中,在class字节码文件中不包含
@Retention(RetentionPolicy.CLASS)     //默认的保留策略,注解会在class字节码文件中存在,但运行时无法获得,
@Retention(RetentionPolicy.RUNTIME)  //注解会在class字节码文件中存在,在运行时可以通过反射获取到
2)
@Target:定义注解的作用目标
源码:
@Documented  
@Retention(RetentionPolicy.RUNTIME)  
@Target(ElementType.ANNOTATION_TYPE)  
public @interface Target {  
    ElementType[] value();  
}  


@Target(ElementType.TYPE)   //接口、类、枚举、注解
@Target(ElementType.FIELD) //字段、枚举的常量
@Target(ElementType.METHOD) //方法
@Target(ElementType.PARAMETER) //方法参数
@Target(ElementType.CONSTRUCTOR)  //构造函数
@Target(ElementType.LOCAL_VARIABLE)//局部变量
@Target(ElementType.ANNOTATION_TYPE)//注解
@Target(ElementType.PACKAGE) ///包
由以上的源码可以知道,他的elementType 可以有多个,一个注解可以为类的,方法的,字段的等等


3) @Document:说明该注解将被包含在javadoc中
4) @Inherited:说明子类可以继承父类中的该注解


6.spring-AOP
@aspect申明一个切面类

@Aspect  
public class AspectStyle {  
      
      配置切面点
    @Pointcut("execution(* com.sxit..*.*(..))")  
    public void init(){  
          
    }  
  
    @Before(value="init()")  
    public void before(){  
        System.out.println("方法执行前执行.....");  
    }  
      
    @AfterReturning(value="init()")  
    public void afterReturning(){  
        System.out.println("方法执行完执行.....");  
    }  
      
    @AfterThrowing(value="init()")  
    public void throwss(){  
        System.out.println("方法异常时执行.....");  
    }  
      
    @After(value="init()")  
    public void after(){  
        System.out.println("方法最后执行.....");  
    }  
      
    @Around(value="init()")  
    public Object around(ProceedingJoinPoint pjp){  
        System.out.println("方法环绕start.....");  
        Object o = null;  
        try {  
            o = pjp.proceed();  
        } catch (Throwable e) {  
            e.printStackTrace();  
        }  
        System.out.println("方法环绕end.....");  
        return o;  
    }  
}  



打印信息:
    方法before前执行.....  
    方法环绕start.....  
    我看.....................  
    方法after执行.....  
    方法环绕end.....  
    方法afterReurning执行.....  


7.spring注解
@Component 是一个泛化的概念,仅仅表示一个组件 (Bean) ,可以作用在任何层次。
@Service 通常作用在业务层,但是目前该功能与 @Component 相同。
@Constroller 通常作用在控制层,但是目前该功能与 @Component 相同。
@Repository注解便属于最先引入的一批,它用于将数据访问层 (DAO 层 ) 的类标识为 Spring Bean。具体只需将该注解标注在 DAO类上即可。同时,为了让 Spring 能够扫描类路径中的类并识别出 @Repository 注解,需要在 XML 配置文件中启用Bean 的自动扫描功能,这可以通过<context:component-scan/>实现。如下所示:


 // 首先使用 @Repository 将 DAO 类声明为 Bean 
 package bookstore.dao; 
 @Repository 
 public class UserDaoImpl implements UserDao{ …… } 


 // 其次,在 XML 配置文件中启动 Spring 的自动扫描功能
 <beans … > 
    ……
 <context:component-scan base-package=”bookstore.dao” /> 
……
 </beans> 


8.@SuppressWarnings去除警告


9.@import 
@Import注解就是之前xml配置中的import标签,可以用于依赖第三方包中bean的配置和加载
在4.2之前只支持导入配置类
在4.2,@Import注解支持导入普通的java类,并将其声明成一个bean
eg:
@Configuration  
@Import(DemoService.class)//在spring 4.2之前是不不支持的  
public class DemoConfig {  
  public static void main(String[] args) {  
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext("com..example");  
        DemoService ds = context.getBean(DemoService.class);  
        ds.doSomething();  
    }  



10.@Configuration
Configuration 是 Spring 3.X 后提供的注解,用于取代 XML 来配置 Spring
@Configuration一般被用来初始化配置,有两种方法可以使带有@Configuration的类被初始化,一为让把类所在包的路径纳入scanBasePackages,这样就进入了Spring的扫描范围;还有一种方法就是在spring.factories中用org.springframework.boot.autoconfigure.EnableAutoConfiguration=类的全路径名,这样在项目启动的时候SpringFactoriesLoader会初始化spring.factories(包括引入的jar包中的)中配置的类。在spring.factories配置的好处就是,如果我们想开发一个jar把供其他人使用,那么我们就在自己工程的spring.factories中配置@@Configuration类,这样只要其他人在他们项目的POM中加入了我们开发的jar包作为依赖,在他们项目启动的时候就会初始化我们开发的工程中的类。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值