diff --git a/02nio/nio01/pom.xml b/02nio/nio01/pom.xml
index e42a62f2..297fecd1 100644
--- a/02nio/nio01/pom.xml
+++ b/02nio/nio01/pom.xml
@@ -57,7 +57,7 @@
io.netty
netty-all
- 4.1.51.Final
+ 4.1.72.Final
diff --git a/02nio/nio01/src/main/java/java0/nio01/netty/HttpHandler.java b/02nio/nio01/src/main/java/java0/nio01/netty/HttpHandler.java
index 81f31d2e..5489a97b 100644
--- a/02nio/nio01/src/main/java/java0/nio01/netty/HttpHandler.java
+++ b/02nio/nio01/src/main/java/java0/nio01/netty/HttpHandler.java
@@ -10,6 +10,14 @@
import io.netty.handler.codec.http.HttpUtil;
import io.netty.util.ReferenceCountUtil;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.impl.client.HttpClients;
+
+import java.io.IOException;
+import java.util.Scanner;
+
import static io.netty.handler.codec.http.HttpHeaderNames.CONNECTION;
import static io.netty.handler.codec.http.HttpHeaderValues.KEEP_ALIVE;
import static io.netty.handler.codec.http.HttpResponseStatus.NO_CONTENT;
@@ -45,12 +53,27 @@ public void channelRead(ChannelHandlerContext ctx, Object msg) {
private void handlerTest(FullHttpRequest fullRequest, ChannelHandlerContext ctx, String body) {
FullHttpResponse response = null;
+ // 创建一个HttpClient对象
+ CloseableHttpClient httpclient = HttpClients.createDefault();
+ // 创建一个httpGet对象
+ HttpGet httpget = new HttpGet("http://localhost:8801");
+ CloseableHttpResponse httpresponse = null;
try {
+ System.out.println("fullRequest.uri() = "+fullRequest.uri());
String value = body; // 对接上次作业的httpclient或者okhttp请求另一个url的响应数据
// httpGet ... http://localhost:8801
// 返回的响应,"hello,nio";
// value = reponse....
+// 第三周作业第一道
+ httpresponse = httpclient.execute(httpget);
+ Scanner sc = new Scanner(httpresponse.getEntity().getContent());
+ StringBuilder sb = new StringBuilder();
+ while (sc.hasNext()) {
+ sb.append(sc.nextLine() + "\n");
+ }
+ value = sb.toString();
+ System.out.println(value);
response = new DefaultFullHttpResponse(HTTP_1_1, OK, Unpooled.wrappedBuffer(value.getBytes("UTF-8")));
response.headers().set("Content-Type", "application/json");
@@ -60,6 +83,15 @@ private void handlerTest(FullHttpRequest fullRequest, ChannelHandlerContext ctx,
System.out.println("处理出错:"+e.getMessage());
response = new DefaultFullHttpResponse(HTTP_1_1, NO_CONTENT);
} finally {
+ try {
+ if (httpresponse != null){
+ httpresponse.close();
+ }
+ httpget.releaseConnection();
+ httpclient.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
if (fullRequest != null) {
if (!HttpUtil.isKeepAlive(fullRequest)) {
ctx.write(response).addListener(ChannelFutureListener.CLOSE);
diff --git a/02nio/nio02/src/main/java/io/github/kimmking/gateway/filter/CustomedHttpRequestFilter.java b/02nio/nio02/src/main/java/io/github/kimmking/gateway/filter/CustomedHttpRequestFilter.java
new file mode 100644
index 00000000..92fec60c
--- /dev/null
+++ b/02nio/nio02/src/main/java/io/github/kimmking/gateway/filter/CustomedHttpRequestFilter.java
@@ -0,0 +1,11 @@
+package io.github.kimmking.gateway.filter;
+
+import io.netty.channel.ChannelHandlerContext;
+import io.netty.handler.codec.http.FullHttpRequest;
+
+public class CustomedHttpRequestFilter implements HttpRequestFilter{
+ @Override
+ public void filter(FullHttpRequest fullRequest, ChannelHandlerContext ctx) {
+ fullRequest.headers().set("x-java", "lemon-lee-in");
+ }
+}
diff --git a/02nio/nio02/src/main/java/io/github/kimmking/gateway/filter/CustomedHttpResponseFilter.java b/02nio/nio02/src/main/java/io/github/kimmking/gateway/filter/CustomedHttpResponseFilter.java
new file mode 100644
index 00000000..622b4e2e
--- /dev/null
+++ b/02nio/nio02/src/main/java/io/github/kimmking/gateway/filter/CustomedHttpResponseFilter.java
@@ -0,0 +1,10 @@
+package io.github.kimmking.gateway.filter;
+
+import io.netty.handler.codec.http.FullHttpResponse;
+
+public class CustomedHttpResponseFilter implements HttpResponseFilter{
+ @Override
+ public void filter(FullHttpResponse response) {
+ response.headers().set("xy-java", "lemon-lee-out");
+ }
+}
diff --git a/02nio/nio02/src/main/java/io/github/kimmking/gateway/filter/HeaderHttpRequestFilter.java b/02nio/nio02/src/main/java/io/github/kimmking/gateway/filter/HeaderHttpRequestFilter.java
index af5c37fb..8289a821 100644
--- a/02nio/nio02/src/main/java/io/github/kimmking/gateway/filter/HeaderHttpRequestFilter.java
+++ b/02nio/nio02/src/main/java/io/github/kimmking/gateway/filter/HeaderHttpRequestFilter.java
@@ -8,5 +8,6 @@ public class HeaderHttpRequestFilter implements HttpRequestFilter {
@Override
public void filter(FullHttpRequest fullRequest, ChannelHandlerContext ctx) {
fullRequest.headers().set("mao", "soul");
+ fullRequest.headers().set("x-java", "lemon_lee");
}
}
diff --git a/02nio/nio02/src/main/java/io/github/kimmking/gateway/filter/HeaderHttpResponseFilter.java b/02nio/nio02/src/main/java/io/github/kimmking/gateway/filter/HeaderHttpResponseFilter.java
index 53493fb4..2579e25d 100644
--- a/02nio/nio02/src/main/java/io/github/kimmking/gateway/filter/HeaderHttpResponseFilter.java
+++ b/02nio/nio02/src/main/java/io/github/kimmking/gateway/filter/HeaderHttpResponseFilter.java
@@ -6,5 +6,6 @@ public class HeaderHttpResponseFilter implements HttpResponseFilter {
@Override
public void filter(FullHttpResponse response) {
response.headers().set("kk", "java-1-nio");
+ response.headers().set("x-java", "lemon-lee");
}
}
diff --git a/02nio/nio02/src/main/java/io/github/kimmking/gateway/inbound/HttpInboundHandler.java b/02nio/nio02/src/main/java/io/github/kimmking/gateway/inbound/HttpInboundHandler.java
index 69b40fde..321d4494 100644
--- a/02nio/nio02/src/main/java/io/github/kimmking/gateway/inbound/HttpInboundHandler.java
+++ b/02nio/nio02/src/main/java/io/github/kimmking/gateway/inbound/HttpInboundHandler.java
@@ -1,5 +1,6 @@
package io.github.kimmking.gateway.inbound;
+import io.github.kimmking.gateway.filter.CustomedHttpRequestFilter;
import io.github.kimmking.gateway.filter.HeaderHttpRequestFilter;
import io.github.kimmking.gateway.filter.HttpRequestFilter;
import io.github.kimmking.gateway.outbound.httpclient4.HttpOutboundHandler;
@@ -18,6 +19,7 @@ public class HttpInboundHandler extends ChannelInboundHandlerAdapter {
private final List proxyServer;
private HttpOutboundHandler handler;
private HttpRequestFilter filter = new HeaderHttpRequestFilter();
+ private HttpRequestFilter filter01 = new CustomedHttpRequestFilter();
public HttpInboundHandler(List proxyServer) {
this.proxyServer = proxyServer;
@@ -40,7 +42,8 @@ public void channelRead(ChannelHandlerContext ctx, Object msg) {
// handlerTest(fullRequest, ctx);
// }
- handler.handle(fullRequest, ctx, filter);
+// handler.handle(fullRequest, ctx, filter);
+ handler.handle(fullRequest, ctx, filter01);
} catch(Exception e) {
e.printStackTrace();
diff --git a/02nio/nio02/src/main/java/io/github/kimmking/gateway/outbound/httpclient4/HttpOutboundHandler.java b/02nio/nio02/src/main/java/io/github/kimmking/gateway/outbound/httpclient4/HttpOutboundHandler.java
index c20c9be5..f42aad45 100644
--- a/02nio/nio02/src/main/java/io/github/kimmking/gateway/outbound/httpclient4/HttpOutboundHandler.java
+++ b/02nio/nio02/src/main/java/io/github/kimmking/gateway/outbound/httpclient4/HttpOutboundHandler.java
@@ -1,6 +1,7 @@
package io.github.kimmking.gateway.outbound.httpclient4;
+import io.github.kimmking.gateway.filter.CustomedHttpResponseFilter;
import io.github.kimmking.gateway.filter.HeaderHttpResponseFilter;
import io.github.kimmking.gateway.filter.HttpRequestFilter;
import io.github.kimmking.gateway.filter.HttpResponseFilter;
@@ -38,7 +39,8 @@ public class HttpOutboundHandler {
private ExecutorService proxyService;
private List backendUrls;
- HttpResponseFilter filter = new HeaderHttpResponseFilter();
+// HttpResponseFilter filter = new HeaderHttpResponseFilter();
+ HttpResponseFilter filter = new CustomedHttpResponseFilter();
HttpEndpointRouter router = new RandomHttpEndpointRouter();
public HttpOutboundHandler(List backends) {
@@ -83,7 +85,8 @@ private void fetchGet(final FullHttpRequest inbound, final ChannelHandlerContext
final HttpGet httpGet = new HttpGet(url);
//httpGet.setHeader(HTTP.CONN_DIRECTIVE, HTTP.CONN_CLOSE);
httpGet.setHeader(HTTP.CONN_DIRECTIVE, HTTP.CONN_KEEP_ALIVE);
- httpGet.setHeader("mao", inbound.headers().get("mao"));
+// httpGet.setHeader("mao", inbound.headers().get("mao"));
+ httpGet.setHeader("x=java", inbound.headers().get("x-java"));
httpclient.execute(httpGet, new FutureCallback() {
@Override
diff --git a/03concurrency/0301/src/main/java/java0/conc0301/op/Join.java b/03concurrency/0301/src/main/java/java0/conc0301/op/Join.java
index 1cbf6a5a..22080bb4 100644
--- a/03concurrency/0301/src/main/java/java0/conc0301/op/Join.java
+++ b/03concurrency/0301/src/main/java/java0/conc0301/op/Join.java
@@ -15,7 +15,7 @@ public static void main(String[] args) {
if (i == 20) {
try {
oo.wait(0);
- //thread1.join();
+// thread1.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
@@ -46,6 +46,8 @@ public void run() {
for (int i = 0; i < 100; i++) {
System.out.println(name + i);
}
+ // with synchronized(oo) and oo.wait(), run as wish using the next line.
+ oo.notifyAll();
}
}
diff --git a/03concurrency/0301/src/main/java/java0/conc0301/op/WaitAndNotify.java b/03concurrency/0301/src/main/java/java0/conc0301/op/WaitAndNotify.java
index e3956c10..c72459ce 100644
--- a/03concurrency/0301/src/main/java/java0/conc0301/op/WaitAndNotify.java
+++ b/03concurrency/0301/src/main/java/java0/conc0301/op/WaitAndNotify.java
@@ -3,6 +3,7 @@
public class WaitAndNotify {
public static void main(String[] args) {
MethodClass methodClass = new MethodClass();
+ MethodKlass methodKlass = new MethodKlass();
Thread t1 = new Thread(() -> {
try {
methodClass.product();
@@ -13,7 +14,7 @@ public static void main(String[] args) {
}, "t1");
Thread t2 = new Thread(() -> {
try {
- methodClass.customer();
+ methodKlass.customer();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
@@ -46,7 +47,7 @@ public synchronized void product() throws InterruptedException {
Thread.sleep(10);
if (productCount >= MAX_COUNT) {
System.out.println("货舱已满,,.不必再生产");
-
+
wait();
}else {
productCount++;
@@ -70,4 +71,7 @@ public synchronized void customer() throws InterruptedException {
notifyAll();
}
}
+}
+class MethodKlass extends MethodClass {
+
}
\ No newline at end of file
diff --git a/03concurrency/0301/src/main/java/java0/conc0303/Homework03.java b/03concurrency/0301/src/main/java/java0/conc0303/Homework03.java
index f9a6eb20..c8e3193b 100644
--- a/03concurrency/0301/src/main/java/java0/conc0303/Homework03.java
+++ b/03concurrency/0301/src/main/java/java0/conc0303/Homework03.java
@@ -1,6 +1,7 @@
package java0.conc0303;
-import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.*;
+import java.lang.reflect.*;
/**
* 本周作业:(必做)思考有多少种方式,在main函数启动一个新线程或线程池,
@@ -10,21 +11,111 @@
* 一个简单的代码参考:
*/
public class Homework03 {
-
+// static CountDownLatch countDownLatch = new CountDownLatch(1);
+
public static void main(String[] args) {
-
- long start=System.currentTimeMillis();
- // 在这里创建一个线程或线程池,
+ long start = System.currentTimeMillis();
+
+ // 在这里创建一个线程或线程池
+// ExecutorService service = Executors.newSingleThreadExecutor();
+ ExecutorService service = Executors.newCachedThreadPool();
// 异步执行 下面方法
-
- int result = sum(); //这是得到的返回值
-
- // 确保 拿到result 并输出
- System.out.println("异步计算结果为:"+result);
-
+ // 1. FutureTask
+ FutureTask futureTask = new FutureTask(() -> sum());
+ service.submit(futureTask);
+ try {
+ int result = futureTask.get().intValue();
+
+// int result = sum(); //这是得到的返回值
+
+ // 确保 拿到result 并输出
+ System.out.println("1 : FutureTask异步计算结果为:" + result);
+ System.out.println("使用时间:" + (System.currentTimeMillis() - start) + " ms");
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ } catch (ExecutionException e) {
+ e.printStackTrace();
+ }
+
+ // 2. Callable + Future
+ Future future = service.submit(() -> sum());
+ try {
+ int result = (Integer) future.get();
+
+ // 确保 拿到result 并输出
+ System.out.println("2 : Future + Callable异步计算结果为:" + result);
+ System.out.println("使用时间:" + (System.currentTimeMillis() - start) + " ms");
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ } catch (ExecutionException e) {
+ e.printStackTrace();
+ } finally {
+ // 关闭cached线程池, 以便结束JVM进程, 否则需要60秒空闲才能没有线程
+ service.shutdown();
+ }
+
+ // 3. Thread + Future + Callable
+ ComputeThread task3 = new ComputeThread();
+ FutureTask futureTask3 = new FutureTask<>(task3);
+ new Thread(futureTask3).start();
+ try {
+ int result = (Integer)futureTask3.get();
+
+ // 确保 拿到result 并输出
+ System.out.println("3 : Thread + FutureTask + Callable异步计算结果为:"+result);
+ System.out.println("使用时间:"+ (System.currentTimeMillis()-start) + " ms");
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ } catch (ExecutionException e) {
+ e.printStackTrace();
+ }
+
+ // 4. Thread + FutureTask + Callable + join()
+ ComputeThread task4 = new ComputeThread();
+ FutureTask futureTask4 = new FutureTask<>(task4);
+ Thread thread = new Thread(futureTask4);
+ try {
+ thread.start();
+ thread.join();
+ int result = (Integer)futureTask4.get();
+
+ // 确保 拿到result 并输出
+ System.out.println("4 : Thread + FutureTask + Callable + join()异步计算结果为:"+result);
+ System.out.println("使用时间:"+ (System.currentTimeMillis()-start) + " ms");
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ } catch (ExecutionException e) {
+ e.printStackTrace();
+ }
+
+ // 5. CompletableFuture.get() + Callable
+// CountDownLatch countDownLatch = new CountDownLatch(1);
+ CompletableFuture cfSum = CompletableFuture.supplyAsync(()-> {
+ int result = sum();
+// countDownLatch.countDown();
+ return result;
+ });
+ try {
+ int result = cfSum.get();
+ cfSum.complete(100);
+ System.out.println("5 : CompletableFuture.get() + Callable异步计算结果为:"+result);
+ System.out.println("使用时间:"+ (System.currentTimeMillis()-start) + " ms");
+// countDownLatch.await();
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ } catch (ExecutionException e) {
+ e.printStackTrace();
+ }
+
+ // 6. CompletableFuture.join() + Callable
+ CompletableFuture cfSum6 = CompletableFuture.supplyAsync(()-> {
+ int result = sum();
+ return result;
+ });
+ int result = cfSum6.join();
+ System.out.println("6 : CompletableFuture.join() + Callable异步计算结果为:"+result);
System.out.println("使用时间:"+ (System.currentTimeMillis()-start) + " ms");
-
// 然后退出main线程
}
@@ -37,4 +128,30 @@ private static int fibo(int a) {
return 1;
return fibo(a-1) + fibo(a-2);
}
+
+}
+
+class ComputeThread implements Callable {
+ @Override
+ public Integer call() throws Exception {
+ Method method1 = Homework03.class.getDeclaredMethod("sum");
+ method1.setAccessible(true);
+ Integer res = (Integer)method1.invoke(null);
+ return res.intValue();
+ }
}
+
+class ComputeTask implements Callable {
+ private CountDownLatch countDownLatch;
+ public ComputeTask(CountDownLatch countDownLatch) {
+ this.countDownLatch = countDownLatch;
+ }
+ @Override
+ public Integer call() throws Exception {
+ Method method1 = Homework03.class.getDeclaredMethod("sum");
+ method1.setAccessible(true);
+ Integer res = (Integer)method1.invoke(null);
+ countDownLatch.countDown();
+ return res.intValue();
+ }
+}
\ No newline at end of file
diff --git a/04fx/spring01/src/main/java/io/kimmking/spring01/Faculty.java b/04fx/spring01/src/main/java/io/kimmking/spring01/Faculty.java
new file mode 100644
index 00000000..12cab37f
--- /dev/null
+++ b/04fx/spring01/src/main/java/io/kimmking/spring01/Faculty.java
@@ -0,0 +1,44 @@
+package io.kimmking.spring01;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.ToString;
+import org.springframework.beans.factory.BeanNameAware;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.context.annotation.Bean;
+
+import java.io.Serializable;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@ToString
+public class Faculty implements Serializable, BeanNameAware, ApplicationContextAware {
+ private int id;
+ private String name;
+
+ private String beanName;
+ private ApplicationContext applicationContext;
+
+ public void init(){
+ System.out.println("hello..., this is a faculty");
+ }
+
+ // 3、使用@Bean说明create()返回的是一个bean,并(在SpringDemo01的main()中)调用create()
+ // HelloBeanDefinitionRegistryPostProcessor中也可以调用不含@Bean注解的Create()方法,但需要:
+ // 3.1、调用registry.registerBeanDefinition()加入到context中
+ // 3.2、调用beanFactory.registerSingleton()加入到context中
+ @Bean
+ public static Faculty create(){
+ return new Faculty(1020,"Faculty1020","Faculty === POJO", null);
+ }
+
+ public void print() {
+ System.out.println(this.beanName);
+ System.out.println(" context.getBeanDefinitionNames() ===>> "
+ + String.join(",", applicationContext.getBeanDefinitionNames()));
+
+ }
+}
diff --git a/04fx/spring01/src/main/java/io/kimmking/spring01/Student.java b/04fx/spring01/src/main/java/io/kimmking/spring01/Student.java
index a2357bf6..73235391 100644
--- a/04fx/spring01/src/main/java/io/kimmking/spring01/Student.java
+++ b/04fx/spring01/src/main/java/io/kimmking/spring01/Student.java
@@ -27,7 +27,7 @@ public class Student implements Serializable, BeanNameAware, ApplicationContextA
private ApplicationContext applicationContext;
public void init(){
- System.out.println("hello...........");
+ System.out.println("hello...Student........");
}
public static Student create(){
diff --git a/04fx/spring01/src/main/java/io/kimmking/spring02/Klass.java b/04fx/spring01/src/main/java/io/kimmking/spring02/Klass.java
index 65268a7a..89ee75b4 100644
--- a/04fx/spring01/src/main/java/io/kimmking/spring02/Klass.java
+++ b/04fx/spring01/src/main/java/io/kimmking/spring02/Klass.java
@@ -1,15 +1,25 @@
package io.kimmking.spring02;
+import io.kimmking.spring01.Faculty;
import io.kimmking.spring01.Student;
import lombok.Data;
+import javax.annotation.Resource;
import java.util.List;
@Data
public class Klass {
List students;
-
+
+ // 1、xml方式配置 bean = faculty2040,并装入bean = class1 的属性teacher中
+ Faculty teacher;
+
+ // 2、xml方式配置 bean = faculty2080,使用@Resource注解注入到Klass实例(目前是class1)的属性teacher2080中
+ @Resource(name = "faculty2080")
+ Faculty teacher2080;
+
+
public void dong(){
System.out.println(this.getStudents());
}
diff --git a/04fx/spring01/src/main/java/io/kimmking/spring02/School.java b/04fx/spring01/src/main/java/io/kimmking/spring02/School.java
index 7c700e64..1155e920 100644
--- a/04fx/spring01/src/main/java/io/kimmking/spring02/School.java
+++ b/04fx/spring01/src/main/java/io/kimmking/spring02/School.java
@@ -1,6 +1,7 @@
package io.kimmking.spring02;
import io.kimmking.aop.ISchool;
+import io.kimmking.spring01.Faculty;
import io.kimmking.spring01.Student;
import lombok.Data;
import org.springframework.beans.factory.annotation.Autowired;
@@ -16,11 +17,17 @@ public class School implements ISchool {
@Resource(name = "student100")
Student student100;
-
+
+ @Resource(name = "student123")
+ Student student123;
+
+ @Resource(name = "faculty2040")
+ Faculty faculty2040;
+
@Override
public void ding(){
- System.out.println("Class1 have " + this.class1.getStudents().size() + " students and one is " + this.student100);
+ System.out.println("Class1 have " + this.class1.getStudents().size() + " students and one is " + this.student100 + ".");
}
diff --git a/04fx/spring01/src/main/java/io/kimmking/spring02/SpringDemo01.java b/04fx/spring01/src/main/java/io/kimmking/spring02/SpringDemo01.java
index a6263369..c97036ac 100644
--- a/04fx/spring01/src/main/java/io/kimmking/spring02/SpringDemo01.java
+++ b/04fx/spring01/src/main/java/io/kimmking/spring02/SpringDemo01.java
@@ -1,6 +1,7 @@
package io.kimmking.spring02;
import io.kimmking.aop.ISchool;
+import io.kimmking.spring01.Faculty;
import io.kimmking.spring01.Student;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
@@ -10,7 +11,8 @@ public class SpringDemo01 {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
-// Student student123 = context.getBean(Student.class);
+ Student student101 = (Student)context.getBean("s101");
+ System.out.println(student101.toString());
Student student123 = (Student) context.getBean("student123");
System.out.println(student123.toString());
@@ -49,5 +51,19 @@ public static void main(String[] args) {
if (s102 != null) {
System.out.println(s102);
}
+// Student s108 = (Student) context.getBean("s108");
+// if (s102 != null) {
+// System.out.println(s108);
+// }
+
+
+ // 3、使用@Bean说明create()返回的是一个bean,并(在SpringDemo01的main()中)调用create()
+ // HelloBeanDefinitionRegistryPostProcessor中也可以调用不含@Bean注解的Create()方法,但需要:
+ // 3.1、调用registry.registerBeanDefinition()加入到context中
+ // 3.2、调用beanFactory.registerSingleton()加入到context中
+ Faculty f1020 = Faculty.create();
+ if (f1020 != null) {
+ System.out.println(f1020);
+ }
}
}
diff --git a/04fx/spring01/src/main/resources/applicationContext.xml b/04fx/spring01/src/main/resources/applicationContext.xml
index 681cf409..b47617b9 100644
--- a/04fx/spring01/src/main/resources/applicationContext.xml
+++ b/04fx/spring01/src/main/resources/applicationContext.xml
@@ -19,6 +19,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -31,6 +45,11 @@
+
+
+
+
+