一、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. Procedure-Function mysql

    1.基本用法 drop PROCEDURE if EXISTS sp1; -- 如果存在sp1存储过程则删除掉 create PROCEDURE sp1() SELECT 1; --创建最简单的存储过 ...

  2. visual c++ 中的stdafx.h头文件的作用

    stdafx.h VC工程里面经常见到stdafx.h这个头文件,以前也没有特别注意,但是这个文件用不好经常会出错,所以就GOOGLE了一下,总算是弄清楚了... stdafx的英文全称为:Stand ...

  3. Social media users of the world unite!

    Social media users of the world unite!全世界社交媒体用户联合起来!If Plato were alive today, he might well regard ...

  4. iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 处理静态资源

    视频地址:https://www.cctalk.com/v/15114923882788 处理静态资源 无非花开花落,静静. 指定静态资源目录 这里我们使用第三方中间件: koa-static 安装并 ...

  5. 作业:WordCount--实现字符数,单词数,行数的统计

    1. Gitee 地址 https://gitee.com/fyxiaobai/wordcount 2. PSP表格 PSP2.1 PSP阶段 预估耗时 (分钟) 实际耗时 (分钟) Planning ...

  6. Dynomite 安装配置

    Dynomite受Dynamo白皮书的启发,是一种用于不同存储引擎和协议的轻量级的分布式的Dynamo层. 目前包括Redis和Memcached. Dynomite支持多数据中心复制,旨在实现高可用 ...

  7. Mysql 内部默认排序

    mysql默认的排序: https://forums.mysql.com/read.php?21,239471,239688#msg-239688 Do not depend on order whe ...

  8. R及Rstuio下载及配置,及基本使用介绍

    1.R和Rstudio下载地址 https://cran.rstudio.com/a 2.Rstudio 的配置 外观.代码显示比例配置 选中tools 选中globle options 选中appe ...

  9. DEXSeq

    1)Introduction DEXSeq是一种在多个比较RNA-seq实验中,检验差异外显子使用情况的方法. 通过差异外显子使用(DEU),我们指的是由实验条件引起的外显子相对使用的变化. 外显子的 ...

  10. for循环计算阶乘

    int x = 10; for(int y = x - 1; y >= 1; y--) { x = x * y; } System.out.println(x); 从10乘到1的阶乘写法. lo ...