使用JavaConfig方式-Spring 基础学习

在Spring的使用中,大量采用xml方式配置类之间的关系太过于繁琐(个人这么认为),而在学习了Spring4后发下使用JavaConfig方式来配置这些关系会更加的简单明了。

测试环境

1. Apache Maven

2. JDK 1.8

3. IDEA 15

先决条件

1. 使用IDEA创建一个Maven项目

2. 在pom.xml 中引用

<dependency>    <groupId>org.springframework</groupId>    <artifactId>spring-webmvc</artifactId>    <version>4.1.5.RELEASE</version></dependency>

3. 实际代码

很简单的一个Service吧!(这里为了方便省略了interface)

public class FunctionService {
    public String sayHello(String msg) {
        return "Hello " + msg + "!";
    }
}

这里相当于组合上面的类

public class UseFunctionService {
    private FunctionService functionService;

    public void setFunctionService(FunctionService functionService) {
        this.functionService = functionService;
    }

    public String SayHello(String msg) {
        return functionService.sayHello(msg);
    }
}

然后重头戏

1. 用@Configuration 表示这是一个spring java配置类

2. 定义了 ApplicationContext中的一个Bean等同于<bean id="functionService" class="com.malin.FunctionService"/>

3. 同2一样

package com.malin.javaconfig;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration  //1
public class JavaConfig {
    @Bean     //2
    public FunctionService functionService() {
        return new FunctionService();
    }
    @Bean      //3
    public UseFunctionService useFunctionService() {
        UseFunctionService useFunctionService = new UseFunctionService();
        useFunctionService.setFunctionService(functionService());
        return useFunctionService;
    }
}

在编写一个测试类吧

package com.malin.javaconfig;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class Main {
    public static void main(String[] args) {
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(JavaConfig.class);
        UseFunctionService service = context.getBean(UseFunctionService.class);
        System.out.println(service.SayHello("小马"));
        context.close();
    }
}

  然后输出了结果

D:\software\java\bin\java -Didea.launcher.port=7534 "-Didea.launcher.bin.path=D:\software\IntelliJ IDEA 2016.1.3\bin" -Dfile.encoding=UTF-8 -classpath "D:\software\java\jre\lib\charsets.jar;D:\software\java\jre\lib\deploy.jar;D:\software\java\jre\lib\ext\access-bridge-64.jar;D:\software\java\jre\lib\ext\cldrdata.jar;D:\software\java\jre\lib\ext\dnsns.jar;D:\software\java\jre\lib\ext\jaccess.jar;D:\software\java\jre\lib\ext\jfxrt.jar;D:\software\java\jre\lib\ext\localedata.jar;D:\software\java\jre\lib\ext\nashorn.jar;D:\software\java\jre\lib\ext\sunec.jar;D:\software\java\jre\lib\ext\sunjce_provider.jar;D:\software\java\jre\lib\ext\sunmscapi.jar;D:\software\java\jre\lib\ext\sunpkcs11.jar;D:\software\java\jre\lib\ext\zipfs.jar;D:\software\java\jre\lib\javaws.jar;D:\software\java\jre\lib\jce.jar;D:\software\java\jre\lib\jfr.jar;D:\software\java\jre\lib\jfxswt.jar;D:\software\java\jre\lib\jsse.jar;D:\software\java\jre\lib\management-agent.jar;D:\software\java\jre\lib\plugin.jar;D:\software\java\jre\lib\resources.jar;D:\software\java\jre\lib\rt.jar;D:\workspace\spring-1\target\classes;C:\Users\Administrator\.m2\repository\org\springframework\spring-webmvc\4.1.5.RELEASE\spring-webmvc-4.1.5.RELEASE.jar;C:\Users\Administrator\.m2\repository\org\springframework\spring-beans\4.1.5.RELEASE\spring-beans-4.1.5.RELEASE.jar;C:\Users\Administrator\.m2\repository\org\springframework\spring-core\4.1.5.RELEASE\spring-core-4.1.5.RELEASE.jar;C:\Users\Administrator\.m2\repository\org\springframework\spring-context\4.1.5.RELEASE\spring-context-4.1.5.RELEASE.jar;C:\Users\Administrator\.m2\repository\org\springframework\spring-aop\4.1.5.RELEASE\spring-aop-4.1.5.RELEASE.jar;C:\Users\Administrator\.m2\repository\aopalliance\aopalliance\1.0\aopalliance-1.0.jar;C:\Users\Administrator\.m2\repository\org\springframework\spring-expression\4.1.5.RELEASE\spring-expression-4.1.5.RELEASE.jar;C:\Users\Administrator\.m2\repository\commons-logging\commons-logging\1.2\commons-logging-1.2.jar;C:\Users\Administrator\.m2\repository\org\springframework\spring-web\4.1.5.RELEASE\spring-web-4.1.5.RELEASE.jar;D:\software\IntelliJ IDEA 2016.1.3\lib\idea_rt.jar" com.intellij.rt.execution.application.AppMain com.malin.javaconfig.Main
六月 26, 2016 4:18:45 上午 org.springframework.context.annotation.AnnotationConfigApplicationContext prepareRefresh
信息: Refreshing org.spring[email protected]1a6c5a9e: startup date [Sun Jun 26 04:18:45 CST 2016]; root of context hierarchy
Hello 小马!
六月 26, 2016 4:18:45 上午 org.springframework.context.annotation.AnnotationConfigApplicationContext doClose
信息: Closing org.spring[email protected]1a6c5a9e: startup date [Sun Jun 26 04:18:45 CST 2016]; root of context hierarchy

