建设企业网站需要什么呢,国外服务器做网站,wordpress 文章互链,电子商务网站开发的历程初识Spring-ioc 1. Spring的简介2.Spring容器ioc的特点3.spring注入方式1.Setter方法注入#xff08;Setter Injection#xff09;#xff1a;通过Setter方法来注入依赖。在类中定义对应的Setter方法#xff0c;并在方法中接收依赖的参数#xff0c;Spring容器会通过调用S… 初识Spring-ioc 1. Spring的简介2.Spring容器ioc的特点3.spring注入方式1.Setter方法注入Setter Injection通过Setter方法来注入依赖。在类中定义对应的Setter方法并在方法中接收依赖的参数Spring容器会通过调用Setter方法来注入所需的依赖。2.构造函数注入3.在Spring IOC控制反转中byname和bytype是两种不同的依赖注入方式。 4.总结 1. Spring的简介 Spring是一个开源的Java开发框架用于构建企业级应用程序。它提供了一种轻量级的、非侵入式的编程模型使得开发者可以更加简单地构建可扩展、可维护的应用程序。 Spring框架的核心特性包括依赖注入Dependency Injection和面向切面编程Aspect-Oriented Programming。依赖注入使得开发者可以将对象之间的依赖关系交由框架来管理从而降低了组件之间的耦合度。面向切面编程则提供了一种在应用程序中横切关注点的方式例如日志记录、事务管理等。 Spring框架还提供了许多其他功能和模块如Spring MVC用于构建Web应用程序、Spring Data用于简化数据库访问、Spring Security用于身份验证和授权等。这些模块可以根据需要进行选择和集成使得开发者可以根据自己的需求来构建定制化的应用程序。 总的来说Spring框架通过提供一种简单、灵活的开发方式帮助开发者构建高效、可扩展的Java应用程序。它已经成为Java开发领域中最受欢迎的框架之一并被广泛应用于各种企业级应用程序的开发中。 2.Spring容器ioc的特点 Spring的IOCInversion of Control容器是Spring框架的核心组件之一它具有以下特点 依赖注入Dependency Injection IOC容器通过依赖注入的方式管理对象之间的依赖关系。开发者只需要定义好对象之间的依赖关系IOC容器会负责实例化对象并自动注入所需的依赖从而降低了组件之间的耦合度。 配置灵活性IOC容器使用外部配置文件如XML、注解或Java配置类来描述对象的创建和依赖关系这使得应用程序的配置更加灵活。开发者可以根据需要修改配置文件而无需修改源代码从而实现应用程序的灵活性和可维护性。 单例管理IOC容器默认情况下管理的对象是单例的即每个对象在容器中只有一个实例。这样可以节省资源并提高性能。开发者也可以通过配置来改变对象的作用域如原型每次请求都创建新的实例或会话每个会话创建一个实例。 生命周期管理IOC容器负责管理对象的生命周期包括对象的创建、初始化和销毁。开发者可以通过配置回调方法如初始化方法和销毁方法来实现对对象生命周期的控制。 AOP集成IOC容器与面向切面编程AOP紧密集成可以通过配置将横切关注点如日志、事务管理应用到应用程序中的多个对象上从而提高代码的重用性和可维护性。 总的来说Spring的IOC容器通过依赖注入、灵活的配置、单例管理、生命周期管理和AOP集成等特点提供了一种简单、灵活、可扩展的对象管理机制帮助开发者构建可维护、可测试的应用程序。 3.spring注入方式 Spring框架提供了多种方式来实现依赖注入Dependency Injection 构造函数注入Constructor Injection通过构造函数来注入依赖。在类的构造函数中声明依赖的参数Spring容器会根据配置自动实例化并注入所需的依赖。 1.Setter方法注入Setter Injection通过Setter方法来注入依赖。在类中定义对应的Setter方法并在方法中接收依赖的参数Spring容器会通过调用Setter方法来注入所需的依赖。
模拟
package com.niyin.ioc.web;import com.niyin.ioc.impl.UserServiceImpl;
import com.niyin.ioc.impl.UserServiceImpl1;
import com.niyin.ioc.service.UserService;import java.util.List;public class GoodsAction {private UserService userService;private String gname;private int age;private ListStringpeoples;public String getGname() {return gname;}public void setGname(String gname) {this.gname gname;}public int getAge() {return age;}public void setAge(int age) {this.age age;}public ListString getPeoples() {return peoples;}public void setPeoples(ListString peoples) {this.peoples peoples;}public UserService getUserService() {return userService;}public void setUserService(UserService userService) {this.userService userService;}public String update(){userService.update();return list;}
public void pros(){System.out.println(this.gname);System.out.println(this.age);System.out.println(this.peoples);
};}
package com.niyin.ioc.demo;import com.niyin.ioc.web.GoodsAction;
import com.niyin.ioc.web.UserAction;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class demo1 {public static void main(String[] args) {ClassPathXmlApplicationContext context new ClassPathXmlApplicationContext(/sping-context.xml);UserAction userAction (UserAction) context.getBean(userAction);userAction.update();GoodsAction goodsAction (GoodsAction) context.getBean(goodsAction);goodsAction.update();System.out.println(--------------------------------);goodsAction.pros();System.out.println(---------------------------------);userAction.pros();}} bean classcom.niyin.ioc.web.GoodsAction idgoodsActionproperty nameuserService refuserService/propertyproperty namegname value雨伞/propertyproperty nameage value1/propertyproperty namepeoples listvalue男的/valuevalue女的/value/list/property/bean2.构造函数注入
package com.niyin.ioc.web;import com.niyin.ioc.impl.UserServiceImpl;
import com.niyin.ioc.service.UserService;import java.util.List;public class UserAction {private UserService userService;private String uname;private int age;private ListStringhobby;public UserAction() {}public UserAction(String uname, int age, ListString hobby) {this.uname uname;this.age age;this.hobby hobby;}public UserService getUserService() {return userService;}public void setUserService(UserService userService) {this.userService userService;}public String update(){userService.update();return list;}public void pros(){System.out.println(this.uname);System.out.println(this.age);System.out.println(this.hobby);};
}
package com.niyin.ioc.demo;import com.niyin.ioc.web.GoodsAction;
import com.niyin.ioc.web.UserAction;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class demo1 {public static void main(String[] args) {ClassPathXmlApplicationContext context new ClassPathXmlApplicationContext(/sping-context.xml);UserAction userAction (UserAction) context.getBean(userAction);userAction.update();GoodsAction goodsAction (GoodsAction) context.getBean(goodsAction);goodsAction.update();System.out.println(--------------------------------);goodsAction.pros();System.out.println(---------------------------------);userAction.pros();}}
bean classcom.niyin.ioc.web.UserAction iduserActionproperty nameuserService refuserService/property
constructor-arg nameuname value袁辉sb/constructor-argconstructor-arg nameage value11/constructor-argconstructor-arg namehobby listvalue农村/valuevalue农村/valuevalue农村/value/list/constructor-arg/bean3.在Spring IOC控制反转中byname和bytype是两种不同的依赖注入方式。 ByName按名称当使用ByName方式进行依赖注入时Spring容器会根据依赖对象的名称来进行匹配和注入。在配置文件中需要使用元素的name属性来指定依赖对象的名称。Spring容器会在容器中查找与指定名称匹配的bean并将其注入到相应的属性中。 4.1 使用Spring MVC框架Spring MVC是Spring框架的一部分用于开发基于MVC模式的Web应用程序。通过配置Spring MVC可以将请求映射到相应的控制器并实现灵活的请求处理和视图渲染。 4.2 使用Spring BootSpring Boot是Spring框架的扩展用于简化Spring应用程序的开发和部署。Spring Boot提供了内嵌的Web容器可以直接运行Spring应用程序无需额外配置。 4.3 使用Spring和其他Web容器的集成Spring框架可以与其他常见的Web容器如Tomcat、Jetty等进行集成通过配置文件或注解来实现。 配置监听器
1.监听器
package com.niyin.ioc.listerner;import org.springframework.context.support.ClassPathXmlApplicationContext;import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;WebListener
public class SpingLoadListener implements ServletContextListener {public void contextInitialized(ServletContextEvent sce) {ClassPathXmlApplicationContext context new ClassPathXmlApplicationContext(/sping-context.xml);
ServletContext servletContext sce.getServletContext();
servletContext.setAttribute(springContext,context);}
}2.servlet
package com.niyin.ioc.web;import com.niyin.ioc.service.UserService;
import org.springframework.context.support.ClassPathXmlApplicationContext;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
WebServlet(/userList)
public class userservlet extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req,resp);}Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {ClassPathXmlApplicationContext context (ClassPathXmlApplicationContext) req.getServletContext().getAttribute(spingContext);UserService userService (UserService) context.getBean(userService);System.out.println(userService);userService.update();}
}
4.总结
本文深入探讨了Spring IOC容器的工作原理包括配置文件、Bean的定义、实例化、装配、生命周期管理和获取等方面。通过理解和应用Spring IOC容器我们可以更好地开发和管理Java应用程序提高代码的可维护性和可测试性。希望本文对读者有所帮助谢谢阅读