Spring完全基于Java和注解配置

要点:

  1. 配置继承WebApplicationInitializer的类作为启动类,相当于配置web.xml文件
  2. 使用@Configuration注解一个类,在类中的方式使用@Bean注解,则表名该方法的返回值为一个Bean,相应于配置applicationContext.xml等spring的xml配置文件

配置启动类

继承WebApplicationInitializer并重新onStartup方法,加载配置类,相当于配置web.xml文件

 1 public class WebAppInitConfig implements WebApplicationInitializer {
 2
 3     @Override
 4     public void onStartup(ServletContext container) throws ServletException {
 5         // Create the ‘root‘ Spring application context
 6         AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext();
 7         rootContext.register(RootConfig.class);//这是自定义的配置类,这个配置类会影响项目全局
 8
 9         // Manage the lifecycle of the root application context
10         container.addListener(new ContextLoaderListener(rootContext));
11
12         // Create the dispatcher servlet‘s Spring application context
13         AnnotationConfigWebApplicationContext dispatcherContext = new AnnotationConfigWebApplicationContext();
14         dispatcherContext.register(WebMvcConfig.class);//这是自定义的配置类,这个配置类只会影响当前模块
15
16         // Register and map the dispatcher servlet
17         ServletRegistration.Dynamic dispatcher = container.addServlet("dispatcher", new DispatcherServlet(dispatcherContext));
18         dispatcher.setLoadOnStartup(1);
19         dispatcher.addMapping("/");
20     }
21 }

AnnotationConfigApplicationContext:用来把使用注解的配置类加载到spring容器中,也就是把那些在配置类中定义的bean交给spring管理

也可以使用WebApplicationInitializer的实现类AbstractDispatcherServletInitializerAbstractAnnotationConfigDispatcherServletInitializer来进行更为简洁的配置,官方文档地址,只要实现了WebApplicationInitializer将会被servlet容器自动识别并加载

使用AbstractAnnotationConfigDispatcherServletInitializer配置示例如下

 1 public class AppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
 2
 3     @Override
 4     protected Class<?>[] getRootConfigClasses() {
 5         return new Class[]{RootConfig.class};
 6     }
 7
 8     @Override
 9     protected Class<?>[] getServletConfigClasses() {
10         return new Class[]{WebMvcConfig.class};;
11     }
12
13     @Override
14     protected String[] getServletMappings() {
15         return new String[]{"/"};
16     }
17
18 }

自定义配置类

配置spring管理bean,相应于配置applicationContext.xml等spring的xml配置文件,就是上面使用WebApplicationInitializer加载的类

 1 @Configuration
 2 @EnableWebMvc //注解驱动springMVC 相当于xml中的<mvc:annotation-driven>
 3 @ComponentScan(basePackages = "com.woncode") //启用组件扫描
 4 public class WebMvcConfig extends WebMvcConfigurerAdapter {
 5     //配置静态资源的处理,要求DispatchServlet对静态资源的请求转发到servlet容器中默认的Servlet上
 6     @Override
 7     public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
 8         configurer.enable();
 9     }
10
11     @Override
12     public void addResourceHandlers(ResourceHandlerRegistry registry) {
13         registry.addResourceHandler("/statics/**").addResourceLocations("/WEB-INF/classes/statics/");
14         super.addResourceHandlers(registry);
15     }
16
17     @Bean
18     public InternalResourceViewResolver viewResolver(){
19         InternalResourceViewResolver resolver= new InternalResourceViewResolver();
20         resolver.setPrefix("/WEB-INF/classes/templates/");
21         resolver.setSuffix(".html");
22         resolver.setExposeContextBeansAsAttributes(true);
23         return resolver;
24     }
25
26 }

@Import注解:用来引入其他配置类到当前配置类,然后就可以在当前配置类中使用其他配置类中的bean了,这在分模块的项目中很有用,因为分模块就是希望分割配置,但是有时又需要使用一些其他已经定义过的配置类,所以可以用此导入

时间: 2024-11-10 00:20:18

Spring完全基于Java和注解配置的相关文章

Spring Ioc 基于Java的容器配置

