网站网址怎么写,微信下拉小程序怎么关闭,网站建设核心系统,网站分销系统上一节介绍了Spring创建过程中的两个重要的接口#xff0c;那么它们在创建Bean的过程中起到了什么作用呢#xff1f;接下来请看#xff1a;
Spring有三种方式寻找 xml 配置文件#xff0c;根据 xml 文件内容来构建 ApplicationContext#xff0c;分别为ClassPathXmlAppli…上一节介绍了Spring创建过程中的两个重要的接口那么它们在创建Bean的过程中起到了什么作用呢接下来请看
Spring有三种方式寻找 xml 配置文件根据 xml 文件内容来构建 ApplicationContext分别为ClassPathXmlApplicationContextFileSystemXmlApplicationContext AnnotationConfigApplicationContext 和 AnnotationConfigServletWebApplicationContext。
动手创建Bean
创建接口实现类
public class beanImpl implements bean{Overridepublic void print() {System.out.println(bean);}
}
创建xml文件
?xml version1.0 encodingUTF-8 ?
beans xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlnshttp://www.springframework.org/schema/beansxsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd default-autowirebyNamebean idbean classcom.beanImpl/
/beans
运行
public class A01Application {public static void main(String[] args) {ApplicationContext context new ClassPathXmlApplicationContext(classpath:bean.xml);context.getBean(bean.class).print();}
}D:\jdk8\bin\java.exe -javaagent:F:\idea\IntelliJ IDEA
22:49:09.159 [main] DEBUG org.springframework.context.s
22:49:09.261 [main] DEBUG org.springframework.beans.fac
22:49:09.282 [main] DEBUG org.springframework.beans.fac
bean进程已结束,退出代码0
那么读取xml的时候发生了什么事呢
内部实现
public static void main(String[] args) {DefaultListableBeanFactory beanFactory new DefaultListableBeanFactory();XmlBeanDefinitionReader xmlBeanDefinitionReader new XmlBeanDefinitionReader(beanFactory);xmlBeanDefinitionReader.loadBeanDefinitions(new ClassPathResource(bean.xml));for (String name : beanFactory.getBeanDefinitionNames()){System.out.println(name);}}D:\jdk8\bin\java.exe -javaagent:F:\idea\In
23:05:26.396 [main] DEBUG org.springframewo
bean进程已结束,退出代码0
注解创建Bean
public class A03Application {public static void main(String[] args) {AnnotationConfigApplicationContext context new AnnotationConfigApplicationContext(beanConfig.class);context.getBean(bean.class).print();for (String name : context.getBeanDefinitionNames()){System.out.println(name);}}
}bean
org.springframework.context.annotation.internalConfigurationAnnotationProcessor
org.springframework.context.annotation.internalAutowiredAnnotationProcessor
org.springframework.context.annotation.internalCommonAnnotationProcessor
org.springframework.context.event.internalEventListenerProcessor
org.springframework.context.event.internalEventListenerFactory
beanConfig
bean
与目标 VM 断开连接, 地址为: 127.0.0.1:64717传输: 套接字进程已结束,退出代码0
注解创建Bean会把配置类也作为Bean注入进来同时还会添加5个后处理器来进行对beanConfig的解析处理。
支持WEB的注解创建Bean
创建支持web的配置类
Configuration
public class WebConfig {//创建Servlet的web服务器Beanpublic ServletWebServerFactory servletWebServerFactory(){return new TomcatServletWebServerFactory();}//创建前处理器用来接收各种请求Beanpublic DispatcherServlet dispatcherServlet(){return new DispatcherServlet();}//将dispatcherServlet注册在web服务器上Beanpublic DispatcherServletRegistrationBean dispatcherServletRegistrationBean(DispatcherServlet dispatcherServlet){return new DispatcherServletRegistrationBean(dispatcherServlet,/);}//Controller控制器Bean(/bean)public Controller controller(){return new Controller() {Overridepublic ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {System.out.println(bean);return null;}};}
}
再运行一下主类吧
public class A04Application {public static void main(String[] args) {AnnotationConfigServletWebServerApplicationContext context new AnnotationConfigServletWebServerApplicationContext(WebConfig.class);for (String name : context.getBeanDefinitionNames()){System.out.println(name);}}
}org.springframework.context.annotation.internalConfigurationAnnotationProcessor
org.springframework.context.annotation.internalAutowiredAnnotationProcessor
org.springframework.context.annotation.internalCommonAnnotationProcessor
org.springframework.context.event.internalEventListenerProcessor
org.springframework.context.event.internalEventListenerFactory
webConfig
servletWebServerFactory
dispatcherServlet
dispatcherServletRegistrationBean
/bean 这样就能发现创建了所有的Bean而且还可以通过内置服务器运行接收请求。 to be continue······