Java配置是Spring4.x推荐的配置方式,可以完全替代xml配置。

1     @Configuration 和 @Bean

Spring的Java配置方式是通过 @Configuration 和 @Bean 这两个注解实现的:

1、@Configuration 作用于类上,相当于一个xml配置文件;

2、@Bean 作用于方法上,相当于xml配置中的<bean>;

2 示例

该示例演示了通过Java配置的方式进行配置Spring,并且实现了Spring IOC功能。

  2.1 创建工程以及导入依赖(Maven)

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>cn.qiaoliqiang</groupId><artifactId>spring-boot</artifactId><version>0.0.1-SNAPSHOT</version><packaging>war</packaging><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>4.3.7.RELEASE</version></dependency><!-- 连接池 --><dependency><groupId>com.jolbox</groupId><artifactId>bonecp-spring</artifactId><version>0.8.0.RELEASE</version></dependency></dependencies><build><finalName>${project.artifactId}</finalName><plugins><!-- 资源文件拷贝插件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><configuration><encoding>UTF-8</encoding></configuration></plugin><!-- java编译插件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.7</source><target>1.7</target><encoding>UTF-8</encoding></configuration></plugin></plugins><pluginManagement><plugins><!-- 配置Tomcat插件 --><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version></plugin></plugins></pluginManagement></build>
</project>

  2.2   编写User对象

package cn.qlq;public class User {private String username;private String password;private int 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;}}

 

  2.3   编写UserDAO 用于模拟与数据库的交互(注意此DAO没有打注解)

package cn.qlq;import java.util.ArrayList;
import java.util.List;/*** 模拟UserDao查询数据库* * @author liqiang**/
public class UserDao {/*** 模拟查到10个 用户* * @return*/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;}}

  2.4   编写UserService 用于实现User数据操作业务逻辑(声明service注解,且自动注入dao对象)

package cn.qlq;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;//声明是service层对象
@Service
public class UserService {@Autowired // 自动注入Spring容器中的dao层对象(byType注入)private UserDao UserDao;public List<User> queryUserList() {// 调用userDAO中的方法进行查询return this.UserDao.queryUserList();}}

  2.5   编写SpringConfig 用于实例化Spring容器

打上@Configuration注解,同时打上@ComponentScan配置扫描的包。

@Bean用于向容器中放入对象,如果在UserDao类前面打上@Repository注解就不用@Bean方式

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

注意:方法名是作为返回对象的名字的,因此一般不带get,也就是上述放入spring容器的bean的name为getUserDAO

  2.6   编写测试方法 用于启动Spring容器

package cn.qlq;import java.util.List;import org.springframework.context.annotation.AnnotationConfigApplicationContext;/*** 测试类* * @author liqiang**/
public class Test {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.getPassword());}// 销毁该容器
        context.destroy();}}

结果:

username_0, password_0, password_0
username_1, password_1, password_1
username_2, password_2, password_2
username_3, password_3, password_3
username_4, password_4, password_4
username_5, password_5, password_5
username_6, password_6, password_6
username_7, password_7, password_7
username_8, password_8, password_8
username_9, password_9, password_9

总结:

  从以上的示例中可以看出,使用Java代码就完美的替代xml配置文件,并且结构更加的清晰。

 使用方法:

  Spring对Java配置的支持是由@Configuration注解和@Bean注解来实现的。由@Bean注解的 方法将会实例化、配置和初始化一个 新对象,这个对象将由Spring的IoC容器来管理。@Bean声明所起到的作用与<bean/> 元素类似。被 @Configuration所注解的类则表示这个类的主要目的是作为bean定义的资源。被@Configuration声明的类可以通过在同一个类的 内部调用@bean方法来设置嵌入bean的依赖关系。

最简单的@Configuration 声明类请参考下面的代码:(放入spring的name为方法名字,因此一般不加get)

@Configuration
public class AppConfig{    @Bean    public MyService myService() {    return new MyServiceImpl();    }
}  

对于上面的@Beans配置文件相同的XML配置文件如下:

<beans>    <bean id="myService" class="com.somnus.services.MyServiceImpl"/> </beans> 

上述配置方式的实例化方式如下:利用AnnotationConfigApplicationContext 类进行实例化

public static void main(String[] args) {    ApplicationContext ctx = new AnnotationConfigApplicationContext(AppConfig.class);    MyService myService = ctx.getBean(MyService.class);    myService.doStuff();
} 

要使用组件组建扫描,仅需用@Configuration进行注解即可:

