从Spring3.0开始,Spring支持以Java配置的方式来代替XML配置。这一点说起来其实有点可笑,XML配置的方式最初被创建出来就是为了让配置与程序员无关。可是最终我们发现,绝大多数的那些配置最终还是回到了程序员手里。于是,从Spring3.0开始,我们又将主动权交回到了自己手里。

让我们看一个最简的Spring注解案例:

1.创建测试项目

User

package com.zuikc.bean;

public class User {

private String username;

private String password;

private int age;

public User(String username, String password, int age){

this.username = username;

this.password = password;

this.age = 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 int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

@Override

public String toString() {

return "User{" +

"username='" + username + '\'' +

", password='" + password + '\'' +

", age=" + age +

'}';

}

}

UserDao

package com.zuikc.dao;

import com.zuikc.bean.User;

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("username_" + i,"password_" + i ,i);

result.add(user);

}

return result;

}

}

UserService

package com.zuikc.service;

import com.zuikc.bean.User;

import com.zuikc.dao.UserDao;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Service;

import java.util.List;

@Service

public class UserService {

@Autowired

private UserDao userDAO;

public List<User> queryUserList() {

return this.userDAO.queryUserList();

}

}

2.Spring的Java配置方式

一直到目前为止,我们看到的从bean到service,跟传统的ssm没有任何区别。理论上,这个时候我们就要去配置spring的配置文件了,但是这个时候我们决定抛弃这种传统的做法,改而使用java配置的方式。

让我们首先创建一个java类,比如叫SpringConfig(名字其实可以任意),代码如下:

SpringConfig,

package com.zuikc.config;

import com.zuikc.dao.UserDao;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.ComponentScan;

import org.springframework.context.annotation.Configuration;

@Configuration //表明该类为配置类,相当于xml配置

@ComponentScan(basePackages = "com.zuikc") //配置扫描包

public class SpringConfig {

@Bean // 配置bean

public UserDao getUserDAO(){

return new UserDao(); // 直接new对象做演示

}

}

现在让我们依次解释这个类中的3个注解。

@Configuration,作用于类上,这表明这就是一个配置类,相当于当前这个类就是之前的xml配置文件;

@ ComponentScan,是不是有点熟悉,这是在配置spring的扫描包;

@Bean 作用于方法上,相当于xml配置中的<bean>。以前的bean,是在xml中配置,然后由spring容器生产出来。现在呢,不要容器生产了,由我们自己生产;

3.测试

写一个测试主类吧:

package com.zuikc;

import com.zuikc.bean.User;

import com.zuikc.config.SpringConfig;

import com.zuikc.service.UserService;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

import java.util.List;

public class SampleTest01 {

public static void main(String[] args) {

// 实例化Spring容器

AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);

// 获取Bean对象

UserService userService = context.getBean(UserService.class);

List<User> list = userService.queryUserList();

for (User user : list) {

System.out.println(user);

}

// 容器销毁

context.destroy();

}

}

结果为:

4.用Java配置支持配置文件读取

我们可以通过@PropertySource指定配置文件,并通过@Value注解获取值,具体用法如下,

创建配置文件properties,内容如下

url=jdbc:mysql://localhost:3306/jdbctestdb

然后比如修改UserDao,

启动代码,看看是否已经url是否已经得到了:)。

感谢关注“码农星球”。本文版权属于“码农星球”。我们提供咨询和培训服务,关于本文有任何困惑,请关注并联系我们。

