---
title:
category: Java
tag:
- Java
---
##
##
Spring/Spring BootMyBatis
****
JDK `Method`
```java
public class DebugInvocationHandler implements InvocationHandler {
/**
*
*/
private final Object target;
public DebugInvocationHandler(Object target) {
this.target = target;
}
public Object invoke(Object proxy, Method method, Object[] args) throws InvocationTargetException, IllegalAccessException {
System.out.println("before method " + method.getName());
Object result = method.invoke(target, args);
System.out.println("after method " + method.getName());
return result;
}
}
```
Java ****
Spring `@Component` Spring Bean `@Value`
///
##
****
**** [Java Reflection: Why is it so slow?](https://stackoverflow.com/questions/1392351/java-reflection-why-is-it-so-slow)
##
### Class
Class Class Java Class :
**1. **
```java
Class alunbarClass = TargetObject.class;
```
Class Class
**2. `Class.forName()`**
```java
Class alunbarClass1 = Class.forName("cn.javaguide.TargetObject");
```
**3. `instance.getClass()`**
```java
TargetObject o = new TargetObject();
Class alunbarClass2 = o.getClass();
```
**4. `xxxClassLoader.loadClass()`:**
```java
Class clazz = ClassLoader.loadClass("cn.javaguide.TargetObject");
```
Class
###
1. `TargetObject`
```java
package cn.javaguide;
public class TargetObject {
private String value;
public TargetObject() {
value = "JavaGuide";
}
public void publicMethod(String s) {
System.out.println("I love " + s);
}
private void privateMethod() {
System.out.println("value is " + value);
}
}
```
2.
```java
package cn.javaguide;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class Main {
public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InstantiationException, InvocationTargetException, NoSuchFieldException {
/**
* TargetObject Class TargetObject
*/
Class tagetClass = Class.forName("cn.javaguide.TargetObject");
TargetObject targetObject = (TargetObject) tagetClass.newInstance();
/**
* TargetObject
*/
Method[] methods = targetClass.getDeclaredMethods();
for (Method method : methods) {
System.out.println(method.getName());
}
/**
*
*/
Method publicMethod = targetClass.getDeclaredMethod("publicMethod",
String.class);
publicMethod.invoke(targetObject, "JavaGuide");
/**
*
*/
Field field = targetClass.getDeclaredField("value");
//
field.setAccessible(true);
field.set(targetObject, "JavaGuide");
/**
* private
*/
Method privateMethod = targetClass.getDeclaredMethod("privateMethod");
//private
privateMethod.setAccessible(true);
privateMethod.invoke(targetObject);
}
}
```
```
publicMethod
privateMethod
I love JavaGuide
value is JavaGuide
```
**** : `ClassNotFoundException` , `TargetObject`
```java
Class targetClass = Class.forName("cn.javaguide.TargetObject");
```