一、Spring发展史
 1、Spring1.x 
     版本一时代主要是通过XML文件配置bean,在java和xml中不断切换,在学习java web 初期的时候经常使用
 2、Spring2.x
     版本二可以支持注解模式,这样大大简化开发,减少XML文件配置
  注意:
        IOC推荐用注解方式实现,AOP推荐用配置方式实现
  2.0版本时候的问题,到底采用注解还是文本配置
        最后结论最佳实践:
                                  (1)应用的基本配置用xml,比如:数据源、资源文件等;
                                 (2)业务开发用注解,比如:Service中注入bean等;
3、Spring3.X到Spring4.X
     从版本三开始启用通过java代码配置取代XML,可以更好的理解Bean
 
二、Spring的java配置
    版本三提出,版本四极力推荐使用。完全替代XML配置
 1、最基本的两个java配置
      (1)@Configuration 作用于类上,相当于一个xml配置文件;
      (2)@Bean 作用于方法上,相当于xml配置中的<bean>;
 
2、实战演练
        (1)创建Spring项目,详见http://www.cnblogs.com/liuyangfirst/p/8298588.html
          (2)  创建目录,如图所示:
                        
         (3)POJO源码                  
 package com.springboot.exersize.pojo;

 /**
* Created by liuya
* User: liuya
* Date: 2018/3/24
* Time: 21:35
* projectName:20180324versionone
*/
public class User { private String userName; private String passWord; private Integer age; public String getUserName() {
return userName;
} public void setUserName(String userName) {
this.userName = userName;
} public String getPassWord() {
return passWord;
} public void setPassWord(String passWord) {
this.passWord = passWord;
} public Integer getAge() {
return age;
} public void setAge(Integer age) {
this.age = age;
}
}

) Dao源码

 package com.springboot.exersize.dao;

 import com.springboot.exersize.pojo.User;

 import java.util.ArrayList;
import java.util.List; /**
* Created by liuya
* User: liuya
* Date: 2018/3/24
* Time: 22:00
* projectName:20180324versionone
*/
public class UserDao { public List<User> userList() { List<User> userList = new ArrayList<>(); for (int i = 0; i < 10; i++) {
User user = new User();
user.setUserName("username_" + i);
user.setPassWord("password_" + i);
user.setAge(i + 1);
userList.add(user);
}
return userList;
}
}

(5)Service源码

 package com.springboot.exersize.service;

 import com.springboot.exersize.dao.UserDao;
import com.springboot.exersize.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import java.util.List; /**
* Created by liuya
* User: liuya
* Date: 2018/3/24
* Time: 22:04
* projectName:20180324versionone
*/
@Service
public class UserService { @Autowired
private UserDao userDao; public List<User> userList() {
return this.userDao.userList();
} }

(6) Java配置文档

 package com.springboot.exersize.config;

 import com.springboot.exersize.dao.UserDao;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration; /**
* Created by liuya
* User: liuya
* Date: 2018/3/24
* Time: 22:06
* projectName:20180324versionone
*/ @Configuration
@ComponentScan(basePackages = "com.springboot.exersize.service")
public class SpringConf { @Bean
public UserDao getUserDao() {
return new UserDao();
} }

(7)测试代码

 package com.liuyangfirst.test;

 import com.liuyangfirst.conf.SpringConf;
import com.liuyangfirst.pojo.User;
import com.liuyangfirst.service.UserService;
import org.springframework.context.annotation.AnnotationConfigApplicationContext; import java.util.List; /**
* Created by liuya
* User: liuya
* Date: 2018/3/24
* Time: 22:10
* projectName:20180324versionone
*/
public class Test { public static void main(String[] args) {
// 通过Java配置来实例化Spring容器
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringConf.class); // 在Spring容器中获取Bean对象
UserService userService = context.getBean(UserService.class); // 调用对象中的方法
List<User> list = userService.userList(); for (User user : list) {
System.out.println(user.getUserName() + ", " + user.getPassWord() + ", " + user.getPassWord());
} // 销毁该容器
context.destroy();
} }

(8)成功运行

(9)原理图解

 
 
 
 
 