Java全栈程序员之08:MAVEN+JAVA配置的更多相关文章

  1. Java全栈程序员之03:Ubuntu下安装idea

    JetBrains的产品我曾经用过很长一段时间,它们是resharper和dotcover.VS号称宇宙最强IDE,直到它遇到了resharper,我们才知道,原来vs可以更好.DotCover是一个 ...

  2. Java全栈程序员之01:做个Linux下的程序猿

    Windows10正在成为史上口碑最差的Windows系统 (图侵删) 我曾经花了数次1小时去寻找解决方案去关闭自动更新,包括停掉服务.修改注册表等等.但是都没有成功. 微软自身是知道这个问题的,但就 ...

  3. Java全栈程序员之02:Ubuntu下Java环境安装、配置、测试

    在上文讲完之后,我们手里的ubuntu只能算是一个上网机,什么也干不了,本篇我们将折腾它为开发机. 这里,我们这里假定你对linux体系是初级选手,所以本篇会讲的啰嗦一点,高手就出门左转吧. 1.安装 ...

  4. Java全栈程序员之05:Ubuntu下安装TOMCAT、集成到IDEA

    使用idea绝不是开发一个Hello World这么简单,现在我们要使用idea进行企业级开发(也就是JavaEE)的准备了,那么首先,我们就得有一个web应用服务器.选什么呢?当然首选是大名鼎鼎的T ...

  5. Java全栈程序员之07:IDEA中使用MAVEN构架生产级的Web项目

    在上一篇我们介绍了如何在IDEA中使用MAVEN,以及如何创建依赖等.那么在这一篇中,我们就试图搭建一个生产级的解决方案,大家可以使用这个解决方案作为骨架代码来搭建自己的开发环境. 在这里,我们要完成 ...

  6. Java全栈程序员之06:IDEA中MAVEN项目依赖及运行

    MAVEN已经成为事实上的企业项目开发中的项目类型.无论是IDEA还是Eclipse,都已经默认支持创建MAVEN项目.严格意义上来说,MAVEN不是一种新的JavaEE项目类型.它凌驾于所以的项目类 ...

  7. Java全栈程序员之04:Ubuntu下安装MySQL、注册服务及Navcat

    在安装MySQL之前,我们先来介绍一下Ubuntu下软件的安装方式.首先回顾下,我们安装JDK,使用的是后缀名为tar.gz的安装包.安装idea,使用的是tar.gz:那有没有别的安装方式呢? 1. ...

  8. Java全栈程序员之09:IDEA+GitHub

    GitHub是源码托管站点,其依赖于Git这个源码管理工具来进行代码的托管.所以将我们的代码托管到GitHub之前,我们需要安装Git. 1.Git安装 可以通过输入git命令来确定是否在本机已经安装 ...

  9. [转]乐死我了,怎么样成为一个全栈程序员(Full Stack Developer),附我想专注的语言

    受苏格拉底大神的启迪,我也来谈谈全栈.禅师:成为全栈工程师,这个问题等于如何成为全才,有可能吗码农:有可能,不过可能性比较低,因为达芬奇这类人毕竟是百年一遇的奇才.不过,因为我热爱这个行业,也有一定天 ...

随机推荐

  1. spark操作Kudu之写 - 使用DataFrame API

    在通过DataFrame API编写时,目前只支持一种模式“append”.尚未实现的“覆盖”模式 import org.apache.kudu.spark.kudu._ import org.apa ...

  2. lvs - mask标记

    将两个服务绑定在一个集群服务中 如何将两种请求绑定在一个集群中通过一个director来调度, 这里需要iptable工具配合实现.首先在prerouting链上做一个标记,通过标记来调度 起两个服务 ...

  3. ELK使用1-Elasticsearch使用

    一.es 1.通过curl命令获取es进群信息 a.curl -i(设置协议的头信息) -XGET 'http:192.168.30.41:9200/_count' b.查看集群状态 curl -XG ...

  4. java的IO流的一些测试

    public class Demo02 { public static void main(String[] args) { //获取当前毫秒值,用于测试 long l = System.curren ...

  5. day56 文件 文档处理,事件

    前情回顾: 1. 前情回顾 0. 选择器补充 - 属性选择器 - $("[egon]") - $("[type='text']") - $("inpu ...

  6. Mysql乐观锁与悲观锁

    乐观锁和悲观锁是两种常见的资源并发锁设计思路,也是并发编程中一个非常重要的基础理念. Mysql的悲观锁 什么是悲观锁(Pessimistic Lock): 悲观锁的特点是先获取锁,再进行业务操作,即 ...

  7. Raspberry Camera详解+picamera库+Opencv控制

    使用树莓派的摄像头,将树莓派自身提供的picamera的API数据转换为Python Oencv可用图像数据: # import the necessary packages from picamer ...

  8. word,excel,ppt在线预览功能

    我们在开发web项目时,尤其类似oa功能时总会遇到上传附件并在线预览的功能,发现一款api比较好使,下面简单介绍一下. 微软官网本身提供了在线预览的API 首先将要预览的文档转成.docx,.xlsx ...

  9. HDU 2841-Visible Trees 【容斥】

    <题目链接> 题目大意: 有一个农民,站在(0,0)点,从(1,1)点到(m,n)点每个点上有棵树,问这个农民能看到多少棵树.(如果多棵树在同一条直线上,那么他只能看到一颗) 解题分析: ...

  10. Vue proxyTable 解决开发环境的跨域问题

    在 config/index.js 配置文件中,添加 dev: { proxyTable: { '/ssp/withdraw': { target: 'http://dev.home.phiwifi. ...