java的配置方式简介

Posted 美好的明天

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java的配置方式简介相关的知识,希望对你有一定的参考价值。

1,java的配置方式简介
java的配置方式是为了代替使用xml配置方式,
主要使用两个注解:
@Configuration//通过该注解来表明该类是一个spring的配置,相当于一个xml文件
@ComponentScan(basePackages="com.SpringBoot.javaConfig")//配置扫码包

设置bean的方式,既可以直接在bean类上面使用@Component,@Service
也可在java配置类里面使用@bean,搭配类似如下方法代替xml中bean的配置:
@Bean //通过该配置来表明是一个bean对象,相当于xml里面的<bean>

    //以下也可通过直接在User上面使用@Component代替
    @Bean    //通过该配置来表明是一个bean对象,相当于xml里面的<bean>
    public UserDAO getUserDAO()
    {
        return new UserDAO();//直接new对象做演示
    }

初始化spring容器,由于不再使用配置文件了:

ApplicationContext = new ClassPathXmlApplicationContext(xmlPath); 

而是使用如下方式代替:

AnnotationConfigApplicationContext context=
new AnnotationConfigApplicationContext(SpringConfig.class);

该方式,会通过SpringConfig这个配置类进行容器初始化。

获取bean的方式,同样可以使用context.getBean(类.class)方式,如下:

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

这种方式依然可以使用@Autowired等注解。

这种java配置方式,完全不需要xml配置,简单易懂。


二,读取外部的资源配置文件
通过@propertySource可以读取指定的配置文件,通过@value注解获取值。具体用法:

@propertySource(value={"classpath:jdbc.properties"})
public class SpringConfig
{
  @Value("${jdbc.url}")
  private String jdbcUrl;

  @Bean
  public UserDAO getUserDAO()
  {
    return new UserDAO();
  }
}

 

为了保证如果读取的配置文件不存在忽略他,加上属性:ignoreResourceNotFound=true
如果多个配置文件,可以修改value值:

@propertySource(value={"classpath:jdbc.properties","xxxx","xxxx"},ignoreResourceNotFound=true)

 

实例:

第一步:新建一个实体类:User

package com.SpringBoot.javaConfig;

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;
    }
}

新建一个UserDAO模拟DAO数据库查询

package com.SpringBoot.javaConfig;

import java.util.ArrayList;
import java.util.List;

import org.springframework.stereotype.Component;

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; 
    }

}

第三步:新建一个UserService调用UserDAO

package com.SpringBoot.javaConfig;

import java.util.List;

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

@Service
public class UserService {

    @Autowired
    //注入spring容器中的bean对象
    private UserDAO userDAO;
    
    public List<User> queryUserList(){
        return userDAO.queryUserList();
    }
}

最后一步:新建一个main方法测试:

package com.SpringBoot.javaConfig;

import java.util.List;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class Main {

    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.getAge());
        }
        
        //销毁容器
        context.destroy();
    }

}

 










以上是关于java的配置方式简介的主要内容,如果未能解决你的问题,请参考以下文章

从零开始配置vim(27)——代码片段

Prometheus配置文件

Java itext为pdf 文件添加水印核心功能代码片段

IDEA对新建java线程池的建议

Android 逆向类加载器 ClassLoader ( 类加载器源码简介 | BaseDexClassLoader | DexClassLoader | PathClassLoader )(代码片段

在PaddlePaddle中的Notebook代码片段