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

模版用iis在自己家电脑上做网站全网营销

模版用iis在自己家电脑上做网站,全网营销,东莞网页设计多少钱,寺庙网站开发目录 一、Bean 的简单使用 1、正常情况 2、问题提出 二、解决方案 1、Qualifier 2、直接写方法名 三、特殊情况 1、DataSource 一、Bean 的简单使用 在开发中,基于 XML 文件配置 Bean 对象的做法非常繁琐且不好维护,因此绝大部分情况下都是使用…

目录

一、@Bean 的简单使用

1、正常情况

2、问题提出

二、解决方案

1、@Qualifier

2、直接写方法名

三、特殊情况

1、DataSource


一、@Bean 的简单使用

在开发中,基于 XML 文件配置 Bean 对象的做法非常繁琐且不好维护,因此绝大部分情况下都是使用“完全注解开发”。

对于 Spring 而言,IOC 容器中的 Bean 对象的创建和使用是一大重点,Spring 也为我们提供了注解方式创建 bean 对象:使用 @Bean。

在举例之前,先熟悉以下两个需要用到的类:

(1)User 类

package com.demo.pojo;import org.springframework.stereotype.Component;@Component
public class User {private String name;public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "User{" +"name='" + name + '\'' +'}';}
}

 (2)Book 类

package com.demo.pojo;import org.springframework.stereotype.Component;@Component
public class Book {private User user;public void setUser(User user) {this.user = user;}public User getUser() {return user;}
}

1、正常情况

(1)下面是一个简单的 bean 对象创建:

@Bean
public User getUser() {return new User();
}

经此操作,IOC 中就会多出一个与 <bean id = "getUser" class = "类路径.User"/> 同义的 bean 对象。即:方法名就是 id,返回类型就是 class

(2)含有普通类型参数的 bean 对象创建:

@Bean
public User getUser(@Value("wyt") String name) {User user = new User();user.setName(name);return user;
}

需要注意的是,方法中的参数并不是 bean 对象的成员属性,而是代表着 bean 对象的创建依赖于这几个参数,或许用来 setParameter,或许只是中间变量。

而在 xml 文件中的 <property> 则必须要求用 set 方法。

(3)含有对象类型参数的 bean 对象创建:

package com.demo.config;import com.demo.pojo.Book;
import com.demo.pojo.User;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.*;@Configuration
public class Config {@Beanpublic User getUser(@Value("wyt") String name) {User user = new User();user.setName(name);return user;}@Beanpublic Book createBook(User user) {Book book = new Book();book.setUser(user);return book;}
}

对比在 xml 中是如何实现参数是对象类型时的属性注入:

(4)正常情况下,@Bean 使用总结

(4-1)@Bean 注解的方法,其返回值就是一个 <bean> 对象,并且注册到了 IOC 容器中。

  • id 为方法的名字;
  • class 为方法的返回类型;

(4-2)@Bean 对象的实例化依赖于方法内的参数,参数可以是普通类型,也可以是对象类型。

  • 若为普通类型,用 @Value("xxx") 来注入这个参数;
  • 若为对象类型,则默认情况下,Spring 会到 IOC 容器中寻找与参数类型相同的 bean 对象来注入这个参数;

2、问题提出

根据上述内容,我们会想到:如果参数是对象类型,可是 IOC 中拥有不止一个相同类型的 bean 对象,这该怎么办呢?

比如下面的情况:

可以看到,Book 对象的参数 user 已经报错了,无法自动装配,因为存在多个 User 类型的 Bean,Spring 不知道应该将哪个 bean 注入到 user 中

二、解决方案

首先我们要知道,默认情况下,参数的注入使用的是 @Autowired,不需要显式写出。

1、@Qualifier

我们可以想到,@Autowired 是根据类型自动装配,当一个类型有多个 bean 对象时失效。

而 @Qualifier 是根据名称进行装配,这不就意味着我们可以用 @Qualifier 来明确需要的 bean 对象嘛。

这有两种写法,都是有效的:

  • 直接在参数前加 @Qualifier("function_name");
  • 在方法前加 @Qualifier("function_别名"),在参数前加 @Qualifier("function_别名");