@Configuration
@ComponentScan(basePackages = "com.somnus")
public class AppConfig  {    ...
}  

在上面的例子中,com.acme包首先会被扫到,然后再容器内查找被@Component 声明的类,找到后将这些类按照Sring bean定义进行注册。

Spring的Java配置方式相关推荐

  1. SpringBoot_02 Spring的Java配置方式

    1.   Spring的Java配置方式 Java配置是Spring4.x推荐的配置方式,可以完全替代xml配置. 1.1. @Configuration 和 @Bean Spring的Java配置方 ...

  2. SSM框架笔记09:初探Spring——采用Java配置方式

    初探Spring--采用Java配置方式   在上一讲的项目基础上继续.   1.在javaconfig包里创建杀龙任务类SlayDragonQuest package net.hw.spring.c ...

  3. 安装WGM需要java嘛,Spring的Java配置方式简单示例

    创建maven工程导入依赖 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=&qu ...

  4. Spring的Java配置

    Spring的Java配置 Java配置是Spring4.x推荐的配置方式,可以完全替代xml配置. 1.注解Configuration 和 注解@Bean Spring的Java配置方式是通过 @C ...

  5. java 注解加载配置文件_Spring的Java配置方式和读取properties配置文件

    java配置是spring4.x推荐的配置方式,可以完全替代xml配置. 1.注解 @Configuration 和 @Bean spring的java配置方式是通过@Configuration和@B ...

  6. SSM框架笔记06:初探Spring——采用XML配置方式

    初探Spring--采用XML配置方式   Spring框架是一个轻量级的企业级开发的一站式解决方案.所谓解决方案就是可以基于Spring解决Java EE开发的所有问题.Spring框架主要提供了I ...

  7. 常用注解[spring 的 java 配置] ||springboot 热部署

    常用注解[spring 的 java 配置] 回顾学过的 spring 的注解 @Controller @RestController @Service @Repository @Component ...

  8. java取消 验证_使用Spring Security Java配置时禁用基本身份验证

    我正在尝试使用Spring Security Java配置保护Web应用程序的安全. 这是配置的样子: @Configuration @EnableWebMvcSecurity public clas ...

  9. spring之java配置(springboot推荐的配置方式)

    java配置概述 java配置各个注解的作用 /*** 该类是一个配置类,它的作用和bean.xml是一样的* spring中的新注解* Configuration* 作用:指定当前类是一个配置类* ...

最新文章

  1. 学python好不好-学习python的前景怎么样?
  2. mac json格式化工具_简洁好用的工具都是相似的
  3. spring事务配置的两种方式
  4. c++函数不允许递归_面试算法题:不会递归函数被面试官刷了下来!
  5. 从 5G 到智能革命,这篇文章值得一看
  6. 2021年SWPUACM暑假集训day2并查集算法
  7. Linux主流架构运维工作简单剖
  8. java加密 js解密_【Java】JavaScript 加密 Java 解密
  9. 计算机接口cad图,贴片机CAD图纸
  10. 匹配滤波器的MATLAB实现
  11. mysql健康档案管理系统_益康居民健康档案管理系统(网络版)
  12. 第12课:JSP动作 Jsp include动作(JSP教程 JSP入门实战教程 黄菊华Java网站开发系列教程)
  13. 线上bug快速定位小技巧 - chrome实时调试线上js代码
  14. Learning Center Probability Map for Detecting Objects in Aerial Images 论文学习笔记
  15. linux使用dd命令拷贝/生成文件
  16. dom4j解析xml碰到的问题
  17. 会员营销中,数字会员模式如何打造差异化会员服务
  18. 保研经验分享:痛并快乐的成长经历
  19. volo拉丁语_拉丁语:Latin Quotes and Phrases (V)
  20. 【并行计算】OpenMP编程和MPI编程简单教程

热门文章

  1. 移动端 像素渲染流水线与GPU Hack
  2. 保护ASP.NET 应用免受 CSRF 攻击
  3. Ubuntu 使用 heirloom-mail 调用外部邮箱 SMTP 服务器发送邮件
  4. Codeforces Round #193 (Div. 2)
  5. LIbGDX 示例Tests详解一:AccelerometerTest
  6. Asp.net中的web.config配置
  7. SQL Server日期格式的转换
  8. IAR实际使用过程中遇到的问题
  9. 多线程消息监听容器配置[ 消费者spring-kafka配置文件]
  10. 第七十二节,文本样式