Process finished with exit code 0

  

时间: 2024-10-17 04:26:58

使用JavaConfig方式-Spring 基础学习的相关文章

spring 基础学习笔记

spring 初始理解 1.spring 只是一个框架,是一些相应的 jar包,相当于一个项目的管理者,各种其他框架的中介,项目的监管机构. 2.主要特点是依赖注入DI.面向切面AOP,控制反转IOC 3.核心:加载applicationContext.Xml配置文件,生成applicationContext对象,在配置文件中的bean也会生成各种bean对象,这些bean对象相当于配置文件中的各个类的初始化,或者框架配置, spring通过applicationContext这个对象去管理这些

Spring基础学习,没有理论 都是干货

##学习需要掌握:反射和最简单的MVC架构流程 ##对spring有过基础性的理论知识 ##按照代码一步步来,30分钟掌握Spring的基本使用 1:先用spring创建一个最简单的对象 首先创建一个对象 package com.itmayiedu.entity; public class UserEntity { private String name; private Integer age; public String getName() { return name; } public v

Spring基础学习笔记-Bean的基础知识

一. Bean的定义,初始化,使用和销毁 二.ref指定依赖的三种模式 三.Bean的五种自动装配模式(autowire) 四.Bean依赖检查的4种模式:配合atuowire使用,dependency-check="" 五.集合的注入方式 六.管理Bean config.xml文件<!--Bean的配置文档--><!--首先定义为XML的方式来存储Bean的配置--><?xml version="1.0" encoding="

Spring基础学习(三)&mdash;详解Bean(下)

一.Bean的生命周期 1.概述      Spring IOC容器可以管理Bean的生命周期,Spring 允许在Bean的生命周期的特定点执行定制的任务.      Spring IOC容器对Bean的生命周期进行管理的过程:      (1)通过构造器或工厂方法创建Bean实例.      (2)为Bean的属性设置值和对其他Bean的引用.      (3)调用Bean的初始化方法.      (4)Bean可以使用了.      (5)当容器关闭时,调用Bean的销毁方法.     

Spring基础学习(二)&mdash;注入参数详解

     在Spring配置文件中,用户不但可以将String.int等字面值注入Bean中,还可以将集合.Map等类型注入Bean中,此外还可以注入配置文件中其他定义的Bean. 一.字面值      (1)可用字符串表示的值,可以通过<value>元素标签或value属性进行注入.      (2)基本数据类型及其封装类.Stting类型都可以采用字面值注入的方式.      (3)若字面值包含特殊字符,可以使用<![CDATA[]]>把字面值包裹起来. <bean id

【Spring基础学习】注解实现自动装配

在IOC容器中学习相关注解(常用) 1. @Autowired a.作用对象:(官网解释) 1. You can apply the @Autowired annotation to constructors: 2.you can also apply the @Autowired annotation to "traditional" setter methods: 3.You can also apply the annotation to methods with arbitra

Spring基础学习(四)&mdash;AOP

一.AOP基础 1.基本需求      需求: 日志功能,在程序执行期间记录发生的活动. ArithmeticCalculate.java public interface ArithmeticCalculate{ public int add(int a,int b); public int sub(int a,int b); public int mul(int a,int b); public int div(int a,int b); } ArithmeticCalculateImpl.

JSP的页面连接和提交方式(web基础学习笔记六)

一.GET请求新页面 1.1.超链接请求新页面 <!-- 超链接到page2 --> <a href="page2.jsp">链接到page2</a><br> <!-- 超链接到page2,弹出新窗口 --> <a href="page2.jsp" target="_blank">在窗口中链接到page2</a><br> <!-- 相对路径链接到

Spring基础学习(五)&mdash;事务管理

一.事务基本认识 1.事务的概述      为了保证数据库中数据的一致性,数据的操作应当是离散的成组的逻辑单元.当它全部完成时,数据的一致性可以保持,而当这个单元中的一部分操作失败,整个事务应当全部视为错误,所有从起始点以后的操作应全部回退到开始状态.      事务的操作: 先定义开始一个事务,然后对数据做修改操作,这时如果提交(commit),这些数据就永久的保存下来,如果回退(rollback),数据库管理系统就放弃所有的修改而回到开始事务的状态.   2.事务的属性 (1)原子性(Atm