Spring注解开发 - bean定义、@Component注解的衍生注解、纯注解开发

Spring注解开发 - bean定义、@Component注解的衍生注解、纯注解开发,第1张

Spring注解开发
  • 注解开发定义bean
      • 1、xml配置文件中不再使用bean标签定义bean,仅仅使用context标签开启组件扫描
      • 2、使用@Component定义bean,代替复杂的xml文件配置
      • 3、测试代码
      • 4、测试结果
  • @Component注解的衍生注解
      • 衍生注解一:@Repository
          • 举例
      • 衍生注解二:@Service
          • 举例
      • 衍生注解三:@Controller
          • 举例
  • 纯注解开发
      • 1、定义SpringConfig配置类
      • 2、加载配置类容器

注解开发定义bean 1、xml配置文件中不再使用bean标签定义bean,仅仅使用context标签开启组件扫描
<context:component-scan base-package="qdxorigin.dao"/>
  • "component-scan"翻译过来就是组件扫描的意思,使用"base-package"属性配置需要通过扫描加载bean的包名。
2、使用@Component定义bean,代替复杂的xml文件配置
@Component("beanDao") 
// @Component
public class BeanDaoImpl implements BeanDao {
    public void save() {
        System.out.println("beanDao save...");
    }
}
  • @Component(“beanDao”)这条语句就相当于xml文件中的
<bean id="beanDao" class="dao.impl.BeanDaoImpl"/>

括号里的内容就相当于id属性值

  • @Component 也可以不指定名,在获取bean对象时使用按类型获取的方式
BeanDao bean = context.getBean(BeanDao.class);

不清楚bean获取方式的小伙伴可以点击查看文章"三种获取bean的方式"。

3、测试代码
public class App {
    public static void main(String[] args) {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        BeanDao beanDao = (BeanDao) context.getBean("beanDao");
        // BeanDao beanDao = context.getBean(BeanDao.class);
        System.out.println(beanDao);
    }
}
4、测试结果
dao.impl.BeanDaoImpl@58a90037
  • 成功打印出了地址值
@Component注解的衍生注解 衍生注解一:@Repository

该注解用于数据访问层的bean定义,数据访问层也就是我们常写的dao层、mapper层。

举例
@Repository("beanDao")
// @Repository
public class BeanDaoImpl implements BeanDao {
    public void save() {
        System.out.println("beanDao save...");
    }
}
衍生注解二:@Service

该注解用于业务逻辑层的bean定义,即service层。

举例
@Service("beanService")
// @Service
public class BeanServiceImpl implements BeanService {
    public void save() {
        System.out.println("bean service save...");
    }
}
衍生注解三:@Controller

该注解用于表现层,控制层的bean定义,即controlle层等。

举例
@Controller("beanController")
// @Controller
public class BeanController {
}
纯注解开发

Spring3.0开启了纯注解开发模式,提倡使用Java类来代替xml配置文件,使用纯注解开发在极大程度上提升了开发人员的开发效率。

1、定义SpringConfig配置类
@Configuration
@ComponentScan("qdxorigin.dao")
public class SpringConfig {
}
  • @Configuration 注解用于设置当前类为配置类,作用相当于xml文件中的
<beans xmlns="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.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context.xsd">
beans>

这么多行代码一个注解就代替了,有没有感觉用注解开发很爽呢?!

  • @ComponentScan(“qdxorigin.dao”) 该行代码的作用和xml配置文件中
<context:component-scan base-package="qdxorigin.dao"/>

的作用一样。

  • @ComponentScan 注解用于设定扫描路径,该注解只能使用1次,如果有多个需要扫描的包,使用下述方式实现
@ComponentScan({"qdxorigin.dao","qdxorigin.service"})
2、加载配置类容器
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);
  • 因为使用了纯注解开发,没有了xml文件,自然也不能再使用"ClassPathXmlApplicationContext"的方式加载配置文件。
  • 获取bean的方式和之前没有区别,还是可以使用getBean方法进行获取。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/915393.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-16
下一篇 2022-05-16

发表评论

登录后才能评论

评论列表(0条)

保存