spring boot01,spring完全注解(零配置)编程方式

前言:

  spring boot就是整合了很多优秀的框架,不用我们自己手动的去写一堆xml配置然后进行配置。有了它, 你可以更加敏捷地开发Spring应用程序,专注于应用程序的功能,不用在Spring的配置上多花功 夫,甚至完全不用配置。

一  spring4.x的java注解方式编程

 Java注解是Spring4.x推荐的配置方式,可以完全替代xml配置。Spring的Java注解方式是通过 @Configuration和 @Bean这两个注解实现的:

     1、@Configuration 作用于类上,相当于一个xml配置文件;

        2、@Bean 作用于方法上,相当于xml配置中的<bean>;

   上案例!!!

   开发环境:spring4.3.9+jdk1.7+maven3.6+eclipse mars.2+mysql

    结构图:

      

  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>org.lzq</groupId>
    <artifactId>springboot</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <properties>
        <!-- jar包统一升级管理 -->
        <spring.version>4.3.9.RELEASE</spring.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!-- 日志包 -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <!-- mysql连接驱动包 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.26</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <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>
    </build>

</project>

  实体类:UserEntity.java

package org.lzq.entity;

import java.io.Serializable;

public class UserEntity implements Serializable {

    private static final long serialVersionUID = -5425731832559669953L;
    private Integer userId;
    private String userName;
    private String passWord;

    public UserEntity() {
        super();
    }

    public UserEntity(Integer userId, String userName, String passWord) {
        super();
        this.userId = userId;
        this.userName = userName;
        this.passWord = passWord;
    }

    public Integer getUserId() {
        return userId;
    }

    public void setUserId(Integer userId) {
        this.userId = userId;
    }

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

}

  dao层代码:

  IUserDao.java

package com.accp.dao;

import java.util.List;

import org.lzq.entity.UserEntity;

public interface IUserDao {
    //查询所有
    List<UserEntity> queryAll();
}

  UserDaoImpl.java

package com.lyc.dao;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.springframework.stereotype.Repository;

import com.lyc.entity.UserEntity;

@Repository("userDao")
public class UserDaoImpl extends BaseDao implements IUserDao{

    @Override
    public List<UserEntity> queryAll() {

        List<UserEntity> list = new ArrayList<UserEntity>();
        String sql= "select * from users";
        rs = executeQuery(sql);
         try {
                UserEntity user=null;
                while(rs.next()){
                    user=new UserEntity();
                    user.setUserId(rs.getInt("userId"));
                    user.setUserName(rs.getString("userName"));
                    user.setPassWord(rs.getString("passWord"));
                    list.add(user);
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }finally{
                closeAll();
            }
            return list;

    }

}

业务层代码

UserService.java

package com.lyc.service;

import java.util.List;

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

import com.lyc.dao.IUserDao;
import com.lyc.entity.UserEntity;

@Service("userService")
public class UserService {
    //Autowired默认根据类型进行装配,加上Qualifier注解则变成根据名称装配
    @Autowired
    @Qualifier("userDao")
    private IUserDao userDao;

    public List<UserEntity> queryAll() {
        return userDao.queryAll();
    }
}    

配置类

SpringConfig.java

package com.lyc.configs;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

import com.lyc.dao.IUserDao;
import com.lyc.dao.UserDaoImpl;

//通过该注解来表明该类是一个Spring的配置,相当于一个传统的ApplicationContext.xml
@Configuration
//相当于配置文件里面的<context:component-scan/>标签
@ComponentScan(basePackages="com.lyc.dao,com.lyc.service")
public class SpringConfig {
        // 通过该注解来表明是一个Bean对象,相当于xml中的<bean>
        //bean的id值默认是方法名userDao
        /*
        @Bean
        public IUserDao userDao(){
            return new UserDaoImpl();
        }
        */

}

测试类代码  

Test01.java

package com.lyc.test;

import java.util.List;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

import com.lyc.configs.SpringConfig;
import com.lyc.entity.UserEntity;
import com.lyc.service.UserService;

public class Test01 {