一.基于Java的容器配置 @Configuration & @Bean 注解: 在Spring的新的Java-Configuration的中间产物是基于类的@Configuration的注解和基于方法的@Bean注解.         @Bean注解是用来指明方法的实例化,配置和初始化一个对象是通过Spring的IoC容器来管理的.对于那些熟悉使用以XML配置Spring的<beans /> 标签,@Bean注解和<bean />标签是起相同作用的.你能和Spring的@

Spring中基于Java的容器配置(二)

使用@Configuration注解 @Configuration注解是一个类级别的注解,表明该对象是用来指定Bean的定义的.@Configuration注解的类通过@Bean注解的方法来声明Bean.通过调用注解了@Bean方法的返回的Bean可以用来构建Bean之间的相互依赖关系,可以通过前文来了解其基本概念. 注入inter-bean依赖 当@Bean方法依赖于其他的Bean的时候,可以通过在另一个方法中调用即可. @Configuration public class AppConfi

Spring学习(13)--- 基于Java类的配置Bean 之 @Configuration &amp; @Bean注解

基于Java配置选项,可以编写大多数的Spring不用配置XML,但有几个基于Java的注释的帮助下解释.从Spring3.0开始支持使用java代码来代替XML来配置Spring,基于Java配置Spring依靠Spring的JavaConfig项目提供的很多优点.通过使用@Configuration, @Bean ,@Import ,@DependsOn 来实现Java配置Spring. 1) @Configuration & @Bean 注解: 在Spring的新的Java-Configu

基于javaConfig和注解配置Spring Security

Spring Security 借助一系列Servlet Filter 来提供安全性功能,但是借助Spring的小技巧,我们只需要配置一个Filer就可以了,DelegatingFilterProxy是一个特殊的Servlet Filter,它本身所做的工作并不多,只是将工作委托给一个javax.servlet.Filter 的实现类,这个实现类作为一个bean注册再Spring应用的上下文中. 如果了解过用xml配置spring security的朋友就知道,用基于xml配置Spring Se

【Spring】IOC之基于Java类的配置Bean

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 基于Java配置选项,可以编写大多数的Spring不用配置XML,但有几个基于Java的注释的帮助下解释.从Spring3.0开始支持使用java代码来代替XML来配置Spring,基于Java配置Spring依靠Spring的JavaConfig项目提供的很多优点.通过使用@Configuration, @Bean ,@Importand,@DependsOnannotations来实现J

(五)使用注解开发,基于java类进行配置

1.使用注解代替bean 配置扫描哪些包下的注解 <!--指定注解扫描包--> <context:component-scan base-package="com.alan.pojo"/> 在指定包下编写类,增加注解 @Component("user") // 相当于配置文件中 <bean id="user" class="当前注解的类"/> public class User { publ

spring Quartz基于配置文件和注解的实现

这里仅仅是做简单的记录怎样实现. 一.基于配置文件的实现 ①编写须要调度的类 package com.study; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; //@Component public class QuartzJob { public QuartzJob(){ System.out.println("Quart

[译]17-spring基于java代码的配置元数据

spring还支持基于java代码的配置元数据.不过这种方式不太常用,但是还有一些人使用.所以还是很有必要介绍一下. spring基于java代码的配置元数据,可以通过@Configuration注解把一个声明为配置类;通过@Bean注解把一个新 创建的类交由spring容器来管理.在这种配置方式下,我们可以手动装配bean,也可以自动装配bean.我感觉在这种 方式下使用手动装配非常不爽,尤其是有多个配置类的时候. 下面看个例子: 1.新建包com.tutorialspoint.javacod

Spring 框架的概述以及Spring中基于XML的IOC配置

Spring 框架的概述以及Spring中基于XML的IOC配置 一.简介 Spring的两大核心:IOC(DI)与AOP,IOC是反转控制,DI依赖注入 特点:轻量级.依赖注入.面向切面编程.容器.框架.一站式 优势: 方便解耦:做到编译期不依赖,运行期才依赖 AOP的支持 声明式事务的支持 方便程序的测试 方便整合各种框架 降低JavaEE API的使用难度 Spring源码很厉害 解耦: 耦合包括:类之间的和方法之间的 解决的思路: 在创建对象的时候用反射来创建,而不是new 读取配置文件