當前位置:首頁 » 數據倉庫 » spring註解掃描怎麼配置
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

spring註解掃描怎麼配置

發布時間: 2022-08-24 15:24:29

❶ 如何在Spring中配置Websocket

packagecom.test.websocket.socket;

importcom.alibaba.fastjson.JSONObject;
importorg.springframework.stereotype.Component;

importjavax.websocket.*;
importjavax.websocket.server.ServerEndpoint;
importjava.io.IOException;
importjava.util.concurrent.CopyOnWriteArraySet;

/**
*spring掃描註解的配置我這就不放了,網路一下就知道了
*這是服務端的代碼。
*onOpen,onMessage,onClose三個註解分別對應請求打開,消息發送,請求關閉(跟js端一一對應的)
*/
@Component
@ServerEndpoint(value="/websocket")
publicclassMyWebSocket{
privatestaticintonline=0;
<MyWebSocket>webSockets=newCopyOnWriteArraySet<>();
privateSessionsession;

@OnOpen
publicvoidonOpen(Sessionsession){
this.session=session;
webSockets.add(this);
addCount();
JSONObjectjsonObject=newJSONObject();
jsonObject.put("count",getCount());
jsonObject.put("command","init");
this.sendMessage(jsonObject);
jsonObject.put("command","add");
this.sendMessageToAll(jsonObject);

}

@OnClose
publicvoidonClose(){
JSONObjectjsonObject=newJSONObject();
jsonObject.put("command","sub");
webSockets.remove(this);
this.sendMessageToAll(jsonObject);
subCount();
}

@OnMessage
publicvoidonMessage(Stringmessage,Sessionsession){
this.session=session;
JSONObjectjsonObject=newJSONObject();
jsonObject.put("command","message");
jsonObject.put("content",message);
this.sendMessageToAll(jsonObject);
}

(){
MyWebSocket.online++;
}
(){
MyWebSocket.online--;
}
(){
returnMyWebSocket.online;
}

publicvoidsendMessage(JSONObjectmessage){
try{
this.session.getBasicRemote().sendText(message.toString());
}catch(IOExceptione){
e.printStackTrace();
}
}
publicvoidsendMessageToAll(JSONObjectmessage){
try{
for(MyWebSocketsocket:MyWebSocket.webSockets){
socket.session.getBasicRemote().sendText(message.toString());
}
}catch(IOExceptione){
e.printStackTrace();
}
}

}

varwebsocket=null;
varcount=0;
$('.btn-info').click(function(){
//發起websocket請求
websocket=newWebSocket("ws://localhost:8090/websocket");
$('.login_btn').hide();
$('.main').show(100);
//跟服務端onOpen執行完成之後執行
websocket.onopen=function(){
alert("鏈接成功");
}
//服務端onMessage執行完成之後執行
websocket.onmessage=function(event){
vardata=event.data;
data=JSON.parse(data);
varcommand=data.command;

switch(command){
case"init":count=data.count;$('.top').find('span').text(count);break;
case"add":$('.top').find('span').text(++count);break;
case"sub":$('.top').find('span').text(--count);break;
case"message":$('.content').append("<div>"+data.content+"</div>");break;
}
}
//服務端onClose執行完成之後執行
websocket.onclose=function(){
$(".main").hide(100);
$(".login_btn").show();
$('.top').find('span').text(--count);
alert("退出成功");
}
})
$('#logout').click(function(){
//觸發服務端onClose
websocket.close();
websocket=null;
})
$('.btn-success').click(function(){
//觸發服務端onMessage
websocket.send($('#in').val());
})

❷ spring 註解 通過什麼配置文件

一:在工程中建立config.properties配置文件
[java] view plain
#FTP的ip地址
address=192.168.25.133
#FTP的埠
port=21

二:在spring配置文件中配置載入上述的資源文件。(兩種方式)
方式1:s
[java] view plain
<context:property-placeholder location="classpath:config/*.properties"/>
方式2;
[java] view plain
<bean id="propertyBean"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<array>

❸ 如何在spring中配置定時任務

在spring 中 基於註解的 定時配置很簡單,只需要三步哦,如下:

1、在類名前加@Component註解,標記該bean,也就是配置掃描標記。

2、在該類下的方法前加定是配置註解,@Schele("cron= 0/30 * * * * *")。

3、添加配置文件(如下)。

實例如下:

1、class源文件。

packagecom.iss.ole.cggl.quartz;

importorg.springframework.scheling.annotation.Scheled;

