2019独角兽企业重金招聘Python工程师标准>>>
@Configuration 和 @Bean
Spring的Java配置方式是通过 @Configuration 和 @Bean 这两个注解实现的:
1、@Configuration 作用于类上,相当于一个xml配置文件;
2、@Bean 作用于方法上,相当于xml配置中的<bean>;
pom.xml
<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>demo.springboot</groupId><artifactId>springboot</artifactId><version>0.0.1-SNAPSHOT</version><packaging>war</packaging><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>4.3.11.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>
pojo
package demo.pojo;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;}
}
dao
package demo.dao;import java.util.ArrayList;
import java.util.List;import demo.pojo.User;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;}}
service
package demo.service;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import demo.dao.UserDao;
import demo.pojo.User;@Service
public class UserService {@Autowiredprivate UserDao dao;public List<User> queryUserList() {return dao.queryUserList();}
}
config:java配置
package demo.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;import demo.dao.UserDao;@Configuration //相当于一个spring.xml
@ComponentScan(basePackages="demo")//配置扫描包
public class SpringConfig {@Bean // 通过该注解来表明是一个Bean对象,相当于xml中的<bean>public UserDao getUserDao(){return new UserDao(); // 直接new对象}
}
测试类
package test;import java.util.List;import org.springframework.context.annotation.AnnotationConfigApplicationContext;import demo.config.SpringConfig;
import demo.pojo.User;
import demo.service.UserService;public class SpringBootTest {public static void main(String[] args) {AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);UserService userService = context.getBean(UserService.class);List<User> queryUserList = userService.queryUserList();for (User user : queryUserList) {System.out.println(user);}//销毁容器context.destroy();}
}
使用Java代码就完美的替代xml配置文件,并且结构更加的清晰。