zoukankan      html  css  js  c++  java
  • 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实现HadoopHA集群的hdfs控制
    Hadoop-2.8.5的HA集群搭建
    Python实现bing必应壁纸下载
    使用Python3将Markdown(.md)文本转换成 html、pdf
    使用GitHub作Free图床
    JavaMail实践--实现邮件发送
    Python3实现图片转字符画
    Java编写的Java编辑器_JavaIDE
    Java实现简易版计算器
    Java实现Excel表格操作--API:jxl
  • 原文地址:https://www.cnblogs.com/alsf/p/9321113.html
Copyright © 2011-2022 走看看