diff --git a/spring_aop_01/.gitignore b/spring_aop_01/.gitignore
new file mode 100644
index 0000000..5ff6309
--- /dev/null
+++ b/spring_aop_01/.gitignore
@@ -0,0 +1,38 @@
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### IntelliJ IDEA ###
+.idea/modules.xml
+.idea/jarRepositories.xml
+.idea/compiler.xml
+.idea/libraries/
+*.iws
+*.iml
+*.ipr
+
+### Eclipse ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
+
+### Mac OS ###
+.DS_Store
\ No newline at end of file
diff --git a/spring_aop_01/pom.xml b/spring_aop_01/pom.xml
new file mode 100644
index 0000000..9d00095
--- /dev/null
+++ b/spring_aop_01/pom.xml
@@ -0,0 +1,60 @@
+
+
+ 4.0.0
+
+ org.example
+ spring_aop_01
+ 1.0-SNAPSHOT
+
+
+ 17
+ 17
+ UTF-8
+
+
+
+
+
+ org.springframework
+ spring-context
+ 6.0.11
+
+
+
+ org.springframework
+ spring-aspects
+ 6.0.11
+
+
+
+ junit
+ junit
+ 4.13.2
+ test
+
+
+
+
+
+ aopalliance
+ aopalliance
+ 1.0
+
+
+
+ commons-logging
+ commons-logging
+ 1.2
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.12
+ provided
+
+
+
+
\ No newline at end of file
diff --git a/spring_aop_01/src/main/java/com/msb/aspect/DaoAspect.java b/spring_aop_01/src/main/java/com/msb/aspect/DaoAspect.java
new file mode 100644
index 0000000..da1620d
--- /dev/null
+++ b/spring_aop_01/src/main/java/com/msb/aspect/DaoAspect.java
@@ -0,0 +1,87 @@
+package com.msb.aspect;
+
+import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.*;
+import org.springframework.core.annotation.Order;
+import org.springframework.stereotype.Component;
+
+import java.util.Arrays;
+
+@Aspect
+@Component
+@Order(2)
+public class DaoAspect {
+
+ //定义公共切点, 切点表达式直接指向接口
+ @Pointcut("execution(* com.msb.dao.*.add*(..))")
+ public void addPointCut(){}
+
+ /**
+ * 前置通知: 切点方法执行之前先执行的功能
+ * 参数列表可以用JoinPoint接收切点对象
+ * 可以获取方法执行的参数
+ * */
+ @Before("addPointCut()")
+ public void methodBefore(JoinPoint joinPoint){
+ // joinPoint 目标增强的方法就是 addUser,可以获取参数等
+// Object[] args = joinPoint.getArgs();
+// System.out.println("args: "+ Arrays.toString(args));
+
+ // 前置通知
+ System.out.println("methodBefore invoked.....");
+ }
+
+ /**
+ * 后置通知:方法执行之后要增强的功能
+ * 无论切点方法是否出现异常都会执行的方法
+ * 参数列表可以用JoinPoint接收切点对象
+ * */
+ @After("addPointCut()")
+ public void methodAfter(JoinPoint joinPoint){
+ System.out.println("methodAfter invoked...");
+ }
+
+ /**
+ * 返回通知:切点方法正常运行结束后增强的功能
+ * 如果方法运行过程中出现异常,则该功能不运行
+ * 参数列表可以用 JoinPoint joinPoint接收切点对象
+ * 可以用Object res接收方法返回值,需要用returning指定返回值名称
+ * */
+ @AfterReturning(value = "addPointCut()", returning = "res")
+ public void methodAfterReturning(JoinPoint joinPoint, Object res){
+ System.out.println("methodAfterReturning invoked...");
+// System.out.println(res);
+ }
+
+ /**
+ * 异常通知:切点方法出现异常时运行的增强功能
+ * 如果方法运行没有出现异常,则该功能不运行
+ * 参数列表可以用Exception ex接收异常对象 需要通过throwing指定异常名称
+ * */
+ @AfterThrowing(value = "addPointCut()", throwing = "exception")
+ public void methodAfterThrowing(Exception exception){
+ System.out.println("methodAfterThrowing invoked....");
+// System.out.println(exception.getMessage());
+ }
+
+ /**
+ * 环绕通知:在切点方法之前和之后都进行功能的增强
+ * 需要在通知中定义方法执行的位置,并在执行位置之前和之后自定义增强的功能
+ * 方法列表可以通过ProceedingJoinPoint获取执行的切点
+ * 通过proceedingJoinPoint.proceed()方法控制切点方法的执行位置
+ * proceedingJoinPoint.proceed()方法会将切点方法的返回值获取到,并交给我们,可以做后续处理
+ * 我们在环绕通知的最后需要将切点方法的返回值继续向上返回,否则切点方法在执行时接收不到返回值
+ * */
+ @Around(value = "addPointCut()")
+ public Object methodAround(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
+ System.out.println("methodAroundA invoked...");
+ Object res = proceedingJoinPoint.proceed();
+ System.out.println("methodAroundB invoked...");
+ return res;
+ }
+
+
+
+
+}
diff --git a/spring_aop_01/src/main/java/com/msb/aspect/DaoAspect2.java b/spring_aop_01/src/main/java/com/msb/aspect/DaoAspect2.java
new file mode 100644
index 0000000..9a43c1c
--- /dev/null
+++ b/spring_aop_01/src/main/java/com/msb/aspect/DaoAspect2.java
@@ -0,0 +1,87 @@
+package com.msb.aspect;
+
+import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.*;
+import org.springframework.core.annotation.Order;
+import org.springframework.stereotype.Component;
+
+import java.util.Arrays;
+
+@Aspect
+@Component
+@Order(1)
+public class DaoAspect2 {
+
+ //定义公共切点, 切点表达式直接指向接口
+ @Pointcut("execution(* com.msb.dao.*.add*(..))")
+ public void addPointCut(){}
+
+ /**
+ * 前置通知: 切点方法执行之前先执行的功能
+ * 参数列表可以用JoinPoint接收切点对象
+ * 可以获取方法执行的参数
+ * */
+ @Before("addPointCut()")
+ public void methodBefore(JoinPoint joinPoint){
+// // joinPoint 目标增强的方法就是 addUser,可以获取参数等
+// Object[] args = joinPoint.getArgs();
+// System.out.println("args: "+ Arrays.toString(args));
+
+ // 前置通知
+ System.out.println("methodBefore2 invoked.....");
+ }
+
+ /**
+ * 后置通知:方法执行之后要增强的功能
+ * 无论切点方法是否出现异常都会执行的方法
+ * 参数列表可以用JoinPoint接收切点对象
+ * */
+ @After("addPointCut()")
+ public void methodAfter(JoinPoint joinPoint){
+ System.out.println("methodAfter2 invoked...");
+ }
+
+ /**
+ * 返回通知:切点方法正常运行结束后增强的功能
+ * 如果方法运行过程中出现异常,则该功能不运行
+ * 参数列表可以用 JoinPoint joinPoint接收切点对象
+ * 可以用Object res接收方法返回值,需要用returning指定返回值名称
+ * */
+ @AfterReturning(value = "addPointCut()", returning = "res")
+ public void methodAfterReturning(JoinPoint joinPoint, Object res){
+ System.out.println("methodAfterReturning2 invoked...");
+// System.out.println(res);
+ }
+
+ /**
+ * 异常通知:切点方法出现异常时运行的增强功能
+ * 如果方法运行没有出现异常,则该功能不运行
+ * 参数列表可以用Exception ex接收异常对象 需要通过throwing指定异常名称
+ * */
+ @AfterThrowing(value = "addPointCut()", throwing = "exception")
+ public void methodAfterThrowing(Exception exception){
+ System.out.println("methodAfterThrowing2 invoked....");
+// System.out.println(exception.getMessage());
+ }
+
+ /**
+ * 环绕通知:在切点方法之前和之后都进行功能的增强
+ * 需要在通知中定义方法执行的位置,并在执行位置之前和之后自定义增强的功能
+ * 方法列表可以通过ProceedingJoinPoint获取执行的切点
+ * 通过proceedingJoinPoint.proceed()方法控制切点方法的执行位置
+ * proceedingJoinPoint.proceed()方法会将切点方法的返回值获取到,并交给我们,可以做后续处理
+ * 我们在环绕通知的最后需要将切点方法的返回值继续向上返回,否则切点方法在执行时接收不到返回值
+ * */
+ @Around(value = "addPointCut()")
+ public Object methodAround(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
+ System.out.println("methodAroundA2 invoked...");
+ Object res = proceedingJoinPoint.proceed();
+ System.out.println("methodAroundB2 invoked...");
+ return res;
+ }
+
+
+
+
+}
diff --git a/spring_aop_01/src/main/java/com/msb/config/SpringConfig.java b/spring_aop_01/src/main/java/com/msb/config/SpringConfig.java
new file mode 100644
index 0000000..d77448d
--- /dev/null
+++ b/spring_aop_01/src/main/java/com/msb/config/SpringConfig.java
@@ -0,0 +1,11 @@
+package com.msb.config;
+
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.EnableAspectJAutoProxy;
+
+@ComponentScan("com.msb")
+@Configuration
+@EnableAspectJAutoProxy(proxyTargetClass = true)
+public class SpringConfig {
+}
diff --git a/spring_aop_01/src/main/java/com/msb/dao/EmpDao.java b/spring_aop_01/src/main/java/com/msb/dao/EmpDao.java
new file mode 100644
index 0000000..a7b42a9
--- /dev/null
+++ b/spring_aop_01/src/main/java/com/msb/dao/EmpDao.java
@@ -0,0 +1,5 @@
+package com.msb.dao;
+
+public interface EmpDao {
+ Integer addEmp(int empno, String name, String Job);
+}
diff --git a/spring_aop_01/src/main/java/com/msb/dao/UserDao.java b/spring_aop_01/src/main/java/com/msb/dao/UserDao.java
new file mode 100644
index 0000000..8327be6
--- /dev/null
+++ b/spring_aop_01/src/main/java/com/msb/dao/UserDao.java
@@ -0,0 +1,5 @@
+package com.msb.dao;
+
+public interface UserDao {
+ Integer addUser(Integer userId, String username);
+}
diff --git a/spring_aop_01/src/main/java/com/msb/dao/impl/EmpDaoImpl.java b/spring_aop_01/src/main/java/com/msb/dao/impl/EmpDaoImpl.java
new file mode 100644
index 0000000..8d5f172
--- /dev/null
+++ b/spring_aop_01/src/main/java/com/msb/dao/impl/EmpDaoImpl.java
@@ -0,0 +1,15 @@
+package com.msb.dao.impl;
+
+import com.msb.dao.EmpDao;
+import com.msb.dao.UserDao;
+import com.msb.service.EmpService;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public class EmpDaoImpl implements EmpDao {
+ @Override
+ public Integer addEmp(int empno, String name, String Job) {
+ System.out.println("EmpDaoImpl addEmp() ....");
+ return 1;
+ }
+}
diff --git a/spring_aop_01/src/main/java/com/msb/dao/impl/UserDaoImpl.java b/spring_aop_01/src/main/java/com/msb/dao/impl/UserDaoImpl.java
new file mode 100644
index 0000000..a8a130b
--- /dev/null
+++ b/spring_aop_01/src/main/java/com/msb/dao/impl/UserDaoImpl.java
@@ -0,0 +1,14 @@
+package com.msb.dao.impl;
+
+import com.msb.dao.UserDao;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public class UserDaoImpl implements UserDao {
+ @Override
+ public Integer addUser(Integer userId, String username) {
+ System.out.println("UserDaoImpl add ....");
+// int i = 1/0;
+ return 1;
+ }
+}
diff --git a/spring_aop_01/src/main/java/com/msb/service/EmpService.java b/spring_aop_01/src/main/java/com/msb/service/EmpService.java
new file mode 100644
index 0000000..ed9cc77
--- /dev/null
+++ b/spring_aop_01/src/main/java/com/msb/service/EmpService.java
@@ -0,0 +1,6 @@
+package com.msb.service;
+
+public interface EmpService {
+
+ int addEmp(int empno, String name, String job);
+}
diff --git a/spring_aop_01/src/main/java/com/msb/service/UserService.java b/spring_aop_01/src/main/java/com/msb/service/UserService.java
new file mode 100644
index 0000000..6e4e7dc
--- /dev/null
+++ b/spring_aop_01/src/main/java/com/msb/service/UserService.java
@@ -0,0 +1,5 @@
+package com.msb.service;
+
+public interface UserService {
+ Integer addUser(Integer userId, String username);
+}
diff --git a/spring_aop_01/src/main/java/com/msb/service/impl/EmpServiceImpl.java b/spring_aop_01/src/main/java/com/msb/service/impl/EmpServiceImpl.java
new file mode 100644
index 0000000..ecec6fc
--- /dev/null
+++ b/spring_aop_01/src/main/java/com/msb/service/impl/EmpServiceImpl.java
@@ -0,0 +1,24 @@
+package com.msb.service.impl;
+
+import com.msb.dao.EmpDao;
+import com.msb.service.EmpService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class EmpServiceImpl implements EmpService {
+
+// @Autowired
+ private final EmpDao empDao;
+
+ public EmpServiceImpl(EmpDao empDao){
+ this.empDao = empDao;
+ }
+
+ @Override
+ public int addEmp(int empno, String name, String job) {
+ System.out.println("empServiceImpl add()...");
+
+ return empDao.addEmp(empno, name, job);
+ }
+}
diff --git a/spring_aop_01/src/main/java/com/msb/service/impl/UserServiceImpl.java b/spring_aop_01/src/main/java/com/msb/service/impl/UserServiceImpl.java
new file mode 100644
index 0000000..ee5b646
--- /dev/null
+++ b/spring_aop_01/src/main/java/com/msb/service/impl/UserServiceImpl.java
@@ -0,0 +1,22 @@
+package com.msb.service.impl;
+
+import com.msb.dao.UserDao;
+import com.msb.service.UserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class UserServiceImpl implements UserService {
+// @Autowired
+ private final UserDao userDao;
+
+ public UserServiceImpl(UserDao userDao){
+ this.userDao = userDao;
+ }
+ @Override
+ public Integer addUser(Integer userId, String username) {
+ System.out.println("UserServiceImpl add...");
+
+ return this.userDao.addUser(userId, username);
+ }
+}
diff --git a/spring_aop_01/src/main/resources/applicationContext.xml b/spring_aop_01/src/main/resources/applicationContext.xml
new file mode 100644
index 0000000..1702484
--- /dev/null
+++ b/spring_aop_01/src/main/resources/applicationContext.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/spring_aop_01/src/test/java/com/msb/TestAspect.java b/spring_aop_01/src/test/java/com/msb/TestAspect.java
new file mode 100644
index 0000000..04ef3d9
--- /dev/null
+++ b/spring_aop_01/src/test/java/com/msb/TestAspect.java
@@ -0,0 +1,32 @@
+package com.msb;
+
+import com.msb.config.SpringConfig;
+import com.msb.dao.UserDao;
+import com.msb.service.UserService;
+import org.junit.Test;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.AnnotationConfigApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+public class TestAspect {
+
+ @Test
+ public void testGetBean(){
+ ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
+
+ // userDao 生成一个对象再自动生产一个代理对象,然后再返回代理对象
+ UserDao userDao = applicationContext.getBean(UserDao.class);
+ Integer rows = userDao.addUser(1, "张三");
+ System.out.println(rows);
+ }
+
+ @Test
+ public void testGetBean2(){
+ ApplicationContext applicationContext = new AnnotationConfigApplicationContext(SpringConfig.class);
+ UserDao userDao = applicationContext.getBean(UserDao.class);
+ Integer rows = userDao.addUser(1, "张三");
+ // System.out.println(userDao.getClass().getSimpleName());
+ System.out.println(rows);
+ }
+
+}
diff --git a/spring_aop_01/src/test/java/com/msb/TestCglib.java b/spring_aop_01/src/test/java/com/msb/TestCglib.java
new file mode 100644
index 0000000..eb3642c
--- /dev/null
+++ b/spring_aop_01/src/test/java/com/msb/TestCglib.java
@@ -0,0 +1,63 @@
+package com.msb;
+
+import org.junit.Test;
+import org.springframework.cglib.proxy.Enhancer;
+import org.springframework.cglib.proxy.MethodInterceptor;
+import org.springframework.cglib.proxy.MethodProxy;
+
+import java.lang.reflect.Method;
+
+public class TestCglib {
+
+ @Test
+ public void testCglib(){
+ Person2 person2 = new Person2();
+ // 获取一个Person的代理对象
+ // 1 获得一个Enhancer对象
+ Enhancer enhancer=new Enhancer();
+ // 2 设置父类字节码
+ enhancer.setSuperclass(person2.getClass());
+ // 3 获取MethodIntercepter对象 用于定义增强规则
+ MethodInterceptor methodInterceptor=new MethodInterceptor() {
+ @Override
+ public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {
+ /*Object o, 生成之后的代理对象 personProxy
+ Method method, 父类中原本要执行的方法 Person>>> eat()
+ Object[] objects, 方法在调用时传入的实参数组
+ MethodProxy methodProxy 子类中重写父类的方法 personProxy >>> eat()
+ */
+ Object res =null;
+ if(method.getName().equals("eat")){
+ // 如果是eat方法 则增强并运行
+ System.out.println("饭前洗手");
+ res=methodProxy.invokeSuper(o,objects);
+ System.out.println("饭后刷碗");
+ }else{
+ // 如果是其他方法 不增强运行
+ res=methodProxy.invokeSuper(o,objects); // 子类对象方法在执行,默认会调用父类对应被重写的方法
+ }
+ return res;
+ }
+ };
+ // 4 设置methodInterceptor
+ enhancer.setCallback(methodInterceptor);
+ // 5 获得代理对象
+ Person2 personProxy = (Person2) enhancer.create();
+ // 6 使用代理对象完成功能
+ personProxy.eat("包子");
+
+
+// person2.eat("包子");
+ }
+}
+
+
+class Person2{
+
+ public Person2(){
+ }
+
+ public void eat(String foodName) {
+ System.out.println("正在吃"+foodName);
+ }
+}
\ No newline at end of file
diff --git a/spring_aop_01/src/test/java/com/msb/TestProxy.java b/spring_aop_01/src/test/java/com/msb/TestProxy.java
new file mode 100644
index 0000000..de1b418
--- /dev/null
+++ b/spring_aop_01/src/test/java/com/msb/TestProxy.java
@@ -0,0 +1,68 @@
+package com.msb;
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+
+public class TestProxy {
+ public static void main(String[] args) {
+ Dinner dinner = new Person1("张三");
+
+ // 通过Proxy 动态代理获取一个代理对象,在代理对象里面,对某个方法进行增强
+ // ClassLoader loader, 被代理对象的类加载器
+ ClassLoader classLoader = dinner.getClass().getClassLoader();
+
+ // Class>[] interfaces, 被代理对象所实现的所有接口
+ Class[] interfaces= dinner.getClass().getInterfaces();
+
+ // InvocationHandler h 执行处理器对象,专门定义增强的规则
+ InvocationHandler handler = new InvocationHandler(){
+ // invoke 当我们让代理对象调用任何方法时,都会触发invoke方法的执行
+ public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
+// Object proxy, 代理对象
+// Method method,被代理的方法
+// Object[] args,被代理方法运行时的实参
+ Object res=null;
+ if(method.getName().equals("eat")){
+ System.out.println("饭前洗手");
+ // 让原有的eat的方法去运行
+ res =method.invoke(dinner, args);
+ System.out.println("饭后刷碗");
+ }else{
+ // 如果是其他方法,那么正常执行就可以了
+ res =method.invoke(dinner, args);
+ }
+ return res;
+ }
+ };
+
+
+ Dinner dinnerProxy = (Dinner) Proxy.newProxyInstance(classLoader, interfaces, handler);
+ dinnerProxy.eat("包子");
+ dinnerProxy.drink();
+ }
+
+}
+
+
+interface Dinner{
+ void eat(String foodName);
+ void drink();
+}
+class Person1 implements Dinner{
+ private String name;
+
+ public Person1(String name){
+ this.name = name;
+ }
+
+ @Override
+ public void eat(String foodName) {
+ System.out.println(name+"正在吃"+foodName);
+ }
+
+ @Override
+ public void drink() {
+ System.out.println(name+"正在喝茶");
+ }
+}
\ No newline at end of file
diff --git a/spring_aop_01/src/test/java/com/msb/TestStaticProxy.java b/spring_aop_01/src/test/java/com/msb/TestStaticProxy.java
new file mode 100644
index 0000000..cba8c4e
--- /dev/null
+++ b/spring_aop_01/src/test/java/com/msb/TestStaticProxy.java
@@ -0,0 +1,43 @@
+package com.msb;
+
+public class TestStaticProxy {
+ public static void main(String[] args) {
+ Person person = new Person("张三");
+ Court court = new Lawyer(person);
+ court.doCourt();
+ }
+}
+
+interface Court{
+ void doCourt();
+}
+
+// 静态的代理类
+class Lawyer implements Court {
+ private Person person;
+
+ public Lawyer(Person person){
+ this.person = person;
+ }
+
+ @Override
+ public void doCourt() {
+ System.out.println("律师证明张三没有再案发现场!");
+ person.doCourt();
+ }
+}
+
+// 面向的类,不需要修改的被代理类
+class Person implements Court{
+ private String name;
+
+ public Person(String name){
+ this.name= name;
+ }
+
+ @Override
+ public void doCourt(){
+ System.out.println(name+"说:我没有杀人!");
+ }
+}
+
diff --git a/spring_ioc_01/.gitignore b/spring_ioc_01/.gitignore
new file mode 100644
index 0000000..5ff6309
--- /dev/null
+++ b/spring_ioc_01/.gitignore
@@ -0,0 +1,38 @@
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### IntelliJ IDEA ###
+.idea/modules.xml
+.idea/jarRepositories.xml
+.idea/compiler.xml
+.idea/libraries/
+*.iws
+*.iml
+*.ipr
+
+### Eclipse ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
+
+### Mac OS ###
+.DS_Store
\ No newline at end of file
diff --git a/spring_ioc_01/pom.xml b/spring_ioc_01/pom.xml
new file mode 100644
index 0000000..514e2d6
--- /dev/null
+++ b/spring_ioc_01/pom.xml
@@ -0,0 +1,45 @@
+
+
+ 4.0.0
+
+ org.example
+ spring_ioc_01
+ 1.0-SNAPSHOT
+ jar
+
+
+
+ org.springframework
+ spring-context
+ 6.0.11
+
+
+
+ junit
+ junit
+ 4.13.2
+ test
+
+
+
+ com.alibaba
+ druid
+ 1.2.18
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.33
+
+
+
+
+ 17
+ 17
+ 17
+
+
+
\ No newline at end of file
diff --git a/spring_ioc_01/src/main/java/com/msb/bean/Book.java b/spring_ioc_01/src/main/java/com/msb/bean/Book.java
new file mode 100644
index 0000000..dab6d66
--- /dev/null
+++ b/spring_ioc_01/src/main/java/com/msb/bean/Book.java
@@ -0,0 +1,42 @@
+package com.msb.bean;
+
+/**
+ * @Author: Ma HaiYang
+ * @Description: MircoMessage:Mark_7001
+ */
+public class Book {
+ private String bname;
+ private String author;
+
+ @Override
+ public String toString() {
+ return "Book{" +
+ "bname='" + bname + '\'' +
+ ", author='" + author + '\'' +
+ '}';
+ }
+
+ public Book() {
+ }
+
+ public Book(String bname, String author) {
+ this.bname = bname;
+ this.author = author;
+ }
+
+ public String getBname() {
+ return bname;
+ }
+
+ public void setBname(String bname) {
+ this.bname = bname;
+ }
+
+ public String getAuthor() {
+ return author;
+ }
+
+ public void setAuthor(String author) {
+ this.author = author;
+ }
+}
diff --git a/spring_ioc_01/src/main/java/com/msb/bean/Cat.java b/spring_ioc_01/src/main/java/com/msb/bean/Cat.java
new file mode 100644
index 0000000..cff4235
--- /dev/null
+++ b/spring_ioc_01/src/main/java/com/msb/bean/Cat.java
@@ -0,0 +1,42 @@
+package com.msb.bean;
+
+/**
+ * @Author: Ma HaiYang
+ * @Description: MircoMessage:Mark_7001
+ */
+public class Cat {
+ private String name;
+ private Mouse mouse1;
+
+ @Override
+ public String toString() {
+ return "Cat{" +
+ "name='" + name + '\'' +
+ ", mouse1=" + mouse1 +
+ '}';
+ }
+
+ public Cat() {
+ }
+
+ public Cat(String name, Mouse mouse1) {
+ this.name = name;
+ this.mouse1 = mouse1;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public Mouse getMouse1() {
+ return mouse1;
+ }
+
+ public void setMouse1(Mouse mouse1) {
+ this.mouse1 = mouse1;
+ }
+}
diff --git a/spring_ioc_01/src/main/java/com/msb/bean/Dept.java b/spring_ioc_01/src/main/java/com/msb/bean/Dept.java
new file mode 100644
index 0000000..01bab75
--- /dev/null
+++ b/spring_ioc_01/src/main/java/com/msb/bean/Dept.java
@@ -0,0 +1,8 @@
+package com.msb.bean;
+
+/**
+ * @Author: Ma HaiYang
+ * @Description: MircoMessage:Mark_7001
+ */
+public class Dept {
+}
diff --git a/spring_ioc_01/src/main/java/com/msb/bean/Emp.java b/spring_ioc_01/src/main/java/com/msb/bean/Emp.java
new file mode 100644
index 0000000..1c12a6d
--- /dev/null
+++ b/spring_ioc_01/src/main/java/com/msb/bean/Emp.java
@@ -0,0 +1,21 @@
+package com.msb.bean;
+
+
+/**
+ * @Author: Ma HaiYang
+ * @Description: MircoMessage:Mark_7001
+ */
+public class Emp {
+ private Dept dept;
+
+ public void setDept(Dept dept) {
+ this.dept = dept;
+ }
+
+ @Override
+ public String toString() {
+ return "Emp{" +
+ "dept=" + dept +
+ '}';
+ }
+}
diff --git a/spring_ioc_01/src/main/java/com/msb/bean/Mouse.java b/spring_ioc_01/src/main/java/com/msb/bean/Mouse.java
new file mode 100644
index 0000000..ee954bf
--- /dev/null
+++ b/spring_ioc_01/src/main/java/com/msb/bean/Mouse.java
@@ -0,0 +1,41 @@
+package com.msb.bean;
+
+import java.util.Date;
+
+
+public class Mouse {
+ private String name;
+ private Date birthdate;
+
+ @Override
+ public String toString() {
+ return "Mouse{" +
+ "name='" + name + '\'' +
+ ", birthdate=" + birthdate +
+ '}';
+ }
+
+ public Mouse() {
+ }
+
+ public Mouse(String name, Date birthdate) {
+ this.name = name;
+ this.birthdate = birthdate;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public Date getBirthdate() {
+ return birthdate;
+ }
+
+ public void setBirthdate(Date birthdate) {
+ this.birthdate = birthdate;
+ }
+}
diff --git a/spring_ioc_01/src/main/java/com/msb/bean/Student.java b/spring_ioc_01/src/main/java/com/msb/bean/Student.java
new file mode 100644
index 0000000..152dc66
--- /dev/null
+++ b/spring_ioc_01/src/main/java/com/msb/bean/Student.java
@@ -0,0 +1,81 @@
+package com.msb.bean;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * @Author: Ma HaiYang
+ * @Description: MircoMessage:Mark_7001
+ */
+public class Student {
+ private String[] books;
+ private Set bookSet;
+ private List bookList;
+ private Map bookMap;
+ private List bookList2;
+
+ @Override
+ public String toString() {
+ return "Student{" +
+ "books=" + Arrays.toString(books) +
+ ", bookSet=" + bookSet +
+ ", bookList=" + bookList +
+ ", bookMap=" + bookMap +
+ ", bookList2=" + bookList2 +
+ '}';
+ }
+
+ public String[] getBooks() {
+ return books;
+ }
+
+ public void setBooks(String[] books) {
+ this.books = books;
+ }
+
+ public Set getBookSet() {
+ return bookSet;
+ }
+
+ public void setBookSet(Set bookSet) {
+ this.bookSet = bookSet;
+ }
+
+ public List getBookList() {
+ return bookList;
+ }
+
+ public void setBookList(List bookList) {
+ this.bookList = bookList;
+ }
+
+ public Map getBookMap() {
+ return bookMap;
+ }
+
+ public void setBookMap(Map bookMap) {
+ this.bookMap = bookMap;
+ }
+
+ public List getBookList2() {
+ return bookList2;
+ }
+
+ public void setBookList2(List bookList2) {
+ this.bookList2 = bookList2;
+ }
+
+ public Student() {
+ }
+
+ public Student(String[] books, Set bookSet, List bookList, Map bookMap, List bookList2) {
+
+ this.books = books;
+ this.bookSet = bookSet;
+ this.bookList = bookList;
+ this.bookMap = bookMap;
+ this.bookList2 = bookList2;
+ }
+}
diff --git a/spring_ioc_01/src/main/java/com/msb/bean/User.java b/spring_ioc_01/src/main/java/com/msb/bean/User.java
new file mode 100644
index 0000000..24403c5
--- /dev/null
+++ b/spring_ioc_01/src/main/java/com/msb/bean/User.java
@@ -0,0 +1,51 @@
+package com.msb.bean;
+
+public class User {
+ private Integer userid;
+ private String username;
+ private String password;
+
+ public User(){
+// System.out.println("没有参数的构造方法");
+ System.out.println("第一步:构造user");
+ }
+
+ public User(Integer userid, String username, String password){
+ this.userid = userid;
+ this.username = username;
+ this.password = password;
+
+ System.out.println("有参数的构造方法");
+ }
+
+ public void initMethod(){
+ System.out.println("第三步:初始化");
+ }
+
+ public void destroyMethod(){
+ System.out.println("第五步:销毁对象");
+ }
+
+ public void setUserid(Integer userid) {
+ this.userid = userid;
+ System.out.println("第二步:设置属性");
+ }
+
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ @Override
+ public String toString() {
+ return "User{" +
+ "userid=" + userid +
+ ", username='" + username + '\'' +
+ ", password='" + password + '\'' +
+ '}';
+ }
+}
diff --git a/spring_ioc_01/src/main/resources/applicationContext.xml b/spring_ioc_01/src/main/resources/applicationContext.xml
new file mode 100644
index 0000000..6809769
--- /dev/null
+++ b/spring_ioc_01/src/main/resources/applicationContext.xml
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/spring_ioc_01/src/main/resources/applicationContext1.xml b/spring_ioc_01/src/main/resources/applicationContext1.xml
new file mode 100644
index 0000000..faa3eec
--- /dev/null
+++ b/spring_ioc_01/src/main/resources/applicationContext1.xml
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/spring_ioc_01/src/main/resources/applicationContext2.xml b/spring_ioc_01/src/main/resources/applicationContext2.xml
new file mode 100644
index 0000000..faa3eec
--- /dev/null
+++ b/spring_ioc_01/src/main/resources/applicationContext2.xml
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/spring_ioc_01/src/main/resources/applicationContext3.xml b/spring_ioc_01/src/main/resources/applicationContext3.xml
new file mode 100644
index 0000000..4c1ca52
--- /dev/null
+++ b/spring_ioc_01/src/main/resources/applicationContext3.xml
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ JAVA
+ MySQL
+ Spring
+
+
+
+
+
+
+ JAVA
+ MySQL
+ Spring
+
+
+
+
+
+
+ JAVA
+ MySQL
+ Spring
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/spring_ioc_01/src/main/resources/applicationContext4.xml b/spring_ioc_01/src/main/resources/applicationContext4.xml
new file mode 100644
index 0000000..88b0259
--- /dev/null
+++ b/spring_ioc_01/src/main/resources/applicationContext4.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/spring_ioc_01/src/main/resources/applicationContext5.xml b/spring_ioc_01/src/main/resources/applicationContext5.xml
new file mode 100644
index 0000000..16b12a6
--- /dev/null
+++ b/spring_ioc_01/src/main/resources/applicationContext5.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/spring_ioc_01/src/main/resources/applicationContext6.xml b/spring_ioc_01/src/main/resources/applicationContext6.xml
new file mode 100644
index 0000000..a163c5b
--- /dev/null
+++ b/spring_ioc_01/src/main/resources/applicationContext6.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/spring_ioc_01/src/main/resources/jdbc.properties b/spring_ioc_01/src/main/resources/jdbc.properties
new file mode 100644
index 0000000..3f863ac
--- /dev/null
+++ b/spring_ioc_01/src/main/resources/jdbc.properties
@@ -0,0 +1,4 @@
+jdbc_username=root
+jdbc_password=12345678
+jdbc_driver=com.mysql.cj.jdbc.Driver
+jdbc_url=jdbc:mysql://127.0.0.1:3306/learnjdbc?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
\ No newline at end of file
diff --git a/spring_ioc_01/src/test/java/com/msb/Test1.java b/spring_ioc_01/src/test/java/com/msb/Test1.java
new file mode 100644
index 0000000..741760f
--- /dev/null
+++ b/spring_ioc_01/src/test/java/com/msb/Test1.java
@@ -0,0 +1,31 @@
+package com.msb;
+
+import com.msb.bean.User;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+public class Test1 {
+ @org.junit.Test
+ public void testGetBean(){
+ ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
+ User user1 = applicationContext.getBean("user1", User.class);
+ System.out.println(user1);
+
+
+ User user2 = applicationContext.getBean("user2", User.class);
+ System.out.println(user2);
+
+ User user3 = applicationContext.getBean("user3", User.class);
+ System.out.println(user3);
+
+ User user4 = applicationContext.getBean("user4", User.class);
+ System.out.println(user4);
+
+ User user5 = applicationContext.getBean("user5", User.class);
+ System.out.println(user5);
+
+ User user6 = applicationContext.getBean("user6", User.class);
+ System.out.println(user6);
+
+ }
+}
diff --git a/spring_ioc_01/src/test/java/com/msb/Test2.java b/spring_ioc_01/src/test/java/com/msb/Test2.java
new file mode 100644
index 0000000..018013b
--- /dev/null
+++ b/spring_ioc_01/src/test/java/com/msb/Test2.java
@@ -0,0 +1,26 @@
+package com.msb;
+
+import com.msb.bean.Cat;
+import com.msb.bean.Mouse;
+import org.junit.Test;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+public class Test2 {
+
+ @Test
+ public void testGetBean(){
+ ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext1.xml");
+ Mouse mouse = applicationContext.getBean("mouse1", Mouse.class);
+ System.out.println(mouse);
+
+
+ Cat cat1 = applicationContext.getBean("cat1", Cat.class);
+ System.out.println(cat1);
+
+ Cat cat2 = applicationContext.getBean("cat2", Cat.class);
+ System.out.println(cat2);
+
+
+ }
+}
diff --git a/spring_ioc_01/src/test/java/com/msb/Test3.java b/spring_ioc_01/src/test/java/com/msb/Test3.java
new file mode 100644
index 0000000..8d41424
--- /dev/null
+++ b/spring_ioc_01/src/test/java/com/msb/Test3.java
@@ -0,0 +1,25 @@
+package com.msb;
+
+import com.msb.bean.Mouse;
+import com.msb.bean.Student;
+import org.junit.Test;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+import java.util.Arrays;
+
+public class Test3 {
+
+ @Test
+ public void testGetBean(){
+ ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext3.xml");
+ Student student1 = applicationContext.getBean("student1", Student.class);
+ System.out.println(Arrays.toString(student1.getBooks()));
+ System.out.println(student1.getBookSet());
+ System.out.println(student1.getBookList());
+ System.out.println(student1.getBookMap());
+ System.out.println(student1.getBookList2());
+
+
+ }
+}
diff --git a/spring_ioc_01/src/test/java/com/msb/Test4.java b/spring_ioc_01/src/test/java/com/msb/Test4.java
new file mode 100644
index 0000000..9fbd172
--- /dev/null
+++ b/spring_ioc_01/src/test/java/com/msb/Test4.java
@@ -0,0 +1,18 @@
+package com.msb;
+
+import com.msb.bean.User;
+import org.junit.Test;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+public class Test4 {
+
+ @Test
+ public void testGetBean(){
+ ClassPathXmlApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext4.xml");
+ User user = applicationContext.getBean("user", User.class);
+ System.out.println("第四部: 获取");
+ applicationContext.close();
+
+
+ }
+}
diff --git a/spring_ioc_01/src/test/java/com/msb/Test5.java b/spring_ioc_01/src/test/java/com/msb/Test5.java
new file mode 100644
index 0000000..7335210
--- /dev/null
+++ b/spring_ioc_01/src/test/java/com/msb/Test5.java
@@ -0,0 +1,17 @@
+package com.msb;
+
+import com.msb.bean.Emp;
+import com.msb.bean.User;
+import org.junit.Test;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+public class Test5 {
+
+ @Test
+ public void testGetBean(){
+ ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext5.xml");
+ Emp emp = applicationContext.getBean("emp", Emp.class);
+ System.out.println(emp);
+ }
+}
diff --git a/spring_ioc_01/src/test/java/com/msb/Test6.java b/spring_ioc_01/src/test/java/com/msb/Test6.java
new file mode 100644
index 0000000..e701d81
--- /dev/null
+++ b/spring_ioc_01/src/test/java/com/msb/Test6.java
@@ -0,0 +1,16 @@
+package com.msb;
+
+import com.alibaba.druid.pool.DruidDataSource;
+import org.junit.Test;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+public class Test6 {
+
+ @Test
+ public void testGetBean(){
+ ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext6.xml");
+ DruidDataSource druidDataSource = applicationContext.getBean("dataSource", DruidDataSource.class);
+ System.out.println(druidDataSource);
+ }
+}
diff --git a/spring_ioc_02/.gitignore b/spring_ioc_02/.gitignore
new file mode 100644
index 0000000..5ff6309
--- /dev/null
+++ b/spring_ioc_02/.gitignore
@@ -0,0 +1,38 @@
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### IntelliJ IDEA ###
+.idea/modules.xml
+.idea/jarRepositories.xml
+.idea/compiler.xml
+.idea/libraries/
+*.iws
+*.iml
+*.ipr
+
+### Eclipse ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
+
+### Mac OS ###
+.DS_Store
\ No newline at end of file
diff --git a/spring_ioc_02/pom.xml b/spring_ioc_02/pom.xml
new file mode 100644
index 0000000..ee323c8
--- /dev/null
+++ b/spring_ioc_02/pom.xml
@@ -0,0 +1,31 @@
+
+
+ 4.0.0
+
+ org.example
+ spring_ioc_02
+ 1.0-SNAPSHOT
+
+
+ 17
+ 17
+ UTF-8
+
+
+
+
+ org.springframework
+ spring-context
+ 6.0.11
+
+
+
+ junit
+ junit
+ 4.13.2
+ test
+
+
+
\ No newline at end of file
diff --git a/spring_ioc_02/src/main/java/com/msb/bean/Student.java b/spring_ioc_02/src/main/java/com/msb/bean/Student.java
new file mode 100644
index 0000000..a662b8f
--- /dev/null
+++ b/spring_ioc_02/src/main/java/com/msb/bean/Student.java
@@ -0,0 +1,11 @@
+package com.msb.bean;
+
+import org.springframework.stereotype.Service;
+
+@Service
+public class Student {
+ @Override
+ public String toString() {
+ return "Student{}";
+ }
+}
diff --git a/spring_ioc_02/src/main/java/com/msb/bean/User.java b/spring_ioc_02/src/main/java/com/msb/bean/User.java
new file mode 100644
index 0000000..c63ac6a
--- /dev/null
+++ b/spring_ioc_02/src/main/java/com/msb/bean/User.java
@@ -0,0 +1,12 @@
+package com.msb.bean;
+
+
+import org.springframework.stereotype.Component;
+
+@Component
+public class User {
+ @Override
+ public String toString() {
+ return "User{}";
+ }
+}
diff --git a/spring_ioc_02/src/main/java/com/msb/config/SpringConfig.java b/spring_ioc_02/src/main/java/com/msb/config/SpringConfig.java
new file mode 100644
index 0000000..b130cc1
--- /dev/null
+++ b/spring_ioc_02/src/main/java/com/msb/config/SpringConfig.java
@@ -0,0 +1,9 @@
+package com.msb.config;
+
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.PropertySource;
+
+@ComponentScan(basePackages = "com.msb")
+@PropertySource("classpath:demo.properties")
+public class SpringConfig {
+}
diff --git a/spring_ioc_02/src/main/java/com/msb/controller/UserController.java b/spring_ioc_02/src/main/java/com/msb/controller/UserController.java
new file mode 100644
index 0000000..fda8dde
--- /dev/null
+++ b/spring_ioc_02/src/main/java/com/msb/controller/UserController.java
@@ -0,0 +1,7 @@
+package com.msb.controller;
+
+import org.springframework.stereotype.Controller;
+
+@Controller
+public class UserController {
+}
diff --git a/spring_ioc_02/src/main/java/com/msb/dao/UserDao.java b/spring_ioc_02/src/main/java/com/msb/dao/UserDao.java
new file mode 100644
index 0000000..6ca96fa
--- /dev/null
+++ b/spring_ioc_02/src/main/java/com/msb/dao/UserDao.java
@@ -0,0 +1,5 @@
+package com.msb.dao;
+
+public interface UserDao {
+ void add();
+}
diff --git a/spring_ioc_02/src/main/java/com/msb/dao/impl/UserDaoImplA.java b/spring_ioc_02/src/main/java/com/msb/dao/impl/UserDaoImplA.java
new file mode 100644
index 0000000..a7fd492
--- /dev/null
+++ b/spring_ioc_02/src/main/java/com/msb/dao/impl/UserDaoImplA.java
@@ -0,0 +1,12 @@
+package com.msb.dao.impl;
+
+import com.msb.dao.UserDao;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public class UserDaoImplA implements UserDao {
+ @Override
+ public void add(){
+ System.out.println("UserDaoImplA add ....");
+ }
+}
diff --git a/spring_ioc_02/src/main/java/com/msb/dao/impl/UserDaoImplB.java b/spring_ioc_02/src/main/java/com/msb/dao/impl/UserDaoImplB.java
new file mode 100644
index 0000000..4f72223
--- /dev/null
+++ b/spring_ioc_02/src/main/java/com/msb/dao/impl/UserDaoImplB.java
@@ -0,0 +1,12 @@
+package com.msb.dao.impl;
+
+import com.msb.dao.UserDao;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public class UserDaoImplB implements UserDao {
+ @Override
+ public void add(){
+ System.out.println("UserDaoImplB add ....");
+ }
+}
diff --git a/spring_ioc_02/src/main/java/com/msb/service/UserService.java b/spring_ioc_02/src/main/java/com/msb/service/UserService.java
new file mode 100644
index 0000000..dcb68ec
--- /dev/null
+++ b/spring_ioc_02/src/main/java/com/msb/service/UserService.java
@@ -0,0 +1,5 @@
+package com.msb.service;
+
+public interface UserService {
+ void add();
+}
diff --git a/spring_ioc_02/src/main/java/com/msb/service/impl/UserServiceImpl.java b/spring_ioc_02/src/main/java/com/msb/service/impl/UserServiceImpl.java
new file mode 100644
index 0000000..6104bfc
--- /dev/null
+++ b/spring_ioc_02/src/main/java/com/msb/service/impl/UserServiceImpl.java
@@ -0,0 +1,34 @@
+package com.msb.service.impl;
+
+import com.msb.dao.UserDao;
+import com.msb.service.UserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+@Service
+public class UserServiceImpl implements UserService {
+
+ @Autowired
+ @Qualifier("userDaoImplA")
+ private UserDao userDao;
+
+
+ // 普通数据类型的属性赋值 8+String
+ @Value("${name}")
+ private String name;
+ @Value("${gender}")
+ private String gender;
+ @Value("${age}")
+ private Integer age;
+
+ @Override
+ public void add(){
+ System.out.println("userServiceImpl add().....");
+ userDao.add();
+ System.out.println(name);
+ System.out.println(gender);
+ System.out.println(age);
+ }
+}
diff --git a/spring_ioc_02/src/main/resources/applicationContext.xml b/spring_ioc_02/src/main/resources/applicationContext.xml
new file mode 100644
index 0000000..3752a8f
--- /dev/null
+++ b/spring_ioc_02/src/main/resources/applicationContext.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/spring_ioc_02/src/main/resources/applicationContext1.xml b/spring_ioc_02/src/main/resources/applicationContext1.xml
new file mode 100644
index 0000000..64c97b8
--- /dev/null
+++ b/spring_ioc_02/src/main/resources/applicationContext1.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/spring_ioc_02/src/main/resources/demo.properties b/spring_ioc_02/src/main/resources/demo.properties
new file mode 100644
index 0000000..3d13ca3
--- /dev/null
+++ b/spring_ioc_02/src/main/resources/demo.properties
@@ -0,0 +1,3 @@
+name=\u5C0F\u660E
+gender=\u7537
+age=31
\ No newline at end of file
diff --git a/spring_ioc_02/src/test/java/com/msb/Test1.java b/spring_ioc_02/src/test/java/com/msb/Test1.java
new file mode 100644
index 0000000..4dee40b
--- /dev/null
+++ b/spring_ioc_02/src/test/java/com/msb/Test1.java
@@ -0,0 +1,20 @@
+package com.msb;
+
+import com.msb.bean.Student;
+import com.msb.bean.User;
+import org.junit.Test;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+public class Test1 {
+
+ @Test
+ public void testGetBean(){
+ ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
+ User user = applicationContext.getBean("user", User.class);
+ System.out.println(user);
+
+ Student student = applicationContext.getBean("student", Student.class);
+ System.out.println(student);
+ }
+}
diff --git a/spring_ioc_02/src/test/java/com/msb/Test2.java b/spring_ioc_02/src/test/java/com/msb/Test2.java
new file mode 100644
index 0000000..0562e32
--- /dev/null
+++ b/spring_ioc_02/src/test/java/com/msb/Test2.java
@@ -0,0 +1,28 @@
+package com.msb;
+
+import com.msb.config.SpringConfig;
+import com.msb.service.UserService;
+import com.msb.service.impl.UserServiceImpl;
+import org.junit.Test;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.AnnotationConfigApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+public class Test2 {
+
+ @Test
+ public void testGetBean(){
+ ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext1.xml");
+ UserService userService = applicationContext.getBean("userServiceImpl", UserServiceImpl.class);
+ userService.add();
+ }
+
+ @Test
+ public void testGetBean2(){
+ ApplicationContext applicationContext = new AnnotationConfigApplicationContext(SpringConfig.class);
+ UserService userService = applicationContext.getBean("userServiceImpl", UserServiceImpl.class);
+ userService.add();
+ }
+
+
+}
diff --git a/spring_jbdctemplate_01/.gitignore b/spring_jbdctemplate_01/.gitignore
new file mode 100644
index 0000000..5ff6309
--- /dev/null
+++ b/spring_jbdctemplate_01/.gitignore
@@ -0,0 +1,38 @@
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### IntelliJ IDEA ###
+.idea/modules.xml
+.idea/jarRepositories.xml
+.idea/compiler.xml
+.idea/libraries/
+*.iws
+*.iml
+*.ipr
+
+### Eclipse ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
+
+### Mac OS ###
+.DS_Store
\ No newline at end of file
diff --git a/spring_jbdctemplate_01/pom.xml b/spring_jbdctemplate_01/pom.xml
new file mode 100644
index 0000000..e9f5afb
--- /dev/null
+++ b/spring_jbdctemplate_01/pom.xml
@@ -0,0 +1,87 @@
+
+
+ 4.0.0
+
+ org.example
+ spring_jbdctemplate_01
+ 1.0-SNAPSHOT
+
+
+ 17
+ 17
+ UTF-8
+
+
+
+
+ org.springframework
+ spring-context
+ 6.0.11
+
+
+
+ org.springframework
+ spring-aspects
+ 6.0.11
+
+
+
+ aopalliance
+ aopalliance
+ 1.0
+
+
+
+ com.alibaba
+ druid
+ 1.1.10
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.28
+
+
+
+ org.springframework
+ spring-jdbc
+ 6.0.11
+
+
+
+ org.springframework
+ spring-tx
+ 6.0.11
+
+
+
+ org.springframework
+ spring-orm
+ 6.0.11
+
+
+
+ commons-logging
+ commons-logging
+ 1.2
+
+
+
+ junit
+ junit
+ 4.13.2
+ test
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.12
+ provided
+
+
+
+
\ No newline at end of file
diff --git a/spring_jbdctemplate_01/src/main/java/com/msb/dao/DeptDao.java b/spring_jbdctemplate_01/src/main/java/com/msb/dao/DeptDao.java
new file mode 100644
index 0000000..020e067
--- /dev/null
+++ b/spring_jbdctemplate_01/src/main/java/com/msb/dao/DeptDao.java
@@ -0,0 +1,13 @@
+package com.msb.dao;
+
+import com.msb.pojo.Dept;
+
+import java.util.List;
+
+public interface DeptDao {
+ int[] batchAdd(List deptList);
+
+ int[] batchUpdate(List deptList);
+
+ int[] batchDelete(List deptnos);
+}
diff --git a/spring_jbdctemplate_01/src/main/java/com/msb/dao/StudentDao.java b/spring_jbdctemplate_01/src/main/java/com/msb/dao/StudentDao.java
new file mode 100644
index 0000000..b89fe56
--- /dev/null
+++ b/spring_jbdctemplate_01/src/main/java/com/msb/dao/StudentDao.java
@@ -0,0 +1,19 @@
+package com.msb.dao;
+
+import com.msb.pojo.Student;
+
+import java.util.List;
+
+public interface StudentDao {
+ int findStuCount();
+
+ Student findStuById(int id);
+
+ List findStuByGrade(int grade);
+
+ int createStudent(Student student);
+
+ int updateStudent(Student student);
+
+ int deleteById(int id);
+}
diff --git a/spring_jbdctemplate_01/src/main/java/com/msb/dao/impl/DeptDaoImpl.java b/spring_jbdctemplate_01/src/main/java/com/msb/dao/impl/DeptDaoImpl.java
new file mode 100644
index 0000000..796b36e
--- /dev/null
+++ b/spring_jbdctemplate_01/src/main/java/com/msb/dao/impl/DeptDaoImpl.java
@@ -0,0 +1,73 @@
+package com.msb.dao.impl;
+
+import com.msb.dao.DeptDao;
+import com.msb.pojo.Dept;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.stereotype.Repository;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+@Repository
+public class DeptDaoImpl implements DeptDao {
+ private final JdbcTemplate jdbcTemplate;
+
+ public DeptDaoImpl(JdbcTemplate jdbcTemplate) {
+ this.jdbcTemplate = jdbcTemplate;
+ }
+
+ /**
+ * 批量添加部门
+ * @param deptList
+ * @return
+ */
+ @Override
+ public int[] batchAdd(List deptList) {
+ String sql = "insert into dept values(DEFAULT, ?, ?)";
+
+ List