飞道的博客

java从入门到精通二十八(Spring注解开发)

362人阅读  评论(0)

从注解开发开始,这里的一切都变得十分简化。
包括后面的大量开发实战,我们的注解开发都会派上大的用处。

注解设置bean

那么我们的bean就不再xml文件里面进行定义了。具体怎么做呢?

我们可以这样举个例子。先创建一个接口,放在dao层,然后创建sevice包,在这里我们创建接口service继承dao,然后在改包下创建impl,里面创建类来实现sevice接口类。


具体如下

package com.jgdabc.dao;

public interface Bookdao {
   
    void save();

}

package com.jgdabc.service;

import com.jgdabc.dao.Bookdao;

public interface BookService extends Bookdao {
   
    @Override
    void save();
}

package com.jgdabc.service.impl;

import com.jgdabc.service.BookService;

public class BookDaoServiceImp implements BookService {
   
    @Override
    public void save() {
   

    }
}

我们然后这样操作这个实现类

package com.jgdabc.service.impl;

import com.jgdabc.dao.Bookdao;
import com.jgdabc.service.BookService;
import org.springframework.stereotype.Component;

@Component("bookDao")
public class BookDaoServiceImp implements BookService {
   


    @Override
    public void save() {
   
        System.out.println("bookdaoservice impl is runnning");

    }
}

非常重要的一件事,在BookDaoImpl类上添加@Component 注解。到底是什么用处呢?
例如这样,我们上面的代码与此类似

然后呢,我们还是需要去spring 的配置文件配置一下。你要开启包扫描

<?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" xmlns:aop="http://www.springframework.org/schema/aop"
       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 http://www.springframework.org/schema/aop https://www.springframework.org/schema/aop/spring-aop.xsd">


    <!--    bean标签表示配置配置bean-->
    <!--    id属性表示给bean起名字-->
    <!--    class属性表示给bean定义类型-->
    <!--    context是我开启的新的命名空间-->
    <!--  在xml文件配置了<context:component-scan>标签后,
    spring容器可以自动去扫描base-pack所指定的包或其子包下面的java类文件,
    如果扫描到有@Component、@Controller、@Service 、@Repository等注解修饰的Java类,
    则将这些类注册为spring容器中的bean。
      -->
  <context:component-scan base-package="com.jgdabc">

  </context:component-scan>
</beans>


然后运行

但是包括包扫描,开启命名空间,其实都需要在配置文件上添加配置,比较容易出现错误。我们后面可以将配置文件也按照注解开发。

component-scan
component:组件,Spring将管理的bean视作自己的一个组件scan:扫描
base-package指定Spring框架扫描的包路径,它会扫描指定包及其子包中的所有类上的注解。包路径越多[如:com.jgdabc.dao.impl],扫描的范围越小速度越快
包路径越少[如:com.jgdabc],扫描的范围越大速度越慢
一般扫描到项目的组织名称即Maven的groupId下[如:com.jgdabc]即可。

注意

@Component注解如果不起名称,会有一个默认值就是当前类名首字母小写,所以也可以按照名称获取

对于@Component注解,还衍生出了其他三个注解@Controller 、@Service 、@Repository

这几个注解的功能是一样的,只是设定这样的名字便于我们区分具体功能。
方便我们后期在编写类的时候能很好的区分出这个类是属于表现层、业务层还是数据层的类。

注解改造spring配置文件

首先将原来的配置文件删掉。因为实在太麻烦。或者你可以注销掉。我们使用注解的方式。

这样这个之前的配置文件就不会再起作用了。


然后我们创建一个config的目录。下面创建配置类。


难道你创建一个配置类,spring就会认为你这个类就是它的配置类?不会的。

我们用注解告诉他

上次我们用的是再xml配置扫描,现在我们用注解扫描bean。

现在我们运行App测试类,照样也可以运行出来。这个就真的方便太多了。

总结以上的过程


注解扫描的话,可以扫描多级。需要这样去写,举个例子

之前我们读取配置方式改一下

import com.jgdabc.config.SpringConfig;
import com.jgdabc.dao.Bookdao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App {
   
    public static void main(String[] args) {
   
//        ApplicationContext ctx = new ClassPathXmlApplicationContext("SpringConfig.xml.bak");
//        DataSource dataSource = (DataSource) ctx.getBean("dataSource");
//        System.out.println(dataSource);
//        DataSource dataSource01= (DataSource) ctx.getBean("datasource01");
//        System.out.println(dataSource01);
        AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);
        
        Bookdao bookDao = (Bookdao) ctx.getBean("bookDao");
       bookDao.save();

    }
}

起步就这么简单。

未完续更。


转载:https://blog.csdn.net/jgdabc/article/details/125420273
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场