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

网站设计师和ui设计师网页设计教程 模仿

网站设计师和ui设计师,网页设计教程 模仿,企业网站 设计,做彩票网站技术1负责注入的注解 负责注入的注解#xff0c;常见的包括四个#xff1a; ValueAutowiredQualifierResource 1.1 Value 当属性的类型是简单类型时#xff0c;可以使用Value注解进行注入。Value注解可以出现在属性上、setter方法上、以及构造方法的形参上, 方便起见,一般直…1负责注入的注解 负责注入的注解常见的包括四个 ValueAutowiredQualifierResource 1.1 Value 当属性的类型是简单类型时可以使用Value注解进行注入。Value注解可以出现在属性上、setter方法上、以及构造方法的形参上, 方便起见,一般直接作用在属性上. package com.sunsplanter.bean;import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component;Component public class User {Value(value zhangsan)private String name;Value(20)private int age;Overridepublic String toString() {return User{ name name \ , age age };} /*Value和setter方法结合private String name;private int age;Value(李四)public void setName(String name) {this.name name;}Value(30)public void setAge(int age) {this.age age;} *//*Value和构造方法结合private String name;private int age;public User(Value(隔壁老王) String name, Value(33) int age) {this.name name;this.age age;} */ }配置文件开启包扫描: ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/contextxsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsdcontext:component-scan base-packagecom.sunsplanter.bean/ /beans测试程序: Test public void testValue(){ApplicationContext applicationContext new ClassPathXmlApplicationContext(spring.xml);Object user applicationContext.getBean(user);System.out.println(user); }三种方法都可以正确注入简单类型. 1.2 Autowired与Qualifier Autowired注解可以用来注入非简单类型。被翻译为自动连线的或者自动装配。Autowired注解可以出现在构造方法上/方法上/形参上/属性上/注解上Autowired注解有一个required属性默认值是true表示在注入的时候要求被注入的Bean必须是存在的如果不存在则报错。如果required属性设置为false表示注入的Bean存在或者不存在都没关系存在的话就注入不存在的话也不报错。 目标: 存在两层: Service层和Dao层. 如前所述,UserService要控制UserDaoForMySQL, 必须要实例化一个UserDaoForMySQL的对象并注入到UserService类中定义的UserDaoForMySQL中. 配置Bean后Spring容器帮我们实例化了这个对象, 之前也学过了如何通过配置Bean标签注入. 本节的目标是通过注解完成自动注入. 结构为: Dao层接口UserDao: package com.dao;public interface UserDao {void insert(); }实现类UserDaoForMySQL: package com.dao;import org.springframework.stereotype.Repository;Repository //纳入bean管理 public class UserDaoForMySQL implements UserDao{Overridepublic void insert() {System.out.println(正在向mysql数据库插入User数据);} }Service层: package com.Service;import com.dao.UserDao; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;Service // 纳入bean管理 public class UserService {Autowired // 在属性上注入private UserDao userDao;// 没有提供构造方法和setter方法。public void save(){userDao.insert();}/* Autowired和setter方法结合 private UserDao userDao;Autowiredpublic void setUserDao(UserDao userDao) {this.userDao userDao;}public void save(){userDao.insert();}*//*Autowired和构造方法结合private UserDao userDao;public UserService(Autowired UserDao userDao) {this.userDao userDao;}public void save(){userDao.insert();}*/ }配置文件开启包扫描: ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/contextxsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsdcontext:component-scan base-packagecom.dao,com.service/ /beans测试程序: Test public void testAutowired(){ApplicationContext applicationContext new ClassPathXmlApplicationContext(spring.xml);UserService userService applicationContext.getBean(userService, UserService.class);userService.save(); }单独使用Autowired注解默认根据类型装配【byType】。但之前也提到过,如果两个相同类型的类在同一包下,则系统分辨不出自动注解哪个bean, 例如: 两个bean类都实现了UserDao接口.无法分辨 解决办法:Autowired注解和Qualifier注解联合起来才可以根据名称进行装配在Qualifier注解中指定Bean名称。 将Service层代码增加一个Qualifier注解,指定注入到userDaoForOracle: private UserDao userDao;AutowiredQualifier(userDaoForOracle) // 这个是bean的名字。public void setUserDao(UserDao userDao) {this.userDao userDao;} 1.3 Resource Resource注解也可以完成非简单类型注入, 但与AutoWired的区别如下Resource注解是JDK扩展包中的也就是说属于JDK的一部分。所以该注解是标准注解更加具有通用性。 Autowired注解是Spring框架自己的。Resource注解默认根据名称装配byName未指定name时使用属性名作为name。通过name找不到的话会自动启动通过类型byType装配。 Autowired注解默认根据类型装配byType如果想根据名称装配需要配合Qualifier注解一起用。Resource注解用在属性上、setter方法上。 Autowired注解用在属性上、setter方法上、构造方法上、构造方法参数上。Resource注解属于JDK扩展包所以不在JDK当中需要额外引入以下依赖【如果是JDK8的话不需要额外引入依赖。高于JDK11或低于JDK8需要引入以下依赖。】 Spring6不再支持JavaEE它支持的是JakartaEE9。之前所接触的所有的 javax.* 包名统一修改为 jakarta.*包名了。 若使用Spring6, 引入: dependencygroupIdjakarta.annotation/groupIdartifactIdjakarta.annotation-api/artifactIdversion2.1.1/version /dependency使用: UserDaoForOracle的名字为userDao让这个Bean的名字和UserService类中的UserDao属性名一致 package com.sunsplanter.dao;import org.springframework.stereotype.Repository;Repository(value userDaoForOracle) public class UserDaoForOracle implements UserDao{Overridepublic void insert() {System.out.println(正在向Oracle数据库插入User数据);} }package com.sunsplanter.service;import com.sunsplanter.dao.UserDao; import jakarta.annotation.Resource; import org.springframework.stereotype.Service;Service public class UserService {Resource(name userDaoForOracle)private UserDao userDao;public void save(){userDao.insert();} }测试程序: Test public void testResources(){ApplicationContext applicationContext new ClassPathXmlApplicationContext(spring.xml);UserService userService applicationContext.getBean(userService, UserService.class);userService.save(); }以上代码使用Resource注解根据name(bean id)进行注入.Resource的的name(bean id为)userDaoForOracle,且注解写在UserDao头上.那么就去寻找一个名为userDaoForOracle的UserDao实现类进行注入. 2 全注解开发 尽管注解开发可以省略定义bean但只能省略自定义的bean若引入的是外部对象如druid此时依然要在xml中声明一个bean由于此不能完全消除配置xml文件的繁琐。 因此引入全注解开发基于配置类的方式管理bean 所谓的全注解开发就是不再使用spring配置文件spring.xml了。写一个配置类来代替配置文件. 其中配置类中使用 configuration componentScan 等注解发挥spring.xml的作用 完全注解方式指的是去掉xml文件使用配置类 注解实现xml文件替换成使用Configuration注解标记的类标记IoC注解Component,Service,Controller,Repository标记DI注解Autowired Qualifier Resource Valuecontext:component-scan标签指定注解范围使用ComponentScan(basePackages {“com.atguigu.components”})替代context:property-placeholder引入外部配置文件使用PropertySource({“classpath:application.properties”,“classpath:jdbc.properties”})替代bean 标签使用Bean注解和方法实现IoC具体容器实现选择AnnotationConfigApplicationContext对象 对于上例, 新增一个配置类代替spring.xml至于Service层的代码完全不变 package com.sunsplanter.config; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource;//标注当前类是配置类替代spring.xml Configuration //使用注解读取外部配置替代 context:property-placeholder标签 PropertySource(classpath:jdbc.properties) //使用ComponentScan注解,可以配置扫描包,替代context:component-scan标签 ComponentScan(basePackages {com.sunsplanter.service}) public class Spring6Configuration {}Test public void testNoXml(){ // AnnotationConfigApplicationContext 根据配置类创建 IOC 容器对象 //ClassPathXmlApplicationContext根据路径中的xml文件创建IOC容器对象ApplicationContext applicationContext new AnnotationConfigApplicationContext(Spring6Configuration.class);UserService userService applicationContext.getBean(userService, UserService.class);userService.save(); }2.1 将外部类纳入IoC容器管理 场景需求将Druid连接池对象存储到IoC容器 需求分析如开头所述第三方jar包的类添加到ioc容器无法使用Component等相关注解因为源码jar包内容为只读模式 思路DataSource是JavaX中的一个接口通过实现该接口来获取DataSource对象将该方法声明为Bean后用value值注入创建datasource所需的各种属性。 package com.sunsplanter.config;import com.alibaba.druid.pool.DruidDataSource; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import javax.sql.DataSource;//标注当前类是配置类替代application.xml Configuration //引入jdbc.properties文件 PropertySource({classpath:jdbc.properties}) ComponentScan(basePackages {com.sunsplanter}) public class MyConfiguration {//如果第三方类进行IoC管理,无法直接使用Component相关注解//解决方案: xml方式可以使用bean标签//解决方案: 配置类方式,可以使用方法返回值Bean注解//DataSource是JavaX中的一个接口通过实现该接口来获取DataSource对象Beanpublic DataSource createDataSource(Value(${jdbc.user}) String username,Value(${jdbc.password})String password,Value(${jdbc.url})String url,Value(${jdbc.driver})String driverClassName){//使用Java代码实例化//new出一个Druid连接池对象DruidDataSource dataSource new DruidDataSource();//给该对象填上数据库参数后返回今后需要用从外部调用dataSource即可//set方法是DataSource接口中预定义的抽象方法dataSource.setUsername(username);dataSource.setPassword(password);dataSource.setUrl(url);dataSource.setDriverClassName(driverClassName);//返回结果即可return dataSource;} }2.2 import注解 **场景1**将外部类纳入IoC管理 正常情况下定义一个普通对象类我们在类上声明为Bean今后再编写一个配置类configuration.java,类中配置扫描包,即可自动寻找到所有Bean并自动注入. 然而,一些外部类原作者编写的时候并不可能按我们心意提前写好Bean注解,并且如2.1所述, 一些写好的外部类根本不允许我们修改. 但我们却仍想将这些外部类纳入IoC容器管理.(即自动生成对象, 自动注入,生命周期管理…) 此时就要用到import。 自定义一个类 没有任何注解模拟不能添加注解的外部类 public class MyClass {public void test() {System.out.println(test方法);} }在配置类Configuration中 import这个myClass类 configuration ComponentScan(basePackages {com.sunsplanter}) public class Configuration{ Import(MyClass.class) public class Configuration { }测试程序为 public void mainString[] args{ApplicationContext applicationContext new AnnotationConfigApplicationContext(Configuration.class);//我们已经首先根据配置类Configuration生成了上下文对象并且在配置类我们声明了外部类MyClass要纳入此上下文容器管理。//因此此时可以根据这个上下文对象getBean。MyClass myClass applicationContext.getBean(MyClass.class);myClass.test(); } }情景2存在多个配置类简化生成上下文容器的流程 Configuration public class ConfigA {Beanpublic A a() {return new A();} }Configuration Import(ConfigA.class) public class ConfigB {Beanpublic B b() {return new B();} }现在在实例化上下文时不需要同时指定 ConfigA.class 和 ConfigB.class 只需显式提供 ConfigB public static void main(String[] args) {ApplicationContext ctx new AnnotationConfigApplicationContext(ConfigB.class);// now both beans A and B will be available...A a ctx.getBean(A.class);B b ctx.getBean(B.class); }
http://www.zqtcl.cn/news/184699/

