1. 程式人生 > >Atitit spring原理 反射 ioc 與註解api 目錄 1. 反射的使用 1 1.1. 使用jdk原生反射api 1 1.2. 使用apache 工具包 commons-beanutil

Atitit spring原理 反射 ioc 與註解api 目錄 1. 反射的使用 1 1.1. 使用jdk原生反射api 1 1.2. 使用apache 工具包 commons-beanutil

Atitit spring原理 反射 ioc 與註解api

 

目錄

1. 反射的使用 1

1.1. 使用jdk原生反射api 1

1.2. 使用apache 工具包  commons-beanutils-1.7.0.jar 1

2. 註解的使用 2

2.1. 註解定義 2

2.2. 註解設定使用 2

2.3. 註解讀取 2

 

 

  1. 反射的使用

 

// 獲取通過註解注入容器的UserService

UserService userService = context

.getBean(UserService.class);

 

    1. 使用jdk原生反射api

private static UserService getBean(Class<UserService> class1) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {

//

com.google.common.reflect.Reflection.

 

UserService us= ConstructorUtils.invokeConstructor(class1, null);

return  us;

}

 

    1. 使用apache 工具包  commons-beanutils-1.7.0.jar

目的:提升可讀性 容易理解

//使用apache beanutil工具來實現反射

private static

 Object getBean(Class<?> class1) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {

 

   //載入類,並且呼叫建構函式返回新建物件

return ConstructorUtils.invokeConstructor(class1, null);

 

 

}

  1. 註解的使用
    1. 註解定義

 

package ref;

 

import java.lang.annotation.Retention;

import java.lang.annotation.RetentionPolicy;

 

@Retention(RetentionPolicy.RUNTIME)

public @interface 我的註解 {

 

String 屬性();

 

String 屬性2();

 

}

    1. 註解設定使用

 @我的註解(屬性="111",屬性2="2222")

public class UserService {

 

 

    1. 註解讀取

Class cls= UserService.class;

我的註解   anno1=  (我的註解) cls.getAnnotation(我的註解.class);

System.out.println(anno1.屬性());

System.out.println(anno1.屬性2());