首页 > 编程语言 >JAVA Spring学习笔记------注解开发

JAVA Spring学习笔记------注解开发

时间:2022-09-28 18:56:16浏览次数:83  
标签:xml JAVA Spring public Bean dataSource ------ 注解 class

注解开发

可以在对应的类中配置Bean

具体方法如下:

利用@Component 来声明当前类为Bean

@Component("userDaoimpl")
//Reposity和component效果一样
//spring 对于不同的层提供了不同的方法
//@Repository
public class UserDaoimpl implements UserDao {
    private String id;
    private String password;
}

同时要在xml文件中配置相关的说明这是一个Bean

<context:component-scan base-package="com.demo.Dao.impl"/>

也就是这样

这样会自动装填Imp目录下所有的Component

如果在Component中没有说明当前类对应的名称

则利用getBean()方法创建对象时,参数为对应的类

spring提供了@Component的三个衍生注解

分别对应三个不用的层次

@Controller 用于表现层Bean定义

@Service    用于业务层Bean定义

@Repository 用于数据层Bean定义

 纯注解开发

通过Java类来代替xml文件

我们首先定义一个配置类

名字随便

我这里叫做springConfig

然后我们利用注解来说明这是一个配置类

@Configuration
@Configuration
@ComponentScan("com.demo")
public class SpringConfig {
}
@ComponentScan("com.demo")
这个相当于搜索com.demo下的所有Bean
如果要搜索多个
需要用{}圈起来即可
@Configuration
@ComponentScan({"com.demo",“xxxxx”})
public class SpringConfig {
}

 


因为xml被取代了
所以我们不再通过xml来获得
ApplicationContext对象
而是通过
AnnotationConfigApplicationContext方法来获得
代码如下
        ApplicationContext applicationContext =
                new AnnotationConfigApplicationContext(SpringConfig.class);

//        ApplicationContext applicationContext =
//              new ClassPathXmlApplicationContext("applicationContext.xml");

        UserDao userDao = (UserDaoimpl)applicationContext.getBean("userDaoimpl");

如果运行时有

Failed to read candidate component class: file [ ]; nested exception is org.springframework.core.NestedIOException报错

那是因为spring版本太低无法与JDK相兼容导致的

所以要升高spring版本

利用注解完成自动依赖注入

在Service中需要用到Dao对象

刚开始我们是通过New来创建

后来通过xml文件来实现bean的依赖

现在取消了xml文件

我们通过注解来完成依赖

只需要通过@Autowired来完成依赖即可

    @Autowired
    //利用注释加入依赖 根据类型自动装填
    private UserDao userDao;

以上是利用类型自动装配

也可以通过名称来完成装配

    
  @Autowired

  //利用名称完成依赖 前提必须有Autowired
    @Qualifier("userDaoimpl")
    private UserDao userDao;

使用@Value 能够完成简单类型的注入

同样的我们可以把所有的数据放在property文件中

然后在我们的配置类里

利用注解加载property文件即可

例如:

@PropertySource("Jdbc.property")

利用注解管理第三方Bean
以数据库为例首先我们要建立一个Java类让这个类中的方法返回我们想要的类型
public class JdbcConfig {
    //首先我们定义一个方法来获得要管理的对象
    //然后我们通过@Bean来表示当前方法是的返回值是一个Bean
    @Bean
    public DataSource getDataSource(){
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://");
        dataSource.setUsername("root");
        dataSource.setPassword("");
        return dataSource;
    }
}

然后在我们的配置文件中导入这个类

@Configuration
@ComponentScan("com.demo")
@PropertySource("Jdbc.property")
@Import(JdbcConfig.class)
public class SpringConfig {
}

然后在Main函数中根据类名来通过Bean创建相应的对象就可以了

对于第三方Bean中如果有对其他类的依赖

那么@Bean方法会自动装入

标签:xml,JAVA,Spring,public,Bean,dataSource,------,注解,class
From: https://www.cnblogs.com/zzRh-5479/p/16739221.html

相关文章

  • 实验1 类和对象
    #include<iostream>usingstd::cout;usingstd::endl;classPoint{public:Point(intx0=0,inty0=0);Point(constPoint&p);~Point......
  • JAVA Spring学习笔记------Spring整合Mybatis
    Spring整合Mybatis首先看一下项目目录   因为以前所有的知识点都在一个模块里,而且目录比较混乱所以对模块重构了一下首先我们要在pom.xml文件中声明所需要的依赖......
  • 图形渲染管线_顶点着色器
    顶点着色器是CPU部分的渲染流水线中的第一个渲染处理阶段。这个阶段是第一个由程序员直接控制的阶段,但我们要知道,有些数据的操作发生在这个阶段之前。在DirectX中被称为输......
  • Trie
    基本概念Trie树又被称之为字典树,前缀树;它是一种针对字符串进行维护的数据结构;它也是一种可用来存储词典的数据结构;核心思想词典里的每个单词就是从根节点出发一直到某......
  • 什么是死锁?如何避免死锁?
    概念线程死锁描述的是这样一种情况:多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞,因此程序不可能正常终止。我和同学都打扫卫......
  • typora安装与使用
    typora安装与使用typora安装当我们下载好安装包后,双击安装包图标即可开始安装进程双击运行安装程序后会弹出如下界面,我们点击第一个选项,选择为所有用户安装在接下......
  • python-装饰器
    装饰器(1)什么是装饰器:器指的是工具,可以定义成函数装饰指的是为其他事务添加额外的东西来点缀上面两者合到一起:装饰器指的是定义一个函数,该函数用来为其他函数添......
  • python开发学习全记录
    目录Python开发学习全记录Python基础开发者最常用的文本工具——typoratypora安装与使用计算机基础知识编程与编程语言Python开发所使用的IDE工具——pycharmpycharm的下载......
  • python-正则表达式re模块
    07、正则表达式学习正则表达式操作字符串re模块是用C语言写的没匹配速度非常快其中compile函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象,该对象拥有......
  • [转]逻辑回归和线性回归区别
    https://blog.csdn.net/qq_30354455/article/details/827976201)线性回归要求变量服从正态分布,logistic回归对变量分布没有要求。2)线性回归要求因变量是连续性数值变量,而lo......