IntelliJ IDEA 2017版 spring-boot基础补充,原理详解的更多相关文章

  1. IntelliJ IDEA 2017版 spring-boot加载jsp配置详解(详细图文实例)

    一.创建项目 (File--->New-->Project) 2.项目配置内容 3.选择配置项目的Group包名,Artifact项目名称 4.选择项目类型为web类型 5.创建成功,点击 ...

  2. Spring Boot的启动器Starter详解

    Spring Boot的启动器Starter详解 作者:chszs,未经博主允许不得转载.经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs Spring Boot ...

  3. Spring Boot 之使用 Json 详解

    Spring Boot 之使用 Json 详解 简介 Spring Boot 支持的 Json 库 Spring Web 中的序列化.反序列化 指定类的 Json 序列化.反序列化 @JsonTest ...

  4. Spring Boot(八):RabbitMQ详解

    Spring Boot(八):RabbitMQ详解 RabbitMQ 即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用. 消息中间件在互联网公司的使用中越来越多 ...

  5. Spring boot注解(annotation)含义详解

    Spring boot注解(annotation)含义详解 @Service用于标注业务层组件@Controller用于标注控制层组件(如struts中的action)@Repository用于标注数 ...

  6. Spring Boot Actuator监控使用详解

    在企业级应用中,学习了如何进行SpringBoot应用的功能开发,以及如何写单元测试.集成测试等还是不够的.在实际的软件开发中还需要:应用程序的监控和管理.SpringBoot的Actuator模块实 ...

  7. Spring Boot中@ConditionalOnProperty使用详解

    在Spring Boot的自动配置中经常看到@ConditionalOnProperty注解的使用,本篇文章带大家来了解一下该注解的功能. Spring Boot中的使用 在Spring Boot的源 ...

  8. Spring Boot启动命令参数详解及源码分析

    使用过Spring Boot,我们都知道通过java -jar可以快速启动Spring Boot项目.同时,也可以通过在执行jar -jar时传递参数来进行配置.本文带大家系统的了解一下Spring ...

  9. (转)Intellij IDEA 2017 debug断点调试技巧与总结详解篇

    背景:详细介绍idea的debug调试过程 Intellij IDEA 2017 debug断点调试技巧与总结详解篇

随机推荐

  1. as3 去掉字符串空白问题

    去掉内容的所有空白 function trim(str:String):String { })/g,""); } //[ ]内是一个中文空格一个英文空格 {}是说匹配一个到多个 / ...

  2. OpenSL ES 查询设备支持的SL Profiles

    opensl es 提供了三种类型:分别是 SL_PROFILES_PHONE(手机):SL_PROFILES_MUSIC(音乐); SL_PROFILES_GAME (游戏). 如果你使用的手机的开 ...

  3. c++ vector, 迭代器

    现代c++尽量使用vector(容器)和迭代器(相当于指针),少使用数组和指针,除非对程序执行效率有很高的要求. 容器优点,易于扩展,可通过push_back方法动态添加元素,数组不能动态添加元素. ...

  4. webserive学习记录3-eclipse创建webservice

    在用J2EE版的ECLIPSE学习WEBSERVICE的时候发现原来直接用该ECLIPSE就可以创建webservice,然后就自己动手用ECLIPSE自带的功能来建立WEBSERVICE服务端和客户 ...

  5. Linux 的伪终端的基本原理 及其在远程登录(SSH,telnet等)中的应用

    本文介绍了linux中伪终端的创建,介绍了终端的回显.行缓存.控制字符等特性,并在此基础上解释和模拟了telnet.SSH开启远程会话的过程. 一.轻量级远程登录 之前制作的一块嵌入式板子,安装了嵌入 ...

  6. php 时间操作归类

    对于php时间表示有两种: 一.‘xxxx-xx-xx'这种容易分辨的格式 二.unix时间戳格式 他们的之间的转换关系是: 常规格式转时间戳 $T='2014-05-24'; $Tr=strtoti ...

  7. JAVA数组详解

    package com.keke.demo; import java.text.ParseException;import java.text.SimpleDateFormat;import java ...

  8. Jacobi 矩阵

    求微分其实就是线性化,导数其实就是线性空间之间的线性变换,Jaocibian矩阵本质上就是导数. 比如,映射在处的导数就是在处的切空间到在处的切空间之间的线性映射.切空间都是矢量空间,都有基底,所以这 ...

  9. adb设置逍遥游

    . adb设置模拟器属性imei.imsi.手机号.sim卡号2. adb设置充电模式3. 开启|关闭飞行模式4. 获取所有已安装程序apk路径和包名5. adb对指定设备执行指令6. 安装应用7. ...

  10. Java 命令行运行参数

    Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOME"bin"java –option 来启动,-option为虚拟 ...