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开发后,你就会发现一切都可以那么简单。

 

posted @ 2022-08-11 18:50  码海兴辰  阅读(26)  评论(0编辑  收藏  举报