本篇文章继续上篇文章讲解Ioc基础,这篇文章主要介绍零配置实现ioc,现在相信大家项目中也基本都是没有了xml配置文件。废话不多说。一起学习

代码示例

  • BookDao.java
package com.kevin.spring.demo1.dao;

/**
* 图书数据访问接口
*/
public interface BookDao { /**
* 添加图书
*
* @param bookName
* @return
*/
String addBook(String bookName);
}
  • BookDaoImpl.java
/**
* 接口实现类
*/
@Repository
public class BookDaoImpl implements BookDao {
/**
* 添加图书接口
*
* @param bookName
* @return
*/
public String addBook(String bookName) {
return "添加图书《" + bookName + "》成功";
}
}
  • BookService.java
@Service
public class BookService {
@Resource
BookDaoImpl bookDao; public void storeBook(String bookName){
String result = bookDao.addBook(bookName);
System.out.println(result);
} }
  • User.java
package com.kevin.spring.demo1.entity;

import org.springframework.stereotype.Component;

@Component
public class User { public User() {
System.out.println("创建User对象");
} public User(String msg) {
System.out.println("创建User对象" + msg);
} public void show() {
System.out.println("一个学生对象!");
}
}
  • ApplicationConfig.java
package com.kevin.spring.demo1.config;

import com.kevin.spring.demo1.entity.User;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration; @Configuration
@ComponentScan(basePackages = "com.kevin.spring.demo1")
public class ApplicationConfig { @Bean
public User getUser(){
return new User("成功");
}
}

测试类

    @org.junit.Test
public void testBook(){
ApplicationContext ctx = new AnnotationConfigApplicationContext(ApplicationConfig.class);
BookService bookService = ctx.getBean(BookService.class);
bookService.storeBook("周杰伦");
User user = ctx.getBean("getUser",User.class);
user.show();
}

运行结果

创建User对象
创建User对象成功
添加图书《周杰伦》成功
一个学生对象!

@Configuration

@Configuration 相当于配置文件中的<beans/>

@ComponentScan

@ComponentScan相当于配置文件中的context:component-scan

@Bean

@Bean相当于<bean/>,只能注解在方法和注解上,一般在方法上使用

方法名相当于id

这里注意上面获取user时用的是getUser,因为方法名相当于id

@Value获取properties配置

  • 新建一个dev.properties文件
boy.name = kevin
boy.age = 20
  • BoyUtil.java
package com.kevin.spring.demo1.util;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component; @Component
@PropertySource("classpath:dev.properties")
public class BoyUtil { @Value("${boy.name}")
private String name;
@Value("${boy.age}")
private String age; @Override
public String toString() {
return "BoyUtil{" +
"name='" + name + '\'' +
", age='" + age + '\'' +
'}';
}
//get和set方法省略
}

测试

    @org.junit.Test
public void testBoyUtil(){
ApplicationContext ctx = new AnnotationConfigApplicationContext(ApplicationConfig.class);
BoyUtil boyUtil = ctx.getBean(BoyUtil.class);
System.out.println(boyUtil);
}

输出结果

创建User对象
创建User对象成功
BoyUtil{name='kevin', age='20'}

好了,springIoc基础就暂时告一段落。玩的开心

代码:https://github.com/runzhenghengbin/spring-study

参考:https://www.cnblogs.com/best/p/5727935.html#_label3

