JAVA架构(二)-----Spring的Java配置方式
⦁ Spring的Java配置方式
Java配置是Spring5.x推荐的配置方式,可以完全替代xml配置。
⦁ @Configuration 和 @Bean
Spring的Java配置方式是通过 @Configuration 和 @Bean 这两个注解实现的:
1、@Configuration 作用于类上,相当于一个xml配置文件;
2、@Bean 作用于方法上,相当于xml配置中的<bean>;
⦁ 示例
该示例演示了通过Java配置的方式进行配置Spring,并且实现了Spring IOC功能。
⦁ 创建工程以及导入依赖
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.samson</groupId>
<artifactId>spring_mvc_maven</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.0.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.0.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.0.8.RELEASE</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.6</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version> 2.9.6</version>
</dependency>
</dependencies>
<properties>
<failOnMissingWebXml>false</failOnMissingWebXml>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.0.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
⦁ 配置Spring MVC
public class MyWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
// Spring IoC容器的配置
@Override
protected Class<?>[] getRootConfigClasses() {
// 可以返回Spring的Java配置文件数组
return new Class<?>[] {};
}
// DispatcherServlet的URI映射关系配置
@Override
protected Class<?>[] getServletConfigClasses() {
// 可以返回Spring的Java配置文件数组
return new Class<?>[] { WebConfig.class };
}
//配置DispatcherServlet拦截请求匹配
@Override
protected String[] getServletMappings() {
return new String[] { "*.do" };
}
}
⦁ 配置DispatcherServlet的上下文
@Configuration
@EnableWebMvc
// 想要启用MVC Java config,只需要将@EnableWebMvc添加到你的一个@Configuration class即可。
// 或者在XML中,需要在你的DispatcherServlet context (或你的root context --
// 如果没有定义DispatcherServlet context的话)内使用 <mvc:annotation-driven> 元素:
// 定义Spring MVC扫描的包
@ComponentScan(value = "com.*", includeFilters = { @Filter(type = FilterType.ANNOTATION, value = Controller.class) })
public class WebConfig {
/**
* 通过注解@Bean初始化视图解析器
*
* @return
*/
@Bean(value = "internalResourceViewResolver")
public ViewResolver initViewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setPrefix("/WEB-INF/jsp/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
/**
*
* @return
*/
@Bean(name = "requestMappingHandlerAdapter")
public HandlerAdapter initRequestMappingHandlerAdapter() {
// 创建RequestMappingHandlerAdapter适配器
RequestMappingHandlerAdapter rAdapter = new RequestMappingHandlerAdapter();
// HTTP JSON转换器
MappingJackson2HttpMessageConverter jsConverter = new MappingJackson2HttpMessageConverter();
// MappingJackson2HttpMessageConverter 接收JSON类型消息的转换
MediaType mediaType = MediaType.APPLICATION_JSON_UTF8;
List<MediaType> meidaTypes = new ArrayList<MediaType>();
meidaTypes.add(mediaType);
// 加入转换器的支持类型
jsConverter.setSupportedMediaTypes(meidaTypes);
// 给适配器json转化器
rAdapter.getMessageConverters().add(jsConverter);
return rAdapter;
}
}
⦁ 开发Spring MVC控制器
@Controller
public class test {
@RequestMapping("/test")
@ResponseBody
public Map<String, String> test() {
Map<String, String> map = new HashMap<String, String>();
map.put("key", "value");
return map;
}
}
⦁ 小结
从上面来看,传统的spring MVC开发需要的配置的内容还是比较多的,而且对设计人员的要求较高。开发完成之后,开发者还要对应的服务器去运行。
而使用Spring boot开发后,你就会发现一切都可以那么简单。