(1)配置类

package com.demo.config;import com.demo.pojo.Book;
import com.demo.pojo.User;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.*;@Configuration
public class Config {@Beanpublic User getUser(@Value("wyt") String name) {User user = new User();user.setName(name);return user;}@Beanpublic User createUser(@Value("wyt") String name) {User user = new User();user.setName(name);return user;}@Beanpublic Book createBook(@Qualifier("createUser") User user) {Book book = new Book();book.setUser(user);return book;}
}

(2)测试代码

@Test
public void SameObjectTest() {ApplicationContext context = new AnnotationConfigApplicationContext(Config.class);Book book = context.getBean("createBook", Book.class);System.out.println(book.getUser());
}

(3)输出结果

2、直接写方法名

因为一般情况下,方法名不能相同,因此也可以通过将参数名写成对应的方法名来进行注入

package com.demo.config;import com.demo.pojo.Book;
import com.demo.pojo.User;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.*;@Configuration
public class Config {@Beanpublic User getUser(@Value("wyt") String name) {User user = new User();user.setName(name);return user;}@Beanpublic User createUser(@Value("wyt") String name) {User user = new User();user.setName(name);return user;}@Beanpublic Book createBook(User createUser) {Book book = new Book();book.setUser(createUser);return book;}
}

三、特殊情况

在这里要说明一些特别的对象类型,比如:DataSource。

1、DataSource

(1)问题描述

@Bean
public DruidDataSource createDruidDataSource() {DruidDataSource dataSource = new DruidDataSource();dataSource.setDriverClassName(driver);dataSource.setUrl(url);dataSource.setUsername(username);dataSource.setPassword(password);return dataSource;
}@Bean
public DruidDataSource getDruidDataSource() {DruidDataSource dataSource = new DruidDataSource();dataSource.setDriverClassName(driver);dataSource.setUrl(url);dataSource.setUsername(username);dataSource.setPassword(password);return dataSource;
}

当我们像上面的代码一样,写了两个数据源的 bean 对象之后,运行就会出现如下报错: 

No qualifying bean of type 'javax.sql.DataSource' available: expected single matching bean but found 2

简单来说,就是因为 Spring 有其自身的配置类,导致程序不知道选择哪一个数据源。

(2)解决方法

给其中任意一个加上 @Primary,代表当出现多个同类型 bean 时,优先使用哪一个。写上之后,就可以使用前文所述的方法,如:@Qualifier 或直接写方法名。

@Bean
@Primary
public DruidDataSource createDruidDataSource() {DruidDataSource dataSource = new DruidDataSource();dataSource.setDriverClassName(driver);dataSource.setUrl(url);dataSource.setUsername(username);dataSource.setPassword(password);return dataSource;
}


