@Configuration作用在类上,相当于一个xml文件

@bean作用于方法上,相当于xml配置中的<bean>标签

一个例子:

新建一个Springboot工程

新建一个User类:User.java

 package com.springboot.test;

 //建立一个User对象
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;
}
}

新建一个数据库管理类:UserDAO.java,这里模拟数据库查询操作。

 package com.springboot.test;

 import java.util.ArrayList;
import java.util.List; // 模拟数据库操作
public class UserDAO {
public List<User> queryUserList(){
List <User> result = new ArrayList<User>();
for (int i=0;i<10;i++){
User user = new User();
user.setUsername("username:"+i);
user.setPassword("password:"+i);
user.setAge(i+1);
result.add(user);
}
return result;
}
}

新建一个UserService.java

 package com.springboot.test;

 import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import java.util.List; @Service
public class UserService { @Autowired
//注入spring容器中的bean对象
private UserDAO userDAO; public List<User> queryUserList(){
//调用userDAO中的方法进行查询
return userDAO.queryUserList();
}
}

新建配置文件SpringConfig.java,相当于在Spring中的xml配置。

 package com.springboot.test;

 import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration; @Configuration //通过该注解表明该类是一个Spring的配置,相当于一个xml文件
@ComponentScan(basePackages = "com.springboot.test") //配置扫描包
public class SpringConfig { @Bean //通过该注解来表明一个Bean对象,相当于一个xml中的<bean>标签
public UserDAO getUserDAO(){
return new UserDAO(); //直接new对象做演示
}
}

新建一个测试文件TestApplication.java

 package com.springboot.test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext; import java.util.List; public class TestApplication {
public static void main(String[] args) {
//通过Java配置来实例化Spring容器
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);
//在Spring容器中获取Bean对象
UserService userService = context.getBean(UserService.class); //调用对象中的方法
List<User> list = userService.queryUserList();
for (User user:list){
System.out.println(user.getUsername() +", "+ user.getPassword()+", "+user.getAge());
} //销毁context
context.destroy();
} }

文件结构

运行输出

username:0, password:0, 1
username:1, password:1, 2
username:2, password:2, 3
username:3, password:3, 4
username:4, password:4, 5
username:5, password:5, 6
username:6, password:6, 7
username:7, password:7, 8
username:8, password:8, 9
username:9, password:9, 10

可以看出,使用springboot可以通过注解的方式对容器进行配置,可以避免使用晦涩费劲的xml配置,方便开发以及后续的管理。

Java框架spring Boot学习笔记(七):@Configuration,@bean注解的更多相关文章

  1. Java框架spring Boot学习笔记(六):Spring Boot事务管理

    SpringBoot和Java框架spring 学习笔记(十九):事务管理(注解管理)所讲的类似,使用@Transactional注解便可以轻松实现事务管理.

  2. Java框架spring Boot学习笔记(三):Controller的使用

    Controller注解介绍 @Controller:处理http请求 @RestController: Spirng4之后新加的注解,其实是一个组合注解等同于@ResponseBody和@Contr ...

  3. Java框架spring Boot学习笔记(二):Hello Spring Boot、以及项目属性配置

    新建一个新建一个SpringBootTest工程 新建一个HelloController.java文件 package com.example.demo; import org.springframe ...

  4. Java框架spring Boot学习笔记(一):开始第一个项目

    新建一个项目,选择Spring initializr 修改group和项目名 添加依赖包Web,MongoDB 设置保存位置和工程名 新建一个test的文件 输入代码: package com.xxx ...

  5. Java框架spring Boot学习笔记(五):Spring Boot操作MySQL数据库增、删、改、查

    在pom.xml添加一下代码,添加操作MySQL的依赖jar包. <dependency> <groupId>org.springframework.boot</grou ...

  6. Java框架spring Boot学习笔记(四):Spring Boot操作MySQL数据库

    在pom.xml添加一下代码,添加操作MySQL的依赖jar包. <dependency> <groupId>org.springframework.boot</grou ...

  7. Java框架spring Boot学习笔记(十):传递数据到html页面的例子

    新建一个templates文件夹和index.html <!DOCTYPE html> <html> <head lang="en"> < ...

  8. Java框架spring Boot学习笔记(九):一个简单的RESTful API

    RESTful API设计需求如下: User.java package com.springboot.test; public class User { private Long id; priva ...

  9. Java框架spring Boot学习笔记(八):@PropertySource,@Value注解

    获取配置文件 忽略配置文件不存在时报错

随机推荐

  1. 前端-JavaScript2-5——JavaScript之运算符进阶

    运算符(Operators,也翻译为操作符),是发起运算的最简单形式. 运算符的分类见仁见智,我们的课程对运算符进行如下分类: 数学运算符(Arithmetic operators) 比较运算符(Co ...

  2. 读完这一篇,字符串格式化界的“白富美”(f-strings)抱回家!

    f-strings 从Python 3.6开始,新引入了一种字符串格式化方法,称为“格式化字符串常量”(formatted string literal),简称f-strings.相比于%.str.f ...

  3. Intent之跳转总结

    ) { localIntent.setAction(; ActivityManager am = (ActivityManager) context.) {) { ) { // android 5.0 ...

  4. 使用Oracle BBED修改Oracle11g数据库实例名称

    by 蔡建良 2019-2-19 数据库名称存在SYSTEM01.DBF表空间,所以先查出你要修改的数据库的DBID和DBNAME. 一. 查询数据库实例名称 加载ORCL实例数据库的SYSTEM01 ...

  5. text_CNN笔记

    Text-CNN模型作为文本分类模型,通过验证实验以及业界的共识,在文本分类任务中,CNN模型已经能够取到比较好的结果,虽然在某些数据集上效果可能会比RNN稍差一点,但是CNN模型训练的效率更高.所以 ...

  6. docker swarm 搭建与服务更新

    一,docker swarm 是什么 Docker Swarm.Docker Machine与Docker Compose号称Docker三剑客Docker Swarm 和 Docker Compos ...

  7. webservice之jax-ws实现方式

    1.什么是webservice? webservice是一种远程资源调用技术,它的实现方式主要分为两种,第一种是jaxws方式,它是面向方法的,它的数据类型是xml是基于soap实现传输:第二种是ja ...

  8. 游戏AI

    玩游戏太累了,我或许可以写一个机器人帮我玩游戏发QQ发空间啥的

  9. python Excel数据导出

    import pymysql,os,time,xlwtpymysql.install_as_MySQLdb() try: #创建一个excel工作簿,编码utf-8,表格中支持中文 wb=xlwt.W ...

  10. vue每次修改刷新当前子组件

    刚入门vue,发现很多坑,对很多框架兼容性不太友好,比如layui等 每次删除相关信息,更新相关信息,不会主动刷新当前页面内容,只能手动刷新 第一步,我们在跟组件理由设置一个参数,用来判断是否需要刷新 ...