/**
*@function訂單計算定時任務
* 1、試制訂單定時計算
* a、車型拆分成零件需求
* b、需求生成訂單明細
* 2、試裝訂單定時計算
* 3、工料廢訂單定時計算
*@authorzhoujian
*@date2014/10/29
*/
@Component
{

/**車型拆分成零件BIZ*/
;

/**車型拆分為毛需求*/
@Scheled(cron="0006**?")
(){
try{
planManagerBiz.createPartsList();
}catch(BaseExceptione){
logger.error("");
e.printStackTrace();
}
}

(){
returnplanManagerBiz;
}

publicvoidsetPlanManagerBiz(PlanManagerBizplanManagerBiz){
this.planManagerBiz=planManagerBiz;
}
}

2、配置文件

<?xmlversion="1.0"encoding="UTF-8"?>
<beansxmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:task="http://www.springframework.org/schema/task"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
">

<!--掃描有相關標記的bean,初始化,交給spring管理-->
<context:component-scanbase-package="com.iss.ole.cggl.quartz"/>

<!--注入屬性-->
<beanid="quartz"class="com.iss.ole.cggl.quartz.Quartz">
<propertyname="planManagerBiz">
<refbean="planManagerBiz"/>
</property>
</bean>
</beans>

當然,你也可以把定時設置配置到配置文件中,不過沒有註解來的快。思路是一樣的哦。

❹ spring mvc怎麼掃描註解

在xml文件中配置:

<!-- 自動掃描所有註解該路徑 -->
<context:annotation-config />
<context:component-scan base-package="...." />
base-package處寫你想要掃描的註解所在的包路徑

❺ spring使用註解,自動掃描類的時候怎麼注入

1. 使用Spring註解來注入屬性
1.1. 使用註解以前我們是怎樣注入屬性的
類的實現:

Java代碼

public class UserManagerImpl implements UserManager {
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
...
}

[java] view plain
public class UserManagerImpl implements UserManager {
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
...
}

配置文件:

Java代碼

<bean id="userManagerImpl" class="com.kedacom.spring.annotation.service.UserManagerImpl">
<property name="userDao" ref="userDao" />
</bean>
<bean id="userDao" class="com.kedacom.spring.annotation.persistence.UserDaoImpl">
<property name="sessionFactory" ref="mySessionFactory" />
</bean>

[java] view plain
<bean id="userManagerImpl" class="com.kedacom.spring.annotation.service.UserManagerImpl">
<property name="userDao" ref="userDao" />
</bean>
<bean id="userDao" class="com.kedacom.spring.annotation.persistence.UserDaoImpl">
<property name="sessionFactory" ref="mySessionFactory" />
</bean>

1.2. 引入@Autowired註解(不推薦使用,建議使用@Resource)
類的實現(對成員變數進行標注)

Java代碼

public class UserManagerImpl implements UserManager {
@Autowired
private UserDao userDao;
...
}

[java] view plain
public class UserManagerImpl implements UserManager {
@Autowired
private UserDao userDao;
...
}

或者(對方法進行標注)

Java代碼

public class UserManagerImpl implements UserManager {
private UserDao userDao;
@Autowired
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
...
}

[java] view plain
public class UserManagerImpl implements UserManager {
private UserDao userDao;
@Autowired
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
...
}

配置文件

Java代碼

<bean id="userManagerImpl" class="com.kedacom.spring.annotation.service.UserManagerImpl" />
<bean id="userDao" class="com.kedacom.spring.annotation.persistence.UserDaoImpl">
<property name="sessionFactory" ref="mySessionFactory" />
</bean>

[java] view plain
<bean id="userManagerImpl" class="com.kedacom.spring.annotation.service.UserManagerImpl" />
<bean id="userDao" class="com.kedacom.spring.annotation.persistence.UserDaoImpl">
<property name="sessionFactory" ref="mySessionFactory" />
</bean>

@Autowired可以對成員變數、方法和構造函數進行標注,來完成自動裝配的工作。以上兩種不同實現方式中,@Autowired的標
注位置不同,它們都會在Spring在初始化userManagerImpl這個bean時,自動裝配userDao這個屬性,區別是:第一種實現
中,Spring會直接將UserDao類型的唯一一個bean賦值給userDao這個成員變數;第二種實現中,Spring會調用
setUserDao方法來將UserDao類型的唯一一個bean裝配到userDao這個屬性。

1.3. 讓@Autowired工作起來
要使@Autowired能夠工作,還需要在配置文件中加入以下代碼

Java代碼

<bean class="org.springframework.beans.factory.annotation." />

[java] view plain
<bean class="org.springframework.beans.factory.annotation." />

