说明:Java配置方式就是使用Java类来替代Spring原先的xml文件
@Confuration:使用在类上,说明该类是一个配置类相当于一个xml文件
@Bean:使用在方法上,作用是返回对象将对象保存在IOC容器中相当于XML文件中的bean标签
1)在pom文件中引入依赖
4.0.0
com.zhiyou100
java_conf
1.0-SNAPSHOT
1.7.7
1.2.17
4.3.7.RELEASE
org.springframework
spring-core
${spring.version}
org.springframework
spring-beans
${spring.version}
org.springframework
spring-context
${spring.version}
org.springframework
spring-jdbc
${spring.version}
org.springframework
spring-tx
${spring.version}
org.springframework
spring-web
${spring.version}
org.springframework
spring-webmvc
${spring.version}
log4j
log4j
${log4j.version}
org.slf4j
slf4j-api
${slf4j.version}
org.slf4j
slf4j-log4j12
${slf4j.version}
junit
junit
4.11
2)创建实体类pojo
package pojo;
public class User {
//主要就下面两行代码,其他事setter,getter,tostring……
private String name;
private String pass;
public User() {
}
public User(String name, String pass) {
this.name = name;
this.pass = pass;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", pass='" + pass + '\'' +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
}
3)创建dao层
package dao;
import pojo.User;
import java.util.ArrayList;
import java.util.List;
public class UserDao {
//模拟连接数据库
//使用集合当做数据库
public List queryAll(){
//创建一个新的list集合,用来承接数据,充当返回值
List users=new ArrayList();
//添加数据name,pass
for (int i=0;i<10;i++){
User user = new User();
user.setName("name==>"+i);
user.setPass("pass==>"+i);
users.add(user);
}
return users;
}
}
4)创建service层
package service;
import dao.UserDao;
import pojo.User;
import javax.annotation.Resource;
import java.util.List;
public class UserService {
//注入dao层对象
@Resource
public UserDao userDao;
public List query(){
return userDao.queryAll();
}
}
5)创建Java配置类
package spring_conf;
import dao.UserDao;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import service.UserService;
/**
* spring的配置类
* 说明是一个配置类,可替代xml文件,使用注解@Configuration
*/
@Configuration
public class conf {
//创建对象,使用@Bean注解
@Bean
public UserDao userDao(){
return new UserDao();
}
@Bean
public UserService userService(){
return new UserService();
}
}
6)创建测试类
package conftest;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import pojo.User;
import service.UserService;
import spring_conf.conf;
import java.util.List;
public class java_confTest {
public static void main(String[] args) {
//获取java配置类
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(conf.class);
//获取ioc容器中的对象
UserService userService = (UserService) context.getBean("userService");
//调用方法
List query = userService.query();
for (User user:query) {
System.out.println(user);
}
}
}
说明:我们可以使用@PropertySource注解指定要读取的文件,通过@Value注解获取值
这里我们先创建一个外部文件db.properties
mysql_driver=com.mysql.jdbc.Driver
mysql_url=jdbc:mysql:///ssm
mysql_user=root
mysql_pass=123456
然后在pom.xml中建立mysql的依赖
mysql
mysql-connector-java
5.1.47
使用@PropertySource注解
属性:
Value:数组,写文件路径
ignoreResourceNotFound:文件找不到是否继续执行,默认值是false,改成true生效
比如:
//声明变量保存driver
@Value("${mysql_driver}")
private String driver_class;
@Value("${mysql_url}")
private String url;
@Value("${mysql_user}")
private String username;
@Value("${mysql_pass}")
private String password;
//配置数据源
@Bean
public DriverManagerDataSource dataSource(){
DriverManagerDataSource dataSource = new DriverManagerDataSource();
//设置driver
dataSource.setDriverClassName(driver_class);
//设置url
dataSource.setUrl(url);
//设置password
dataSource.setPassword(password);
//设置username
dataSource.setUsername(username);
//返回dateSource
return dataSource;
}
创建测试类
@Test
public void test2(){
//获取java配置类
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(conf.class);
//获取dateSource
DriverManagerDataSource dataSource = (DriverManagerDataSource) context.getBean("dataSource");
System.out.println("dateSource==>"+dataSource);
}