一、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. javaEncode

    1.MD5加密 md5多用于用户密码加密或者签名使用,因md5不可逆,可用于身份验证. MessageDigest md5=MessageDigest.getInstance("MD5&qu ...

  2. ArrayList 原理(2)

    1. 概述 关于Java集合的小抄中是这样描述的: 以数组实现.节约空间,但数组有容量限制.超出限制时会增加50%容量,用System.arraycopy()复制到新的数组,因此最好能给出数组大小的预 ...

  3. 磁盘IO过高时的处理办法

    针对系统中磁盘IO负载过高的指导性操作 主要命令:echo deadline > /sys/block/sda/queue/scheduler 注:以下的内容仅是提供参考,如果磁盘IO确实比较大 ...

  4. ASP.Net 下载大文件的实现

    当我们的网站需要支持下载大文件时,如果不做控制可能会导致用户在访问下载页面时发生无响应,使得浏览器崩溃.可以参考如下代码来避免这个问题. 关于此代码的几点说明: 1. 将数据分成较小的部分,然后将其移 ...

  5. fm 讲解加代码

    转自: 博客 http://blog.csdn.net/google19890102/article/details/45532745/ github https://github.com/zhaoz ...

  6. web中的中文乱码处理

    1.页面设置pageEncoding="UTF-8" <%@ page contentType="text/html;charset=UTF-8" lan ...

  7. haproxy 参数说明

    说明: 1.haproxy的配置段有"global","defaults","listen","frontend"和&q ...

  8. thrust

    thrust - Bing dictionary US[θrʌst]UK[θrʌst] v.刺:塞:冲:挤 n.刺:插:重点:猛推 网络推力:插入:戳 变形Plural Form:thrusts:Pr ...

  9. iOS 处理cell选中时背景颜色消息问题

    在cell上添加子控件,在我们点击或者长按的时候,如果子控件有背景颜色,这时候背景颜色就会没有了,这个时候产品经理过来一顿怼,

  10. Django的models操作

    一.先看单表操作 增 方式1: models.book.objects.create( Book_name = "aaa", Book_info = "bbb" ...