当前位置: 首页 > ds >正文

Spring语法2

IOC理解
(1)IOC就是控制反转,是指创建对象的控制权的转移,以前创建对象的主动权和时机是由自己把控的,

而现在这种权力转移到Spring容器中,并由容器根据配置文件去创建实例和管理各个实例之间的依赖关系,

对象与对象之间松散耦合,也利于功能的复用。DI依赖注入,和控制反转是同一个概念的不同角度的描述,

即应用程序在运行时依赖IoC容器来动态注入对象需要的外部资源。

(2)最直观的表达就是,IOC让对象的创建不用去new了,可以由spring自动生产,使用java的反射机制,

根据配置文件在运行时动态的去创建对象以及管理对象,并调用对象的方法的。

(3)Spring的IOC有三种注入方式 :构造器注入、setter方法注入、根据注解注入。IoC让相互协作的组件保持松散的耦合,而AOP编程允许你把遍布于应用各层的功能分离出来形成可重用的功能组件

  注入数据
@Value
含义:注入基本数据
语法:@Value("数据内容")
@Value("${动态获取}")
注意:配合下面标签使用
<context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>

                @Autowired
语法:@Autowired(required = "true-默认、false、是否必须进行装配")
修饰:成员变量
含义:默认按照类型自动装配,如果有则直接装配,若有多个则按照名称装配
注意:
1.若容器中有一个类型可以与之匹配则装配成功,若没有一个类型可以匹配则报错
NoSuchBeanDefinitionException
2.若容器中有多个类型可以与之匹配,则自动切换为按照名称装配,若名称没有对应,则报错
NoUniqueBeanDefinitionException

            3.其他注解
@Primary
含义:首选项,当类型冲突的情况下,此注解修饰的类被列为首选(备胎扶正)
修饰:类
注意:不能单独使用,必须与@Component....联合使用
@Qualifier(value="名称")
含义:按照名称装配
修饰:成员变量
注意:不能单独使用,必须与@Autowired联合使用

@Configuration
@ComponentScan(basePackages = {"com.apesource"})
//@PropertySource(value = "classpath:jdbc.properties")
//@Import(value = DataSourceConfig.class)
public class ApplicationConfig {//方式1
//    @Bean
//    public IUserDao userDao(){
//        return new UserDaoImp();
//    }
//
//    @Bean
//    public IUserService userService(){
//        return new UserServiceImp(userDao());
//    }
//
//    @Bean
//    public IUserController userController(){
//        return new UserControllerImp(userService());
//    }//方式2@Beanpublic IUserDao userDao(){return new UserDaoImp();}@Beanpublic IUserService userService(IUserDao userDao){return new UserServiceImp(/*Autowried*/userDao);}@Beanpublic IUserController userController(IUserService userService){return new UserControllerImp(/*Autowried*/userService);}
}


@Resource(name="名称")
含义:按照名称装配
修饰:成员变量
注意:单独使用
@Scope
含义:配置类的作用域
修饰:类
注意:不能单独使用,必须与@Component....联合使用
@Scope("prototype")
@Scope("singleton")
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
@Scope(ConfigurableBeanFactory.SCOPE_SINGLETON)

                    @PostConstruct:初始化,修饰方法,替换:init-method
@PreDestroy:销毁,修饰方法,替换:destroy-method(必须与@Compnent配合使用)

@Component
public class Teacher {private String tname;private int tage;@PostConstructpublic void doinit(){System.out.println("初始化注解");}@PreDestroypublic void dodestory(){System.out.println("销毁注解");}
}


此类充当配置类,替代applicationContext.xml文件
* spring中的新注解
* @Configuration
*     作用:指定当前类是一个配置类
*     细节:当配置类作为AnnotationConfigApplicationContext对象创建的参数时,该注解可以不写。
* @ComponentScan
*      作用:用于通过注解指定spring在创建容器时要扫描的包
*      替换:<context:component-scan base-package="com.apesource"></context:component-scan>
* @PropertySource
*      作用:用于指定properties文件的位置
*      替换: <context:property-placeholder location="classpath:message.properties"></context:property-placeholder>
* @Bean
*      作用:用于把当前方法的返回值作为bean对象存入spring的容器中
*      属性:
*          name:用于指定bean的id。当不写时,默认值是当前方法的名称
*  @Import
*      作用:用于导入其他的配置类
*      属性:
*          value:用于指定其他配置类的字节码。
*      例子:@Import(SystemSpringConfig.class)

什么是DBUtils?
DBUtils是java编程中的数据库操作实用工具,小巧简单实用。
DBUtils核心关键字:QueryRunner中提供对sql语句操作的API.

<!--注入c3p0数据源--><bean class="com.mchange.v2.c3p0.ComboPooledDataSource" id="comboPooledDataSource"><property name="driverClass" value="${msg1}"></property><property name="jdbcUrl" value="${msg2}"></property><property name="user" value="${msg3}"></property><property name="password" value="${msg4}"></property></bean><!--注入QueryRunner--><bean class="org.apache.commons.dbutils.QueryRunner" id="queryRunner"><constructor-arg name="ds" ref="comboPooledDataSource"></constructor-arg></bean>

http://www.xdnf.cn/news/16251.html

相关文章:

  • HTML5 网页游戏设计开发——1、HTML基础
  • PowerShell自动化核对AD与HR系统账户信息实战指南
  • 趣玩-Ollama-Llm-Chatrbot
  • Flask框架全面详解
  • DeepSeek Janus Pro本地部署与调用
  • 技术速递|使用 Semantic Kernel 与 A2A 协议构建多智能体解决方案
  • 三大论坛联动,2025合成生物学盛会助力生物制造高质量发展
  • AI安全“面壁计划”:我们如何对抗算法时代的“智子”封锁?
  • 直播软件搭建与原生直播系统开发全解析
  • 架构师--缓存场景
  • 【Linux-云原生-笔记】Haproxy相关
  • SQL难点突破之复杂业务逻辑的SQL查询实战
  • Hexo - 免费搭建个人博客02 - 创建个人博客
  • 从8h到40min的极致并行优化:Spark小数据集UDTF处理的深度实践与原理剖析
  • C++day1
  • 想曰加密工具好用吗?本地安全、支持多算法的加密方案详解
  • 基于Dapr Sidecar的微服务通信框架设计与性能优化实践
  • 设计模式 八:原型模式 (Prototype Pattern)
  • .NET-键控服务依赖注入
  • LeetCode|Day23|326. 3 的幂|Python刷题笔记
  • 认识Transformer架构
  • 第十讲:stack、queue、priority_queue以及deque
  • 【力扣】第15题:三数之和
  • C# 继承 虚方法
  • idea部署新项目时,用自定义的maven出现的问题解决
  • QMC5883L 坐标系Z轴是垂直于芯片平面向下(芯片朝上时指向地面)还是垂直于芯片平面向上(芯片朝上时指向天空)
  • Qt内存管理的核心点
  • 游戏盾 在线游戏的终极防护屏障
  • 【2025目标检测】最新论文
  • 2025年Zigbee技术白皮书:全球物联网无线通信的关键创新