利用spring注解创建bean

spring注解

    • spring 原始注解
      • 1.1 @Component注解
      • 1.2 @Controller,@Service,@Repository同上
      • 1.3 注解方式依赖注入
    • spring 新注解
      • 1. 用来解析配置类,利用配置类替代xml

  • 注解代替了xml的繁琐配置

spring 原始注解

1.1 @Component注解

<!--spring 使用注解创建对象 component-scan 组件扫描器 用来扫描包下面的注解 -->
<context:component-scan base-package="com.lovely"/>
  • 利用ClassPathXmlApplicationContext可创建对象
package com.lovely.test;
@Component("app")
public Class App {// coding...
}
public static void main(String[] args) {ClassPathXmlApplicationContext application =new ClassPathXmlApplicationContext("classpath:applicationContext.xml");App app = (App) application.getBean("app");// sout(app);
}

1.2 @Controller,@Service,@Repository同上

1.3 注解方式依赖注入

    // 利用注解进行 属性注入// 1. @Autowired // 根据类型/* 2. @Autowired // 根据类型 进行依赖注入@Qualifier("userDao") // 与autowired根据名称进行依赖注入*/@Resource // 3. 按照名称注入private UserDao userDao;/*public void setUserDao(UserDao userDao) {// bean 的 依赖注入 配置xml property 通过setthis.userDao = userDao;}*/// 4. 对普通值注入 组件扫描器 扫描spring容器中得key 拿value@Value("${jdbc.driver}")private String driver;@Value("a simple string...")private String str;

spring 新注解

1. 用来解析配置类,利用配置类替代xml

  • 具体使用
package com.lovely.config;import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;/*** @author echo lovely* @date 2020/7/22 16:59* 用于替代applicationContext.xml的配置核心类*/@Configuration // 标志该类是spring的核心配置类 替换xml
@ComponentScan("com.lovely") // 扫描com.lovely包下的spring注解 替换<context:component-scan base-package="com.lovely"/>
@Import(DataSourceConfiguration.class) // 引入 DataSourceConfiguration 配置类
public class SpringConfiguration {}
  • 以数据源解析为例子