spring学习总结(一)_Ioc基础(下)的更多相关文章

  1. spring学习总结(一)_Ioc基础(中)

    本篇文章继续上篇文章讲解Ioc基础,这篇文章主要介绍使用spring注解配置Ioc 上篇文章主要是通过xml配置文件进行Ioc的配置.这次进行改造下,通过注解进行配置 首先先看一个简单的demo 简单 ...

  2. spring学习总结(一)_Ioc基础(上)

    最近经历了许许多多的事情,学习荒废了很久.自己的目标成了摆设.现在要奋起直追了.最近发现了张果的博客.应该是一个教师.看了他写的spring系列的博客,写的不错.于是本文的内容参考自他的博客,当然都是 ...

  3. 【Spring学习笔记-1】Myeclipse下Spring环境搭建

    *.hl_mark_KMSmartTagPinkImg{background-color:#ffaaff;}*.hl_mark_KMSmartTagBlueImg{background-color:# ...

  4. Spring学习笔记一:基础概念

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6774310.html    一:Spring是什么 Spring的主要作用是作为对象的容器. 传统编程中,我们 ...

  5. 1.4(Spring学习笔记)Spring-JDBC基础

    一.Spring JDBC相关类 1.1 DriverManagerDataSource DriverManagerDataSource主要包含数据库连接地址,用户名,密码. 属性及含义如下配置所示: ...

  6. Spring学习随笔(2):Eclipse下Spring环境配置+入门项目

    1 准备工作 (按需下载) Eclipse 下载:http://www.eclipse.org/downloads/eclipse-packages/ : Spring 下载:http://repo. ...

  7. 【Spring学习】【Java基础回顾-数据类型】

    Java基础回顾过程中,之前对于Java相关基础知识都是从这个人的博客看一些,那边的内容看一下,觉得不够系统化,决定用xmind脑图的形式,将Java基础知识回顾的作为一个系列,当前正在做的会包含: ...

  8. 【Spring学习笔记-2】Myeclipse下第一个Spring程序-通过ClassPathXmlApplicationContext加载配置文件

    *.hl_mark_KMSmartTagPinkImg{background-color:#ffaaff;}*.hl_mark_KMSmartTagBlueImg{background-color:# ...

  9. JavaSE入门学习7:Java基础语法之语句(下)

    继续接着Java基础语法来:JavaSE入门学习5:Java基础语法(一)和JavaSE入门学习6:Java基础语法(二). 语句 Java经常使用的3种循环:while.do...while,for ...

随机推荐

  1. maven项目红叉问题

    maven项目红叉问题,有的时候是因为代码报错,有的时候是因为JDK的缘故,比如新建Maven项目,默认JDK为5,这时你在pom.xml配置了JDK为8.这时项目就报错了,就需要你update pr ...

  2. PAT A1141 PAT Ranking of Institutions (25 分)——排序,结构体初始化

    After each PAT, the PAT Center will announce the ranking of institutions based on their students' pe ...

  3. AI 循环神经网络(RNN)

    循环神经网络(Recurrent Neural Network,简称RNN),通常用于处理序列数据.正如卷积神经网络通常用于处理网格数据(例如图像)一样. 1.展开计算图 输入.输出.记忆 权值 2. ...

  4. Euler:欧拉函数&素数筛

    一.欧拉函数 欧拉函数是小于x的整数中与x互质的数的个数,一般用φ(x)表示. 通式:   其中p1, p2……pn为x的所有质因数,x是不为0的整数. 比如x=12,拆成质因数为12=2*2*3, ...

  5. Linux下NTP服务器配置

    简介 原理 配置ntp服务器 进行同步 一.简介 在计算时间的时候,最准确的计算应该是使用『原子震荡周期』所计算的物理时钟了( Atomic Clock, 也被称为原子钟 ),这也被定义为标准时间(I ...

  6. cc攻击和ddos攻击的区别和攻防 + 调SYN连接参数

    1.一个是WEB网络层拒绝服务攻击(DDoS),一个是WEB应用层拒绝服务攻击(CC),网络层就是利用肉鸡的流量去攻击目标网站的服务器,针对比较本源的东西去攻击,服务器瘫痪了,那么运行在服务器上的网站 ...

  7. NPOI DataTable导出excel

    /// <summary> /// DataTable导出到Excel文件 /// </summary> /// <param name="dtSource&q ...

  8. 如何在Virtual box 下安装Mac os

    这几天,突然奇想,想要试一试Mac  os ,毕竟是贵族系统,装完之后,确实感觉字体很不错. 其他更优秀的功能还没发现,不过,还是希望在这里做一个记录. 以下附录我参照的网址:https://blog ...

  9. Luogu P2597 [ZJOI2012]灾难

    一道非常综合的好题然后就莫名其妙地知道了动态LCA的求法 果然是ZJOI的题目,只能说这思路服了 首先我们发现每次操作只会灭绝一种动物,然后我们想一下就知道如果有\(n(n>=2)\)个食物的动 ...

  10. [Spark][Python]DataFrame select 操作例子II

    [Spark][Python]DataFrame中取出有限个记录的   继续 In [4]: peopleDF.select("age","name") In ...