1.4. @Qualifier
@Autowired是根據類型進行自動裝配的。在上面的例子中,如果當Spring上
下文中存在不止一個UserDao類型的bean時,就會拋出BeanCreationException異常;如果Spring上下文中不存在
UserDao類型的bean,也會拋出BeanCreationException異常。我們可以使用@Qualifier配合@Autowired來
解決這些問題。
1. 可能存在多個UserDao實例

Java代碼

@Autowired
public void setUserDao(@Qualifier("userDao") UserDao userDao) {
this.userDao = userDao;
}

[java] view plain
@Autowired
public void setUserDao(@Qualifier("userDao") UserDao userDao) {
this.userDao = userDao;
}

這樣,Spring會找到id為userDao的bean進行裝配。
2. 可能不存在UserDao實例

Java代碼

@Autowired(required = false)
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}

[java] view plain
@Autowired(required = false)
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}

1.5. @Resource(JSR-250標准註解,推薦使用它來代替Spring專有的@Autowired註解)
Spring 不但支持自己定義的@Autowired註解,還支持幾個由JSR-250規范定義的註解,它們分別是@Resource、@PostConstruct以及@PreDestroy。
@Resource
的作用相當於@Autowired,只不過@Autowired按byType自動注入,而@Resource默認按byName自動注入罷了。
@Resource有兩個屬性是比較重要的,分別是name和type,Spring將@Resource註解的name屬性解析為bean的名字,而
type屬性則解析為bean的類型。所以如果使用name屬性,則使用byName的自動注入策略,而使用type屬性時則使用byType自動注入策
略。如果既不指定name也不指定type屬性,這時將通過反射機制使用byName自動注入策略。
@Resource裝配順序

如果同時指定了name和type,則從Spring上下文中找到唯一匹配的bean進行裝配,找不到則拋出異常
如果指定了name,則從上下文中查找名稱(id)匹配的bean進行裝配,找不到則拋出異常
如果指定了type,則從上下文中找到類型匹配的唯一bean進行裝配,找不到或者找到多個,都會拋出異常
如果既沒有指定name,又沒有指定type,則自動按照byName方式進行裝配(見2);如果沒有匹配,則回退為一個原始類型(UserDao)進行匹配,如果匹配則自動裝配;

1.6. @PostConstruct(JSR-250)
在方法上加上註解@PostConstruct,這個方法就會在Bean初始化之後被Spring容器執行(註:Bean初始化包括,實例化Bean,並裝配Bean的屬性(依賴注入))。
它的一個典型的應用場景是,當你需要往Bean里注入一個其父類中定義的屬性,而你又無法復寫父類的屬性或屬性的setter方法時,如:

Java代碼

public class UserDaoImpl extends HibernateDaoSupport implements UserDao {
private SessionFactory mySessionFacotry;
@Resource
public void setMySessionFacotry(SessionFactory sessionFacotry) {
this.mySessionFacotry = sessionFacotry;
}
@PostConstruct
public void injectSessionFactory() {
super.setSessionFactory(mySessionFacotry);
}
...
}

[java] view plain
public class UserDaoImpl extends HibernateDaoSupport implements UserDao {
private SessionFactory mySessionFacotry;
@Resource
public void setMySessionFacotry(SessionFactory sessionFacotry) {
this.mySessionFacotry = sessionFacotry;
}
@PostConstruct
public void injectSessionFactory() {
super.setSessionFactory(mySessionFacotry);
}
...
}

❻ 如何讓spring自動掃描jar包中的類

在applicationContext.xml配置了

<context:component-scan base-package="com.demo"/>
沒把class打成jar包之前程序可以正常運行,打成jar包後,sping的註解掃描就失靈了,請問如何配置讓spring掃描打包後包中的class?
Eclipse在打包源碼成jar時,把這Add directory entries勾上試試

再重新生成之後可以實現自動掃描。

❼ Spring怎麼掃描class和配置文件

註解有它自身的優點,但是現在用的比較多的還是xml,因為它是可配置的,註解是直接寫在程序中的,當項目發布後,要修改起來會相對麻煩一些。spring注入方式一般不推薦使用自動掃描的方式,因為項目比較大的時候用起來比較亂,不利於多人共同開發 以及後期維護,建議用配置文件配置注入。這里你用了自動掃描注入,spring會先從它的配置文件中尋找,你應該是在配置文件中定義了這個介面。

❽ 如何配置 spring 的配置文件實現基於名字空間的註解掃描

相關範文很多的!

❾ spring是如何實現用註解配置的

<property name="packagesToScan">
<list>
<value>org.test.function.**.*</value>
</list>
</property>

配置文件中有這個配置。 這就是查找到你類中使用註解的依賴注入了。