    public static void main(String[] args) {
        //通过java配置来实例化spring容器
        AnnotationConfigApplicationContext acac =
                new AnnotationConfigApplicationContext(SpringConfig.class);
        //在spring容器中获取bean对象
        //名称userService是注解根据类UserService自动生成的
        UserService userService = (UserService) acac.getBean("userService");
        //或者采取下面的方式
        //UserService userService = acac.getBean(UserService.class);

        List<UserEntity> list = userService.queryAll();
        for (UserEntity u : list) {
            System.out.println(u.getUserName()+"---"+u.getPassWord());
        }
        //销毁容器
        acac.destroy();
    }

}

感觉还是挺简单的哈!!!

原文地址:https://www.cnblogs.com/chao123/p/10214644.html

时间: 2024-10-08 23:17:47

spring boot01,spring完全注解(零配置)编程方式的相关文章

基于纯Java代码的Spring容器和Web容器零配置的思考和实现(3) - 使用配置

经过<基于纯Java代码的Spring容器和Web容器零配置的思考和实现(1) - 数据源与事务管理>和<基于纯Java代码的Spring容器和Web容器零配置的思考和实现(2) - 静态资源.视图和消息器>两篇博文的介绍,我们已经配置好了Spring所需的基本配置.在这边博文中,我们将介绍怎么使用这些配置到实际项目中,并将web.xml文件替换为一个Java类. 我们使用Java代码来配置Spring,目的就是使我们的这些配置能够复用,对于这些配置的复用,我们采用继承和引入来实现

Spring Web工程web.xml零配置即使用Java Config + Annotation

摘要: 在Spring 3.0之前,我们工程中常用Bean都是通过XML形式的文件注解的,少了还可以,但是数量多,关系复杂到后期就很难维护了,所以在3.x之后Spring官方推荐使用Java Config方式去替换以前冗余的XML格式文件的配置方式: 在开始之前,我们需要注意一下,要基于Java Config实现无web.xml的配置,我们的工程的Servlet必须是3.0及其以上的版本: 1.我们要实现无web.xml的配置,只需要关注实现WebApplicationInitializer这个

Spring定时器技术终结者——采用XML配置的方式实现Spring定时器

在Spring中有两种方式可以实现定时器的功能,分别是Scheduled注释方式和XML配置方式,本博客将介绍如何在Spring中使用采用XML配置的方式实现定时器的功能,代码及相应的解释如下: 代码1-Spring配置文件(applicationContext.xml文件): <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.o

spring中的annotation注解类配置

1,@Autowired     1) @Autowired使用后需要在xml文件加入以下配置才能生效: <context:annotation-config/> 2)@Autowired默认使用byType来装配属性,如果匹配到类型的多个实例,再通过byName来确定Bean. 2,@Resource 1)@Resource的作用和@Autowired差不多,只不过 @Resource是默认先用byName,如果找不到合适的就再用byType来注入 2)在xml文件加入以下配置才能生效: &

Spring系列【7】零配置实现Bean的注入

与前几例不同,需要导入aop包. Book.java 注意Book类@Component 1 package cn.com.xf; 2 3 import org.springframework.stereotype.Component; 4 5 @Component 6 public class Book { 7 private String name="JAVA从入门到精通"; 8 private double price=45.67; 9 public String getName

Spring4.X + spring MVC + Mybatis3 零配置应用开发框架搭建详解(1) - 基本介绍

Spring4.X + spring MVC + Mybatis3 零配置应用开发框架搭建详解(1) - 基本介绍 spring集成 mybatis Spring4.x零配置框架搭建 两年前一直在做后台的纯Java开发,很少涉及web开发这块,最近换了个纯的互联网公司,需要做Web后台管理系统,之前都是用xml配置的项目,接触了公司Spring4.x的零配置项目,觉得非常有感觉,不仅仅配置简单,而且条理清晰,所以,这里把学习的内容记录下来,一来加深对这块技术的印象,另外准备做个简单的教程,如果给

JavaEE开发之Spring中的条件注解、组合注解与元注解

上篇博客我们详细的聊了<JavaEE开发之Spring中的多线程编程以及任务定时器详解>,本篇博客我们就来聊聊条件注解@Conditional以及组合条件.条件注解说简单点就是根据特定的条件来选择Bean对象的创建.条件注解就是可以根据不同的条件来做出不同的事情.在Spring中条件注解可以说是设计模式中状态模式的一种体现方式,同时也是面向对象编程中多态的应用部分.而组合注解就是将现有的注解进行组合.下方会给出具体的介绍和实例. 一.条件注解[email protected] 本篇博客的本部分

Spring 12 种 常用注解!

Java 必须掌握的 12 种 Spring 常用注解! 1.声明bean的注解 @Component 组件,没有明确的角色 @Service 在业务逻辑层使用(service层) @Repository 在数据访问层使用(dao层) @Controller 在展现层使用,控制器的声明(C) 2.注入bean的注解 @Autowired:由Spring提供 @Inject:由JSR-330提供 @Resource:由JSR-250提供 都可以注解在set方法和属性上,推荐注解在属性上(一目了然,

Spring和SpringMVC常用注解(转)

作者:IT_faquir 原文:https://blog.csdn.net/IT_faquir/article/details/78025203 个人学习所用,如有侵权,请联系删除! --------------------- 本文主要罗列Spring|SpringMVC相关注解的简介.Spring部分1.声明bean的注解 @Component 组件,没有明确的角色 @Service 在业务逻辑层使用(service层) @Repository 在数据访问层使用(dao层) @Controll