相关文章:

  • 推荐几个没封的正能量网站营销技巧和营销方法视频
  • html mip 网站桂林市临桂区
  • 做网站如何月入10万建行app怎么注册登录
  • 建设一个旅游网站毕业设计建设网站的功能定位是什么原因
  • wordpress网站导航模板杭州建设网站的公司
  • 如何做视频解析网站wordpress 关闭评论
  • 安福网站建设微信开发者工具怎么下载
  • 网罗设计网站威海网页设计制作公司
  • 网站用cmswordpress插件怎么做
  • 如何办好公司网站元器件网站搭建
  • 建设领域行政处罚查询网站wordpress数据库发文章
  • 怎么做网页的多开器宿迁seo优化
  • 别人帮做的网站怎么修改病句店铺引流的30种方法
  • 网站备案幕布怎么申请绍兴cms建站模板
  • 做网站熊掌号软件设计公司排名
  • 深圳 做网站学做西点的网站
  • 静态网站安全性百度服务平台
  • 网站vi设计公司网站建设app
  • 书店网站建设策划书总结每天看七个广告赚40元的app
  • 做网站的属于什么专业成都广告制作安装公司
  • 天津市网站建设公司网站制作费用
  • 网站制作公司 郑州wordpress图片中文不显示解决
  • 网站建设模式有哪些方面jquery做的装修网站
  • 佛山手机建网站企业网站公司单位有哪些
  • 给企业做网站的平台有没有专门做衣服搭配的网站
  • 青岛本地网站最近军事新闻大事
  • 潍坊哪里有做360网站的成都官微最新发布
  • 还有哪些网站可以做淘宝活动企业建设网站的方式
  • 上海技术公司做网站2022引流人脉推广软件
  • 网站排名优化技术安徽省城乡和建设厅网站