码迷,mamicode.com
首页 > 编程语言 > 详细

spring in action 4th --- quick start

时间:2016-08-15 18:54:55      阅读:243      评论:0      收藏:0      [点我收藏+]

标签:

读spring in action. 不是特别聪明的人,只好多练习,多实践。读书和思考很容易变得混乱,因为没有实践。因此,虽然花了很多时间,还是要动手记录下来。

  1.  环境搭建
  2. quick-start

1.环境搭建

  • jdk1.8
  • gradle 2.12
  • Intelij idea 2016.2.1

技术分享

1.1创建一个gradle项目

在idea中,new -> project -> gradle 创建一个空项目。创建成功后修改build.gradle :

技术分享
group ‘com.test‘
version ‘1.0-SNAPSHOT‘

apply plugin: ‘java‘
apply plugin: ‘war‘

sourceCompatibility = 1.8
targetCompatibility = 1.8

repositories {
    mavenLocal()
    mavenCentral()
}

dependencies {
    testCompile group: ‘junit‘, name: ‘junit‘, version: ‘4.11‘
    
}
View Code

根目录下创建.gitignore:

技术分享
# Created by .ignore support plugin (hsz.mobi)
.idea/
.gradle/
build/
out/
*/build/
View Code

 

1.2 quick start

spring的核心是依赖注入,那么简单的做一个入门测试。

在项目名上右键,new->module->gradle->创建一个java项目quick-start. 修改生产的build.gradle:

技术分享
group ‘com.test‘
version ‘1.0-SNAPSHOT‘

apply plugin: ‘java‘

sourceCompatibility = 1.8

repositories {
    mavenLocal()
    mavenCentral()
}

dependencies {
    testCompile group: ‘junit‘, name: ‘junit‘, version: ‘4.11‘

    compile ‘org.springframework:spring-context:4.3.2.RELEASE‘
}
View Code

这里参考:http://projects.spring.io/spring-framework/#quick-start 的案例.

在quick-start module下创建一个package src/main/java,在java文件夹上右键,Mark Directory as -> Sources Root.

这时候idea的项目配置还没有刷新,需要手动点击一下刷新:

技术分享

 

这时候,idea就可以resolve quick-start这个项目以及他的dependency了。

 

添加spring-context会添加其他依赖:

dependencies {
    compile ‘org.springframework:spring-context:4.3.2.RELEASE‘
}

技术分享

 

1.2.1 Hello World

我们来创建打印消息的组件。MessagePrinter打印一个MessageService的实例的信息。:

技术分享

创建接口com.test.hello.MessageService:

package com.test.hello;

/**
 * Created by rmiao on 8/15/2016.
 */
public interface MessageService {
    String getMessage();
}

创建组件com.test.hello.MessagePrinter:

package com.test.hello;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/**
 * Created by rmiao on 8/15/2016.
 */
@Component
public class MessagePrinter {

    final private MessageService service;

    @Autowired
    public MessagePrinter(MessageService service){
        this.service = service;
    }

    public void printMessage(){
        System.out.println(this.service.getMessage());
    }
}

@Component声明MessagePrinter是一个bean,由spring容器来管理。

@Autowired 这里是构造器注入,会根据构造器参数的类型和参数名来将spring容器中的bean注入构造器。

 

针对MessagePrinter的注入参数,我们需要一个MessageService的实现:

MessageService mockMessageService(){
        return () -> "Hello World!";
}

 

下面开始启动spring容器来测试这个打印消息组件:

创建com.test.hello.Application:

package com.test.hello;

import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

/**
 * Created by rmiao on 8/15/2016.
 */
@Configuration
@ComponentScan
public class Application {

    @Bean
    MessageService mockMessageService(){
        return () -> "Hello World!";
    }

    public static void main(String[] args){
        ApplicationContext context = new AnnotationConfigApplicationContext(Application.class);
        MessagePrinter printer = context.getBean(MessagePrinter.class);
        printer.printMessage();
    }
}

@Configuration来声明Application是一个配置类,相当于xml配置文件。这里只配置了一个bean mockMessageService.

@Bean 用来声明一个bean并交由spring容器管理。相当于xml配置文件中<bean>. 这种方式表示声明一个MessageService的类的bean,bean id为mockMessageService。

@ComponentScan来声明spring容器扫描范围,这种方式表示扫描Application所在包以及子包下的所有类,然后将识别到的bean放到spring容器中。

AnnotationConfigApplicationContext用来创建spring容器。getBean来获取容器中的bean。

 

最终,打印Hello World!

 

spring in action 4th --- quick start

标签:

原文地址:http://www.cnblogs.com/woshimrf/p/5773806.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!