淘淘商城(16)_Spring的java配置方式/Spring boot

1.Spring的java配置方式

我们之前使用spring都是使用注解+xml的配置

而现在的spring已经可以使用java配置的方式,完全替代xml配置

1.1 常用注解

SpringJava配置会经常用到以下几个注解:

  • @Configuration 作用于类上,把一个类标记为一个xml配置文件
  • @Bean作用于方法(一个生产指定对象的方法)上,相当于xml配置中的
  • @PropertySource 指定属性文件所在的路径

1.2 示例

(1)实现Httpclient的配置
回顾以前的配置:
淘淘商城(16)_Spring的java配置方式/Spring boot_第1张图片
(2)创建工程
淘淘商城(16)_Spring的java配置方式/Spring boot_第2张图片
(3)导入依赖


	4.0.0
	cn.itcast.spring
	itcast-spring
	0.0.1-SNAPSHOT

	
		
		
			org.springframework
			spring-webmvc
			4.3.7.RELEASE
		
		
		
			org.apache.httpcomponents
			httpclient
			4.3.5
		
		
		
			org.slf4j
			slf4j-log4j12
			1.7.7
		
	
	
		
			
			
				org.apache.maven.plugins
				maven-resources-plugin
				
					UTF-8
				
			
			
			
				org.apache.maven.plugins
				maven-compiler-plugin
				
					1.7
					1.7
					UTF-8
				
			
		
	

(4)属性文件
在这里插入图片描述
(5)编写配置类
基本规则:

  • 1)用带有@Configuration注解的类来代替以前的XML文件
  • 2)用@PropertyResource来指定外部属性文件位置(不是必须的)
  • 3)用@value注解来读取配置文件中的值
  • 4)用带有@Bean的方法来注册Bean。(方法返回要注册的Bean的对象)
@Configuration // 标记当前类是Spring的配置类
@PropertySource(value = "classpath:httpClient.properties") // 指定属性文件路径
public class SpringConfig {

    @Value("${http.maxTotal}")
    private Integer maxTotal;// 读取属性文件中的参数

    @Value("${http.defaultMaxPerRoute}")
    private Integer defaultMaxPerRoute;

    @Value("${http.connectTimeout}")
    private Integer connectTimeout;

    @Value("${http.connectionRequestTimeout}")
    private Integer connectionRequestTimeout;

    @Value("${http.socketTimeout}")
    private Integer socketTimeout;

    @Value("${http.staleConnectionCheckEnabled}")
    private Boolean staleConnectionCheckEnabled;

    /**
     *  注册连接池管理器
     *  注意:
     *      1)要注册什么类型Bean,返回值就是其类型即可。
     *      2)方法名一般是类型名的首字母小写形式。
     * @return
     */
    @Bean
    public HttpClientConnectionManager httpClientConnectionManager() {
        PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager();
        connectionManager.setMaxTotal(maxTotal);
        connectionManager.setDefaultMaxPerRoute(defaultMaxPerRoute);
        return connectionManager;
    }

    // 注册RequestConfig
    @Bean
    public RequestConfig requestConfig() {
        return RequestConfig.custom().setConnectTimeout(connectTimeout)
                .setConnectionRequestTimeout(connectionRequestTimeout).setSocketTimeout(socketTimeout)
                .setStaleConnectionCheckEnabled(staleConnectionCheckEnabled).build();
    }
    // 注册HttpClient
    @Bean
    public HttpClient httpClient(HttpClientConnectionManager manager, RequestConfig config) {
        return HttpClientBuilder.create().setConnectionManager(manager).setDefaultRequestConfig(config)
                .build();
    }
}

httpClient(HttpClientConnectionManager manager, RequestConfig config),spring容器(扫描到此方法后调用时)会自动注入参数


(6)编写测试类

public class Application {
    public static void main(String[] args) throws IOException {
        // 加载Spring容器
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);
        // 获取HttpClient对象
        HttpClient httpClient = context.getBean(HttpClient.class);
        // 创建get请求
        HttpGet get = new HttpGet("http://www.baidu.com");
        // 发起请求,获取响应
        String content = httpClient.execute(get, new BasicResponseHandler());
        
        System.out.println(content);
        // 销毁容器
        context.close();
    }
}

注意哦,我们是通过ClassPathXmlApplicationContext来加载spring的xml配置的,此时已经没有xml了,所以我们得用AnnotationConfigApplicationContext

2.SpringBoot入门

2.1 概述

在传统的JavaEE开发中,有两大问题一直困扰着我们,一个是复杂的配置,一个是混乱的依赖管理。各种配置其实是开发时的损耗, 因为在思考 Spring 特性配置和解决业务问题之间需要进行思维切换,所以写配置挤占了写应用程序逻辑的时间。除此之外,项目的依赖管理也是件吃力不讨好的事情。决定项目里要用哪些库就已经够让人头痛的了,你还要知道这些库的哪个版本和其他库不会有冲突,这难题实在太棘手。并且,依赖管理也是一种损耗,添加依赖不是写应用程序代码。一旦选错了依赖的版本,随之而来的不兼容问题毫无疑问会是生产力杀手。

Spring Boot 让这一切成为了过去。

Spring Boot 简化了基于Spring的应用开发,只需要“run”就能创建一个独立的、生产级别的Spring应用。Spring Boot为Spring平台及第三方库提供开箱即用的设置(提供默认设置),这样我们就可以简单的开始。多数Spring Boot应用只需要很少的Spring配置。

我们可以使用SpringBoot创建java应用,并使用java –jar 启动它,或者采用传统的war部署方式。

Spring Boot 主要目标是:

  • 为所有 Spring 的开发者提供一个非常快速的、广泛接受的入门体验
  • 开箱即用(启动器starter-其实就是SpringBoot提供的一个jar包),但通过自己设置参数,即可快速摆脱这种方式。
  • 提供了一些大型项目中常见的非功能性特性,如内嵌服务器、安全、指标,健康检测、外部化配置等
  • 绝对没有代码生成,也无需 XML 配置。

官方网站:http://projects.spring.io/spring-boot/

2.2 快速入门

2.3 入门案例分析

2.4 自定义MVC配置

2.5 读取配置文件的方式

你可能感兴趣的:(淘淘商城(16)_Spring的java配置方式/Spring boot)