注解开发

简介: • Spring3.0升级了纯注解开发模式,使用java类替代配置文件,开启了Spring快速开发赛道• java类替代Spring核心配置文件• 将者一段配置使用@Comfiguration替代配置类

注解开发

注解开发定义bean

  • 使用@Componnet定义bean

@Component("bookDao")

publicclassBookDaoImplimplementsBookDao {

   @Override

   publicvoidsave() {

       System.out.println("bookDao....");

   }

}

  • 核心配置文件中通过组件扫描加载bean

   <context:component-scanbase-package="com.wangxh.dao"/>

  • Spring提供@Component注解的三个衍生注解
  • @Controller:用于表现层bean定义
  • @Service:用于业务层bean定义
  • @Repository:用于数据层bean定义

纯注解开发

  • Spring3.0升级了纯注解开发模式,使用java类替代配置文件,开启了Spring快速开发赛道
  • java类替代Spring核心配置文件
  • 将者一段配置使用@Comfiguration替代配置类

<?xmlversion="1.0" encoding="UTF-8"?>

<beansxmlns="http://www.springframework.org/schema/beans"

      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

      xmlns:context="http://www.springframework.org/schema/context"

      xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttps://www.springframework.org/schema/context/spring-context.xsd">

</beans>

  • 将这一段使用@ComponentScan("com.wangxh")替换作用是用于设定扫描路径,但此注解只能添加一次,多个数据请用数组格式

<context:component-scanbase-package="com.wangxh.dao"/>

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

//加载配置文件初始化容器

ApplocationContextctx=neClassPathXmlApplicationContext("applicationContext.xml");

//加载配置类初始化容器

ApplicationContextctx=newAnnotationConfigApplicationContext(SpringConfig.class);

bean作用范围

使用@Scope定义bean作用范围

@Repository

@Scope("singleton")

publicclassBookDaoImplimplementsBookDao {

   使用@PostConstruct,@PreDestroy定义bean生命周期

   publicBookDaoImpl(){

       System.out.println("book dao constuctor...");

       @PostConstruct

       publicvoidinit(){

           System.out.Println("book init.");

       @PreDestroy

       publicvoiddestroy(){

           System.out.println("book destory");

           }

       }

   }

}

依赖注入

自动装配

@Service

publicclassBookServiceImplimplementsBookService {

   @Autowired

   privateBookDaobookDao;

   publicvoidsetBookDao(BookDaobookDao){

       this.bookDao=bookDao;

   }

   publicvoidsave(){

       System.out.println("book service save....");

       bookDao.save();

   }

}

  • 注意:自动装配基于反射设计创建按对象并非暴力反射对应属性为私有属性初始化数据,因此无需提供setter方法
  • 注意:自动装配建议使用无参构造器方法创建对象(默认),如果不提供对应构造方法,请提供唯一的构造方法
  • 如果你想指定加载哪一个bean使用@Qulifier注解开启指定名称装配bean

@Service

publicclassBookServiceImplimplementsBookService {

   @Autowired

   @Qualifier("bookDao")

   privateBookDaobookDao;

}

使用这个@Qualifier必须得有@Autowired

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

@Repository("bookDao")

publicclassBookDaoImplimplementsBookDao {

   @Value("100")

   privateStringconnectionNum;

}

  • 加载外部properties文件
  • 使用@PropertySource注解加载properties文件

@Configuration

@ComponentScan("comm.wangxh")

@PropertySource("classpath:jdbc.properties")

publicclassSpringConfig{

   

}

第三方bean管理

  • 使用@bean配置第三方bean

@Configuration

publicclassSpringConfig {

   @Bean

   publicDataSourcedataSource(){

       

       DruidDataSourceds=newDruidDataSource();

       ds.setDriverClassName("com.mysql.jdbc.Driver");

       ds.setUrl("jdbc:mysql://localhost:3306/spring_db");

       ds.setUsername("root");

       ds.getPassword("root");

       returnds;

   }

}

  • 使用第三方管理bean以后,接下来使用方式一:导入式

publicclassJdbcConfig{

   @Bean

   publicDataSourcedataSource(){

       DruidDataSourceds=newDruidDataSource();

       //相关配置

       returnds;

   }

}

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

@Configuration

@Import(JdbcConfig.class)

publicclassSpringConfig{

   

}

  • 方式二:扫描式

@Configuration

publicclassJdbcConfig{

   @Bean

   publicDataSourcedataSource(){

       DruidDataSourceds=newDruidDataSource();

       //相关配置

       returnds;

   }

}

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

@Configuration

@componnetScan({"com.wangxh.config","com.wangxh.service","com.wangxh.dao"})

publicclassSpringConfig{

   

}

第三方bean依赖注入

引用类型依赖注入

总结

相关文章
|
11月前
|
Java Spring
130.【Spring注解_AOP】(三)
130.【Spring注解_AOP】
38 0
|
11月前
|
Java Maven Spring
130.【Spring注解_AOP】(四)
130.【Spring注解_AOP】
64 0
|
11月前
|
XML Java 数据格式
130.【Spring注解_AOP】(二)
130.【Spring注解_AOP】
55 0
|
11月前
|
消息中间件 Java Kafka
130.【Spring注解_AOP】(五)
130.【Spring注解_AOP】
57 0
|
XML 前端开发 Java
1.5 Spring注解
在Spring框架中,尽管使用xml配置文件可以简单的装配Bean,但如果应用中有大量的Bean需要装配时,会导致xml配置文件过于庞大和繁重,影响开发效率,所以推荐使用注解(annotation)代替xml配置文件,可以简化配置,提高开发效率。
53 0
|
3月前
|
前端开发 Java 数据格式
Spring注解详解
Spring注解详解
46 0
|
9月前
|
XML Java 数据库连接
Springboot 中同时使用mybatis注解和springbean-xml配置方式
因为自己新建了一个应用,为了开发的速度,直接选用了springboot,但后来发现大部分读库的代码和同事已有的代码重复, 索性直接拿过来用。但问题是我已有的代码是通过纯注解的方式使用mybatis,同事代码是spring+xml来使用mybatis,经过几天的探索,发现一种两种方式结合使用的方法。
87 0
|
11月前
|
Java 测试技术 Maven
130.【Spring注解_AOP】(一)
130.【Spring注解_AOP】
83 0
|
XML 前端开发 Java
使用注解开发 | 学习笔记
快速学习使用注解开发。