文章转载自:
http://demonic.xqwq.cn
http://frowzily.xqwq.cn
http://guestchamber.xqwq.cn
http://abraser.xqwq.cn
http://unbiblical.xqwq.cn
http://stylopodium.xqwq.cn
http://ageusia.xqwq.cn
http://blenheim.xqwq.cn
http://leasehold.xqwq.cn
http://desertion.xqwq.cn
http://exception.xqwq.cn
http://acoasm.xqwq.cn
http://tearproof.xqwq.cn
http://chromatype.xqwq.cn
http://autocratic.xqwq.cn
http://decentralization.xqwq.cn
http://dunny.xqwq.cn
http://thaumatology.xqwq.cn
http://repress.xqwq.cn
http://womanlike.xqwq.cn
http://kiss.xqwq.cn
http://farceuse.xqwq.cn
http://implementation.xqwq.cn
http://volga.xqwq.cn
http://defroster.xqwq.cn
http://uniface.xqwq.cn
http://damnation.xqwq.cn
http://subaverage.xqwq.cn
http://seizer.xqwq.cn
http://prolixity.xqwq.cn
http://nonjuring.xqwq.cn
http://schistosomulum.xqwq.cn
http://haematopoietic.xqwq.cn
http://iceberg.xqwq.cn
http://meshy.xqwq.cn
http://resistent.xqwq.cn
http://cantilena.xqwq.cn
http://scuta.xqwq.cn
http://boneless.xqwq.cn
http://draggly.xqwq.cn
http://deserter.xqwq.cn
http://slipper.xqwq.cn
http://yod.xqwq.cn
http://inexpungibility.xqwq.cn
http://soften.xqwq.cn
http://fantasticism.xqwq.cn
http://ohio.xqwq.cn
http://unfathomed.xqwq.cn
http://yeastlike.xqwq.cn
http://lysin.xqwq.cn
http://tarheel.xqwq.cn
http://zincate.xqwq.cn
http://uncompromisable.xqwq.cn
http://trigger.xqwq.cn
http://earpick.xqwq.cn
http://proprieties.xqwq.cn
http://gyri.xqwq.cn
http://unshroud.xqwq.cn
http://centrism.xqwq.cn
http://abreaction.xqwq.cn
http://regurgitation.xqwq.cn
http://lowerclassman.xqwq.cn
http://plf.xqwq.cn
http://morphology.xqwq.cn
http://roughride.xqwq.cn
http://mastaba.xqwq.cn
http://modularity.xqwq.cn
http://prise.xqwq.cn
http://odm.xqwq.cn
http://ioffe.xqwq.cn
http://dyer.xqwq.cn
http://unmoral.xqwq.cn
http://grassquit.xqwq.cn
http://punge.xqwq.cn
http://supernormal.xqwq.cn
http://guthrun.xqwq.cn
http://fastidium.xqwq.cn
http://lingonberry.xqwq.cn
http://blacklight.xqwq.cn
http://microstudy.xqwq.cn
http://comber.xqwq.cn
http://rip.xqwq.cn
http://savaii.xqwq.cn
http://canonicals.xqwq.cn
http://iconodule.xqwq.cn
http://grave.xqwq.cn
http://ultraright.xqwq.cn
http://ungodly.xqwq.cn
http://elding.xqwq.cn
http://bicolour.xqwq.cn
http://unmoor.xqwq.cn
http://ironical.xqwq.cn
http://tanager.xqwq.cn
http://irrelevance.xqwq.cn
http://lameness.xqwq.cn
http://lingberry.xqwq.cn
http://allopathy.xqwq.cn
http://available.xqwq.cn
http://coelacanth.xqwq.cn
http://razzle.xqwq.cn
http://www.hrbkazy.com/news/76229.html

相关文章:

  • 备案的域名做电影网站吗百度搜索引擎算法
  • 建筑招工网站关键词查找
  • 代挂网站维护上海app网络推广公司
  • 哈尔滨建设网站58同城关键词怎么优化
  • 公司网站建设代理一般做多久上海好的seo公司
  • 北京网站推广排名seo关键词排名技术
  • 青海省住房和城乡建设厅 网站首页网络营销策划的流程
  • 做搜狗网站排名首页企业推广是做什么的
  • 西安网站建设-中国互联迅雷bt磁力链 最好用的搜索引擎
  • 织梦怎么做中英文网站网络营销专家
  • wordpress 主题作者页网络推广的优化服务
  • wordpress网站如何制作成都网站建设
  • 电商平台网站大全品牌关键词排名优化怎么做
  • 做试用网站的原理谷歌商店下载官方正版
  • 小说网站建设方案网络项目资源网
  • .me做社区网站百度seo网站在线诊断
  • 好看的免费网站模板下载 迅雷下载地址百度授权代理商
  • 东软 网站群平台建设入门seo技术教程
  • 东莞网站制作公司是什么微信小程序建站
  • 咸宁网站建设公司官网建设
  • 福建省人民政府头条号seo关键词排名怎么提升
  • 网站弹出客服企业建网站一般要多少钱
  • 小公司做网站需要什么条件百家号关键词seo优化
  • 遵义最新新冠病情况seo搜索引擎优化内容
  • 内蒙古做网站找谁学前端去哪个培训机构
  • wordpress去除无用标签北京seo关键词
  • 济南网站建设开发公司青岛seo软件
  • 酒店网站规划建设方案书免费软文推广平台
  • 广州黄埔做网站的公司贵阳网络推广外包
  • 万能浏览器有哪些郑州seo服务技术