Spring的Java配置方式
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配置方式相关推荐
- SpringBoot_02 Spring的Java配置方式
1. Spring的Java配置方式 Java配置是Spring4.x推荐的配置方式,可以完全替代xml配置. 1.1. @Configuration 和 @Bean Spring的Java配置方 ...
- SSM框架笔记09:初探Spring——采用Java配置方式
初探Spring--采用Java配置方式 在上一讲的项目基础上继续. 1.在javaconfig包里创建杀龙任务类SlayDragonQuest package net.hw.spring.c ...
- 安装WGM需要java嘛,Spring的Java配置方式简单示例
创建maven工程导入依赖 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=&qu ...
- Spring的Java配置
Spring的Java配置 Java配置是Spring4.x推荐的配置方式,可以完全替代xml配置. 1.注解Configuration 和 注解@Bean Spring的Java配置方式是通过 @C ...
- java 注解加载配置文件_Spring的Java配置方式和读取properties配置文件
java配置是spring4.x推荐的配置方式,可以完全替代xml配置. 1.注解 @Configuration 和 @Bean spring的java配置方式是通过@Configuration和@B ...
- SSM框架笔记06:初探Spring——采用XML配置方式
初探Spring--采用XML配置方式 Spring框架是一个轻量级的企业级开发的一站式解决方案.所谓解决方案就是可以基于Spring解决Java EE开发的所有问题.Spring框架主要提供了I ...
- 常用注解[spring 的 java 配置] ||springboot 热部署
常用注解[spring 的 java 配置] 回顾学过的 spring 的注解 @Controller @RestController @Service @Repository @Component ...
- java取消 验证_使用Spring Security Java配置时禁用基本身份验证
我正在尝试使用Spring Security Java配置保护Web应用程序的安全. 这是配置的样子: @Configuration @EnableWebMvcSecurity public clas ...
- spring之java配置(springboot推荐的配置方式)
java配置概述 java配置各个注解的作用 /*** 该类是一个配置类,它的作用和bean.xml是一样的* spring中的新注解* Configuration* 作用:指定当前类是一个配置类* ...
最新文章
- 学python好不好-学习python的前景怎么样?
- mac json格式化工具_简洁好用的工具都是相似的
- spring事务配置的两种方式
- c++函数不允许递归_面试算法题:不会递归函数被面试官刷了下来!
- 从 5G 到智能革命,这篇文章值得一看
- 2021年SWPUACM暑假集训day2并查集算法
- Linux主流架构运维工作简单剖
- java加密 js解密_【Java】JavaScript 加密 Java 解密
- 计算机接口cad图,贴片机CAD图纸
- 匹配滤波器的MATLAB实现
- mysql健康档案管理系统_益康居民健康档案管理系统(网络版)
- 第12课:JSP动作 Jsp include动作(JSP教程 JSP入门实战教程 黄菊华Java网站开发系列教程)
- 线上bug快速定位小技巧 - chrome实时调试线上js代码
- Learning Center Probability Map for Detecting Objects in Aerial Images 论文学习笔记
- linux使用dd命令拷贝/生成文件
- dom4j解析xml碰到的问题
- 会员营销中,数字会员模式如何打造差异化会员服务
- 保研经验分享:痛并快乐的成长经历
- volo拉丁语_拉丁语:Latin Quotes and Phrases (V)
- 【并行计算】OpenMP编程和MPI编程简单教程
热门文章
- 移动端 像素渲染流水线与GPU Hack
- 保护ASP.NET 应用免受 CSRF 攻击
- Ubuntu 使用 heirloom-mail 调用外部邮箱 SMTP 服务器发送邮件
- Codeforces Round #193 (Div. 2)
- LIbGDX 示例Tests详解一:AccelerometerTest
- Asp.net中的web.config配置
- SQL Server日期格式的转换
- IAR实际使用过程中遇到的问题
- 多线程消息监听容器配置[ 消费者spring-kafka配置文件]
- 第七十二节,文本样式