/*** @author echo lovely* @date 2020/7/22 17:03* 数据源配置类*/
// 加载配置文件 相当于 property-placeholder
@PropertySource("classpath:jdbc.properties")
public class DataSourceConfiguration {@Value("${jdbc.driver}")private String driver;@Value("${jdbc.url}")private String url;@Value("${jdbc.userName}")private String username;@Value("${jdbc.userPassword}")private String password;@Bean("druidDataSource") // spring 会将当前方法的返回值以指定名称(druidDataSource) 储存到spring容器中public DataSource getDataSource() {DruidDataSource dataSource = new DruidDataSource();dataSource.setDriverClassName(driver);dataSource.setUrl(url);dataSource.setUsername(username);dataSource.setPassword(password);System.out.println(dataSource);return dataSource;}}
  • 测试demo
package com.lovely.web;import com.lovely.config.SpringConfiguration;
import com.lovely.service.UserService;
// import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
// import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.stereotype.Controller;/*** @author echo lovely* @date 2020/7/21 16:15*/// 在web层上实例化bean
@Controller("userController")
public class UserController {public static void main(String[] args) {/*ClassPathXmlApplicationContext app =new ClassPathXmlApplicationContext("classpath:applicationContext.xml");*/AnnotationConfigApplicationContext app = new AnnotationConfigApplicationContext(SpringConfiguration.class);UserService user = (UserService) app.getBean("userService");user.service();/*Object obj = app.getBean("druidDataSource");System.out.println(obj);*/app.close();}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/420743.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

文本分类--普通分类

1 基本概念 文本分类 文本分类&#xff08;text classification&#xff09;&#xff0c;指的是将一个文档归类到一个或多个类别的自然语言处理任务。文本分类的应用场景非常广泛&#xff0c;包括垃圾邮件过滤、自动打标等任何需要自动归档文本的场合。 文本分类在机器学习中属…

hdoj 2041 超级阶梯

代码&#xff1a; #include <stdio.h>int main(){int n;int i;int m;int count;int dp[50];while(scanf("%d",&n)!EOF){dp[1]1;dp[2]1;dp[3]2;while(n--){count0;scanf("%d",&m);for(i4; i<m; i){dp[i]dp[i-1]dp[i-2];}printf("%d\n…

文本分类--情感分析

&#xff08;纯属为了记录自己学习的点滴过程&#xff0c;引用资料都附在参考列表&#xff09; 1 基本概念 情感分析 对于情感分析而言&#xff0c;只需要准备标注了正负情感的大量文档&#xff0c;就能将其视作普通的文本分类任务来解决。此外&#xff0c;一些带有评分的电影…

websocket使用

websocket1. 概述2. websocket的用法3. js代码实现4. 服务器端代码实现maven下载地址&#xff1a;https://mvnrepository.com/artifact/org.java-websocket/Java-WebSocket 1. 概述 什么是websocket - WebSocket是一种网络传输协议&#xff0c; 可在单个TCP连接上进行全双工…

深度学习与自然语言处理

&#xff08;纯属为了记录自己学习的点滴过程&#xff0c;引用资料都附在参考列表&#xff09; 1 传统方法的局限 1.1 传统方法的套路 传统方法的处理流程简单来说就是&#xff1a;特征提取传统机器学习模型训练&#xff1b; 特征提取&#xff1a; 使用了特征模板、TF-IDF、…

linux 烧写(1)

第一部分: 一、BootLoader的概念 BootLoader是系统加电启运行的第一段软件代码&#xff0e;回忆一下PC的体系结构我们可以知道&#xff0c;PC机中的引导加载程序由BIOS&#xff08;其本质就是一段固件程序&#xff09;和位于硬盘MBR中的引导程序一起组成。BIOS在完成硬件检测和…

利用websocket实现一对一聊天

一对一聊天websocket1. 效果展示2. 业务分析&#xff08;逻辑展示...&#xff09;3. 技术点功能 即时发送消息||随时发送消息历史消息显示已读未读状态 1. 效果展示 由于没做登录&#xff0c;就以jack和rose两人聊天 两人可相互发消息 持续输出. . 当只有jack在线时 嘤…

中文分词--词典分词--最长匹配

&#xff08;个人学习笔记&#xff0c;慎重参考&#xff09; 1 基本概念 中文分词 指的是将一段文本拆分为一系列单词的过程&#xff0c;这些单词顺序拼接后等于原文本。 作为中文信息处理的第一站&#xff0c;是后续nlp任务的基础&#xff0c;中文分词算法大致可分为词典规则…

css3动画animation,transition

animation demo1 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>animation动画</title><style>#div1 {width: 100px;height: 100px;background-color: pink;position: absolute;top: 10%;left: 25%;}/* 延迟…

PLSQL Developer 运用Profiler 分析存储过程性能

最近应公司需要&#xff0c;需要编写ORACLE存储过程。本人新手&#xff0c;在完成存储过程的编写后&#xff0c;感觉需要对存储过程中各个语句的执行时间进行分析&#xff0c;以便 对整个存储过程进行优化。 由于用的是PLSQL Developer 客户端工具&#xff0c;而网上大多介绍的…

四、Dynamic-programming algorithm Dynamic--LCS

(学习笔记&#xff0c;无什参考价值&#xff01;) 1 问题 2 算法 2.1 Brute-force LCS algorithm 检查每一个subsequence是否是yyy的子列时&#xff0c;遍历yyy的每一个元素&#xff0c;看是否依次可以全部覆盖subsequence所有元素&#xff0c;所以其复杂度为O(n)O(n)O(n); …

Spring JdbcTemplate Curd

curd1. 实现步骤2. maven dependency3. curd代码database: oracledataSource: alibaba druid 1. 实现步骤 1. 导入spring-jdbc 和 spring-tx(事务)坐标 2. 创建数据库表和实体 3.创建JdbcTemplate对象JdbcTemplate jdbc new JdbcTemplate();jdbc.setDataSource(dataSource);…

linux环境配置与使用合集

配置linux和samba共享 1.  安装linux操作系统 2.  通过windows操作系统ping linux看看是否可以ping通 3.  相关软件安装 a. 安装samba sudo apt-get install samba4, sudo apt-get install system-config-samba b. 安装ssh&#xff0c;这样windows可以远程登录linux, sud…

五、分治法应用--矩阵乘法

1 朴素算法 这个算法就是矩阵乘法的定义&#xff1a; 很容易看出这个算法复杂度是Θ(n3)\Theta(n^3)Θ(n3)。 2 递归算法 分治法首先是从分割问题开始的&#xff0c;得到数学上的递归关系后&#xff0c;然后使用递归的方式实现。 由上面的数学性质&#xff0c;可以使用递…

POJ 1300 Door Man(欧拉回路的判定)

题目链接 题意 &#xff1a; 庄园有很多房间&#xff0c;编号从0到n-1,能否找到一条路径经过所有开着的门&#xff0c;并且使得通过门之后就把门关上&#xff0c;关上的再也不打开&#xff0c;最后能回到编号为0的房间。 思路 &#xff1a; 这就是一个赤裸裸的判断欧拉通路的问…

bootstrap guide

bootstrap1. bootstrap 简单介绍2. demo演示3. 关于bootstrap使用注意的点1. bootstrap 简单介绍 起源 来自Twitter&#xff0c;是目前最受欢迎的前端框架。基于HTML、CSS、Javascript。Bootstrap js组件依赖于jquery 3.X简洁灵活&#xff0c;使得Web开发更加快捷。官网 https…