Spring 注解开发

注解开发定义bean:

package dao;
import dao.BookDao;
import org.springframework.stereotype.Component;
@Component("bookDao")
public class BookDaoImpl implements BookDao{
    public void save(){
        System.out.println("book dao save...");
    }
}

核心配置文件applicationContext.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
       <!--配置bean-->
<!--       <bean id="bookDao1" class="dao.BookDaoImpl"/>-->
<!--       <bean id="bookService" class="service.BookServiceImpl">-->
<!--              &lt;!&ndash;配置Service与Dao的关系&ndash;&gt;-->
<!--              &lt;!&ndash;property标签表示配置当前bean的属性&ndash;&gt;-->
<!--              &lt;!&ndash;name属性表示配置哪一个具体对象的属性&ndash;&gt;-->
<!--              &lt;!&ndash;ref属性表示参照哪一个bean&ndash;&gt;-->
<!--              <property name="bookDao" ref="bookDao1"/>-->
<!--       </bean>-->
       <context:component-scan base-package="dao"/>
</beans>

主函数:

import dao.BookDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import service.BookService;
import java.applet.AppletContext;
public class App2 {
    public static void main(String[] args) {
        //获取IoC容器
        ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");//创建容器,并加载配置文件
       //获取bean
        BookDao bookDao=(BookDao) ctx.getBean("bookDao");
//        bookDao.save();
//        BookService bookService=(BookService) ctx.getBean("bookService");
//        bookService.save();
        System.out.println(bookDao);
    }
}

 

 纯注解开发:Spring3.0开启了纯注解开发模式,使用Java类代替Spring核心配置文件,开启Spring快速开发通道

package config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan({"service","dao"})
public class springConfig {
}
package dao;
import dao.BookDao;
import org.springframework.stereotype.Component;
@Component("bookDao")
public class BookDaoImpl implements BookDao{
    public void save(){
        System.out.println("book dao save...");
    }
}
import dao.BookDao;
import dao.BookDaoImpl;
import org.springframework.stereotype.Component;
import service.BookService;
import service.BookServiceImpl;
@Component()
public class BookServiceImpl implements BookService{
    public void setBookDao(BookDao bookDao) {
        this.bookDao = bookDao;
    }
    private BookDao bookDao;
    public void save(){
        System.out.println("book service save...");
        bookDao.save();
    }

}

 @Configuration注解用于设定当前类为配置类

@ComponentScan注解用于设定扫描路径,此注解只能添加一次,多个数据请用数组格式

读取Spring核心配置文件初始化容器对象切换为读取Java配置类初始化容器对象

import config.springConfig;
import dao.BookDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import service.BookService;
public class AppForAnnotation {
    public static void main(String[] args) {
       //加载配置类
        ApplicationContext ctx= new AnnotationConfigApplicationContext(springConfig.class);
        BookDao bookDao=(BookDao) ctx.getBean("bookDao");
        System.out.println(bookDao);
        BookService bookService=ctx.getBean(BookService.class);
        System.out.println(bookService);
    }
}

注解开发依赖注入:1.使用@Autowired注解开启自动装配模式

import dao.BookDaoImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import service.BookService;
import service.BookServiceImpl;
@Component()
public class BookServiceImpl implements BookService{
    @Autowired
    private BookDao bookDao;
    public void save(){
        System.out.println("book service save...");
        bookDao.save();
    }

}

主函数:

import config.springConfig;
import dao.BookDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import service.BookService;
public class AppForAnnotation {
    public static void main(String[] args) {
       //加载配置类
        ApplicationContext ctx= new AnnotationConfigApplicationContext(springConfig.class);
        BookService bookService=ctx.getBean(BookService.class);
        bookService.save();
    }
}

注意:自动装配基于反射设计创建对象并暴力反射对应属性为私有属性初始化数据,因此无需提供setter方法。自动装配建议使用无参构造方法创建对象(默认),如果不提供对应构造方法,请提供唯一的构造方法

2.使用@Qualifier注解开启指定名称装配bean,但是@Qualifier注解无法单独使用,必须配合@Autowired注解使用

3.使用@Value实现简单类型注入

 4.使用@PropertySource注解加载properties文件

 

 注意:路径仅支持单一文件配置,例:@PropertySource("classpath:jdbc.properties")

多文件请使用数组格式配置,不允许使用通配符*

注解开发管理第三方bean

1.使用@Bean配置第三方bean,使用独立的配置类管理第三方bean

 2.将独立的配置类加入核心配置

方式一:导入式

使用@Import注解手动加入配置类到核心配置,此注解只能添加一次,多个数据请用数组格式

 

 方式二:扫描式

使用@ComponmentScan注解扫描配置类所在的包,加载对应的配置信息

 

 注解开发实现为第三方bean注入资源

第三方bean引用类型依赖注入,引用类型注入只需要为bean定义方法设置形参即可,容器会根据类型自动装配对象

 XML配置与注解配置对比

功能XML配置注解

定义bean

bean标签

id属性

class属性

@Component

      @Controller

      @Service

      @Repository

@ComponentScan

设置依赖注入

setter注入(set方法)

引用类型/简单类型

构造器注入(构造方法)

引用类型/简单类型

自动装配

@Autowired

    @Qualifier

@Value

配置第三方bean

bean标签

静态工厂、实例工厂、FactoryBean

@Bean
作用范围scope属性@Scope
生命周期

标准接口

init-method

destory-method

@PostConstructor

@PreDestory

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值