Latest commit

History

25 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

RoboSpring

RoboSpring is a (real) port of the Spring Framework to the Android platform. Additionally it offers preliminary support for functionality introduced by RoboGuice like injecting View references into Activities and more.

RoboSpring is based on version 3.1.0 RELEASE of Spring's core, beans, context and aop components. It offers the following functionality:

  • Configure application components with a Spring configuration file (XML)
  • Autowire your Android components with beans from the Spring application context.
  • Inject the Android application context into your Spring Beans.
  • Inject views into Activities.
  • … and more

License

RoboSpring is released under version 2.0 of the Apache License.

Getting Started

  • Download the latest RoboSpring release ( robospring-X.X.X.jar from the release page here on GitHub). Put this file into your application's classpath (e.g. by just dropping it into an Android Application Project's lib folder.)
  • Create a Spring configuration - for simplicity use the RoboSpring default location by adding a file named applicationContext.xml into the root of your classpath (src-folder). Add the following content to get started:
<?xml version="1.0" encoding="UTF-8"?>
<beansxmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
<beanid="exampleBean"class="java.net.URL">
<constructor-argvalue="http://www.robospring.org" />
</bean>
<!-- define your beans here, use 'androidContext' to get a reference to your app's application context --> </beans>
  • Let RoboSpring inject references to your beans into your Activities (or other application components). Just call RoboSpring.autowire(this) and let RoboSpring inject properties you have annotated with the Autowired annotation as shown below:
@AutowiredprivateURLserviceUrl;
@OverridepublicvoidonCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
RoboSpring.autowire(this);
System.out.println(serviceUrl);
}
  • After you have called RoboSpring's autowire method, you can use the injected beans. Well done!

For more info you can also refer to Spring's documentation. As RoboSpring is build on 3.1.0 RELEASE, you should refer to:

http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/

Get a reference to the Android Context

You can get a reference to the Android application context to inject it into your Spring Beans easily. The Android application context is pre-defined in RoboSpring's application context under the name androidContext. So e.g. you can do the following:

privateContextcontext;
publicvoidsetContext(Contextcontext) {
this.context = context;
}
	<beanid="myBean"class="org.your.class.RequiringTheContext">
<propertyname="context"ref="androidContext" />
</bean>

Inject more than Spring Beans

RoboSpring additionally has preliminary support for RoboGuice annotations. You can e.g. inject views from you layout into your Activity. For this we even use the same annotations, so migrating from RoboGuice to RoboSpring should be easy.

When you have the following view in your layout (it's id is textView)...

 <TextViewandroid:id="@+id/textView"android:layout_width="fill_parent"android:layout_height="wrap_content" />

… all you have to do, is define a property of the same name and annotate it with the InjectView annotation and let RoboSpring.autowire(…) do the rest:

@InjectViewprivateTextViewtextView;

If you are familiar with RoboGuice, you will notice, that InjectView has no mandatory id attribute in RoboSpring. If you leave it away as shown, RoboSpring will deviate it from the property's name. Easy, isn't it?

PLEASE NOTE: You must call setContentView(...) in your Activity before calling RoboSpring.autowire(this). Otherwise, RoboSpring does not know, where to look for the views!

RoboSpring in Production

I am using RoboSpring in my Android Client for the RemoteUI Project. Get more information about it at

http://www.remoteui.org

HAPPY INJECTING!

Daniel

About

RoboSpring is a (real) port of the Spring Framework to the Android platform.

Resources

Stars

19 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

25 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

RoboSpring

RoboSpring is a (real) port of the Spring Framework to the Android platform. Additionally it offers preliminary support for functionality introduced by RoboGuice like injecting View references into Activities and more.

RoboSpring is based on version 3.1.0 RELEASE of Spring's core, beans, context and aop components. It offers the following functionality:

  • Configure application components with a Spring configuration file (XML)
  • Autowire your Android components with beans from the Spring application context.
  • Inject the Android application context into your Spring Beans.
  • Inject views into Activities.
  • … and more

License

RoboSpring is released under version 2.0 of the Apache License.

Getting Started

  • Download the latest RoboSpring release ( robospring-X.X.X.jar from the release page here on GitHub). Put this file into your application's classpath (e.g. by just dropping it into an Android Application Project's lib folder.)
  • Create a Spring configuration - for simplicity use the RoboSpring default location by adding a file named applicationContext.xml into the root of your classpath (src-folder). Add the following content to get started:
<?xml version="1.0" encoding="UTF-8"?>
<beansxmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
<beanid="exampleBean"class="java.net.URL">
<constructor-argvalue="http://www.robospring.org" />
</bean>
<!-- define your beans here, use 'androidContext' to get a reference to your app's application context --> </beans>
  • Let RoboSpring inject references to your beans into your Activities (or other application components). Just call RoboSpring.autowire(this) and let RoboSpring inject properties you have annotated with the Autowired annotation as shown below:
@AutowiredprivateURLserviceUrl;
@OverridepublicvoidonCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
RoboSpring.autowire(this);
System.out.println(serviceUrl);
}
  • After you have called RoboSpring's autowire method, you can use the injected beans. Well done!

For more info you can also refer to Spring's documentation. As RoboSpring is build on 3.1.0 RELEASE, you should refer to:

http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/

Get a reference to the Android Context

You can get a reference to the Android application context to inject it into your Spring Beans easily. The Android application context is pre-defined in RoboSpring's application context under the name androidContext. So e.g. you can do the following:

privateContextcontext;
publicvoidsetContext(Contextcontext) {
this.context = context;
}
	<beanid="myBean"class="org.your.class.RequiringTheContext">
<propertyname="context"ref="androidContext" />
</bean>

Inject more than Spring Beans

RoboSpring additionally has preliminary support for RoboGuice annotations. You can e.g. inject views from you layout into your Activity. For this we even use the same annotations, so migrating from RoboGuice to RoboSpring should be easy.

When you have the following view in your layout (it's id is textView)...

 <TextViewandroid:id="@+id/textView"android:layout_width="fill_parent"android:layout_height="wrap_content" />

… all you have to do, is define a property of the same name and annotate it with the InjectView annotation and let RoboSpring.autowire(…) do the rest:

@InjectViewprivateTextViewtextView;

If you are familiar with RoboGuice, you will notice, that InjectView has no mandatory id attribute in RoboSpring. If you leave it away as shown, RoboSpring will deviate it from the property's name. Easy, isn't it?

PLEASE NOTE: You must call setContentView(...) in your Activity before calling RoboSpring.autowire(this). Otherwise, RoboSpring does not know, where to look for the views!

RoboSpring in Production

I am using RoboSpring in my Android Client for the RemoteUI Project. Get more information about it at

http://www.remoteui.org

HAPPY INJECTING!

Daniel

About

RoboSpring is a (real) port of the Spring Framework to the Android platform.

Resources

Stars

19 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

25 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

RoboSpring

RoboSpring is a (real) port of the Spring Framework to the Android platform. Additionally it offers preliminary support for functionality introduced by RoboGuice like injecting View references into Activities and more.

RoboSpring is based on version 3.1.0 RELEASE of Spring's core, beans, context and aop components. It offers the following functionality:

  • Configure application components with a Spring configuration file (XML)
  • Autowire your Android components with beans from the Spring application context.
  • Inject the Android application context into your Spring Beans.
  • Inject views into Activities.
  • … and more

License

RoboSpring is released under version 2.0 of the Apache License.

Getting Started

  • Download the latest RoboSpring release ( robospring-X.X.X.jar from the release page here on GitHub). Put this file into your application's classpath (e.g. by just dropping it into an Android Application Project's lib folder.)
  • Create a Spring configuration - for simplicity use the RoboSpring default location by adding a file named applicationContext.xml into the root of your classpath (src-folder). Add the following content to get started:
<?xml version="1.0" encoding="UTF-8"?>
<beansxmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
<beanid="exampleBean"class="java.net.URL">
<constructor-argvalue="http://www.robospring.org" />
</bean>
<!-- define your beans here, use 'androidContext' to get a reference to your app's application context --> </beans>
  • Let RoboSpring inject references to your beans into your Activities (or other application components). Just call RoboSpring.autowire(this) and let RoboSpring inject properties you have annotated with the Autowired annotation as shown below:
@AutowiredprivateURLserviceUrl;
@OverridepublicvoidonCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
RoboSpring.autowire(this);
System.out.println(serviceUrl);
}
  • After you have called RoboSpring's autowire method, you can use the injected beans. Well done!

For more info you can also refer to Spring's documentation. As RoboSpring is build on 3.1.0 RELEASE, you should refer to:

http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/

Get a reference to the Android Context

You can get a reference to the Android application context to inject it into your Spring Beans easily. The Android application context is pre-defined in RoboSpring's application context under the name androidContext. So e.g. you can do the following:

privateContextcontext;
publicvoidsetContext(Contextcontext) {
this.context = context;
}
	<beanid="myBean"class="org.your.class.RequiringTheContext">
<propertyname="context"ref="androidContext" />
</bean>

Inject more than Spring Beans

RoboSpring additionally has preliminary support for RoboGuice annotations. You can e.g. inject views from you layout into your Activity. For this we even use the same annotations, so migrating from RoboGuice to RoboSpring should be easy.

When you have the following view in your layout (it's id is textView)...

 <TextViewandroid:id="@+id/textView"android:layout_width="fill_parent"android:layout_height="wrap_content" />

… all you have to do, is define a property of the same name and annotate it with the InjectView annotation and let RoboSpring.autowire(…) do the rest:

@InjectViewprivateTextViewtextView;

If you are familiar with RoboGuice, you will notice, that InjectView has no mandatory id attribute in RoboSpring. If you leave it away as shown, RoboSpring will deviate it from the property's name. Easy, isn't it?

PLEASE NOTE: You must call setContentView(...) in your Activity before calling RoboSpring.autowire(this). Otherwise, RoboSpring does not know, where to look for the views!

RoboSpring in Production

I am using RoboSpring in my Android Client for the RemoteUI Project. Get more information about it at

http://www.remoteui.org

HAPPY INJECTING!

Daniel

About

RoboSpring is a (real) port of the Spring Framework to the Android platform.

Resources

Stars

19 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

25 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

RoboSpring

RoboSpring is a (real) port of the Spring Framework to the Android platform. Additionally it offers preliminary support for functionality introduced by RoboGuice like injecting View references into Activities and more.

RoboSpring is based on version 3.1.0 RELEASE of Spring's core, beans, context and aop components. It offers the following functionality:

  • Configure application components with a Spring configuration file (XML)
  • Autowire your Android components with beans from the Spring application context.
  • Inject the Android application context into your Spring Beans.
  • Inject views into Activities.
  • … and more

License

RoboSpring is released under version 2.0 of the Apache License.

Getting Started

  • Download the latest RoboSpring release ( robospring-X.X.X.jar from the release page here on GitHub). Put this file into your application's classpath (e.g. by just dropping it into an Android Application Project's lib folder.)
  • Create a Spring configuration - for simplicity use the RoboSpring default location by adding a file named applicationContext.xml into the root of your classpath (src-folder). Add the following content to get started:
<?xml version="1.0" encoding="UTF-8"?>
<beansxmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
<beanid="exampleBean"class="java.net.URL">
<constructor-argvalue="http://www.robospring.org" />
</bean>
<!-- define your beans here, use 'androidContext' to get a reference to your app's application context --> </beans>
  • Let RoboSpring inject references to your beans into your Activities (or other application components). Just call RoboSpring.autowire(this) and let RoboSpring inject properties you have annotated with the Autowired annotation as shown below:
@AutowiredprivateURLserviceUrl;
@OverridepublicvoidonCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
RoboSpring.autowire(this);
System.out.println(serviceUrl);
}
  • After you have called RoboSpring's autowire method, you can use the injected beans. Well done!

For more info you can also refer to Spring's documentation. As RoboSpring is build on 3.1.0 RELEASE, you should refer to:

http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/

Get a reference to the Android Context

You can get a reference to the Android application context to inject it into your Spring Beans easily. The Android application context is pre-defined in RoboSpring's application context under the name androidContext. So e.g. you can do the following:

privateContextcontext;
publicvoidsetContext(Contextcontext) {
this.context = context;
}
	<beanid="myBean"class="org.your.class.RequiringTheContext">
<propertyname="context"ref="androidContext" />
</bean>

Inject more than Spring Beans

RoboSpring additionally has preliminary support for RoboGuice annotations. You can e.g. inject views from you layout into your Activity. For this we even use the same annotations, so migrating from RoboGuice to RoboSpring should be easy.

When you have the following view in your layout (it's id is textView)...

 <TextViewandroid:id="@+id/textView"android:layout_width="fill_parent"android:layout_height="wrap_content" />

… all you have to do, is define a property of the same name and annotate it with the InjectView annotation and let RoboSpring.autowire(…) do the rest:

@InjectViewprivateTextViewtextView;

If you are familiar with RoboGuice, you will notice, that InjectView has no mandatory id attribute in RoboSpring. If you leave it away as shown, RoboSpring will deviate it from the property's name. Easy, isn't it?

PLEASE NOTE: You must call setContentView(...) in your Activity before calling RoboSpring.autowire(this). Otherwise, RoboSpring does not know, where to look for the views!

RoboSpring in Production

I am using RoboSpring in my Android Client for the RemoteUI Project. Get more information about it at

http://www.remoteui.org

HAPPY INJECTING!

Daniel

About

RoboSpring is a (real) port of the Spring Framework to the Android platform.

Resources

Stars

19 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

25 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

RoboSpring

RoboSpring is a (real) port of the Spring Framework to the Android platform. Additionally it offers preliminary support for functionality introduced by RoboGuice like injecting View references into Activities and more.

RoboSpring is based on version 3.1.0 RELEASE of Spring's core, beans, context and aop components. It offers the following functionality:

  • Configure application components with a Spring configuration file (XML)
  • Autowire your Android components with beans from the Spring application context.
  • Inject the Android application context into your Spring Beans.
  • Inject views into Activities.
  • … and more

License

RoboSpring is released under version 2.0 of the Apache License.

Getting Started

  • Download the latest RoboSpring release ( robospring-X.X.X.jar from the release page here on GitHub). Put this file into your application's classpath (e.g. by just dropping it into an Android Application Project's lib folder.)
  • Create a Spring configuration - for simplicity use the RoboSpring default location by adding a file named applicationContext.xml into the root of your classpath (src-folder). Add the following content to get started:
<?xml version="1.0" encoding="UTF-8"?>
<beansxmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
<beanid="exampleBean"class="java.net.URL">
<constructor-argvalue="http://www.robospring.org" />
</bean>
<!-- define your beans here, use 'androidContext' to get a reference to your app's application context --> </beans>
  • Let RoboSpring inject references to your beans into your Activities (or other application components). Just call RoboSpring.autowire(this) and let RoboSpring inject properties you have annotated with the Autowired annotation as shown below:
@AutowiredprivateURLserviceUrl;
@OverridepublicvoidonCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
RoboSpring.autowire(this);
System.out.println(serviceUrl);
}
  • After you have called RoboSpring's autowire method, you can use the injected beans. Well done!

For more info you can also refer to Spring's documentation. As RoboSpring is build on 3.1.0 RELEASE, you should refer to:

http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/

Get a reference to the Android Context

You can get a reference to the Android application context to inject it into your Spring Beans easily. The Android application context is pre-defined in RoboSpring's application context under the name androidContext. So e.g. you can do the following:

privateContextcontext;
publicvoidsetContext(Contextcontext) {
this.context = context;
}
	<beanid="myBean"class="org.your.class.RequiringTheContext">
<propertyname="context"ref="androidContext" />
</bean>

Inject more than Spring Beans

RoboSpring additionally has preliminary support for RoboGuice annotations. You can e.g. inject views from you layout into your Activity. For this we even use the same annotations, so migrating from RoboGuice to RoboSpring should be easy.

When you have the following view in your layout (it's id is textView)...

 <TextViewandroid:id="@+id/textView"android:layout_width="fill_parent"android:layout_height="wrap_content" />

… all you have to do, is define a property of the same name and annotate it with the InjectView annotation and let RoboSpring.autowire(…) do the rest:

@InjectViewprivateTextViewtextView;

If you are familiar with RoboGuice, you will notice, that InjectView has no mandatory id attribute in RoboSpring. If you leave it away as shown, RoboSpring will deviate it from the property's name. Easy, isn't it?

PLEASE NOTE: You must call setContentView(...) in your Activity before calling RoboSpring.autowire(this). Otherwise, RoboSpring does not know, where to look for the views!

RoboSpring in Production

I am using RoboSpring in my Android Client for the RemoteUI Project. Get more information about it at

http://www.remoteui.org

HAPPY INJECTING!

Daniel

About

RoboSpring is a (real) port of the Spring Framework to the Android platform.

Resources

Stars

19 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

25 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

RoboSpring

RoboSpring is a (real) port of the Spring Framework to the Android platform. Additionally it offers preliminary support for functionality introduced by RoboGuice like injecting View references into Activities and more.

RoboSpring is based on version 3.1.0 RELEASE of Spring's core, beans, context and aop components. It offers the following functionality:

  • Configure application components with a Spring configuration file (XML)
  • Autowire your Android components with beans from the Spring application context.
  • Inject the Android application context into your Spring Beans.
  • Inject views into Activities.
  • … and more

License

RoboSpring is released under version 2.0 of the Apache License.

Getting Started

  • Download the latest RoboSpring release ( robospring-X.X.X.jar from the release page here on GitHub). Put this file into your application's classpath (e.g. by just dropping it into an Android Application Project's lib folder.)
  • Create a Spring configuration - for simplicity use the RoboSpring default location by adding a file named applicationContext.xml into the root of your classpath (src-folder). Add the following content to get started:
<?xml version="1.0" encoding="UTF-8"?>
<beansxmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
<beanid="exampleBean"class="java.net.URL">
<constructor-argvalue="http://www.robospring.org" />
</bean>
<!-- define your beans here, use 'androidContext' to get a reference to your app's application context --> </beans>
  • Let RoboSpring inject references to your beans into your Activities (or other application components). Just call RoboSpring.autowire(this) and let RoboSpring inject properties you have annotated with the Autowired annotation as shown below:
@AutowiredprivateURLserviceUrl;
@OverridepublicvoidonCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
RoboSpring.autowire(this);
System.out.println(serviceUrl);
}
  • After you have called RoboSpring's autowire method, you can use the injected beans. Well done!

For more info you can also refer to Spring's documentation. As RoboSpring is build on 3.1.0 RELEASE, you should refer to:

http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/

Get a reference to the Android Context

You can get a reference to the Android application context to inject it into your Spring Beans easily. The Android application context is pre-defined in RoboSpring's application context under the name androidContext. So e.g. you can do the following:

privateContextcontext;
publicvoidsetContext(Contextcontext) {
this.context = context;
}
	<beanid="myBean"class="org.your.class.RequiringTheContext">
<propertyname="context"ref="androidContext" />
</bean>

Inject more than Spring Beans

RoboSpring additionally has preliminary support for RoboGuice annotations. You can e.g. inject views from you layout into your Activity. For this we even use the same annotations, so migrating from RoboGuice to RoboSpring should be easy.

When you have the following view in your layout (it's id is textView)...

 <TextViewandroid:id="@+id/textView"android:layout_width="fill_parent"android:layout_height="wrap_content" />

… all you have to do, is define a property of the same name and annotate it with the InjectView annotation and let RoboSpring.autowire(…) do the rest:

@InjectViewprivateTextViewtextView;

If you are familiar with RoboGuice, you will notice, that InjectView has no mandatory id attribute in RoboSpring. If you leave it away as shown, RoboSpring will deviate it from the property's name. Easy, isn't it?

PLEASE NOTE: You must call setContentView(...) in your Activity before calling RoboSpring.autowire(this). Otherwise, RoboSpring does not know, where to look for the views!

RoboSpring in Production

I am using RoboSpring in my Android Client for the RemoteUI Project. Get more information about it at

http://www.remoteui.org

HAPPY INJECTING!

Daniel

About

RoboSpring is a (real) port of the Spring Framework to the Android platform.

Resources

Stars

19 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

25 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

RoboSpring

RoboSpring is a (real) port of the Spring Framework to the Android platform. Additionally it offers preliminary support for functionality introduced by RoboGuice like injecting View references into Activities and more.

RoboSpring is based on version 3.1.0 RELEASE of Spring's core, beans, context and aop components. It offers the following functionality:

  • Configure application components with a Spring configuration file (XML)
  • Autowire your Android components with beans from the Spring application context.
  • Inject the Android application context into your Spring Beans.
  • Inject views into Activities.
  • … and more

License

RoboSpring is released under version 2.0 of the Apache License.

Getting Started

  • Download the latest RoboSpring release ( robospring-X.X.X.jar from the release page here on GitHub). Put this file into your application's classpath (e.g. by just dropping it into an Android Application Project's lib folder.)
  • Create a Spring configuration - for simplicity use the RoboSpring default location by adding a file named applicationContext.xml into the root of your classpath (src-folder). Add the following content to get started:
<?xml version="1.0" encoding="UTF-8"?>
<beansxmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
<beanid="exampleBean"class="java.net.URL">
<constructor-argvalue="http://www.robospring.org" />
</bean>
<!-- define your beans here, use 'androidContext' to get a reference to your app's application context --> </beans>
  • Let RoboSpring inject references to your beans into your Activities (or other application components). Just call RoboSpring.autowire(this) and let RoboSpring inject properties you have annotated with the Autowired annotation as shown below:
@AutowiredprivateURLserviceUrl;
@OverridepublicvoidonCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
RoboSpring.autowire(this);
System.out.println(serviceUrl);
}
  • After you have called RoboSpring's autowire method, you can use the injected beans. Well done!

For more info you can also refer to Spring's documentation. As RoboSpring is build on 3.1.0 RELEASE, you should refer to:

http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/

Get a reference to the Android Context

You can get a reference to the Android application context to inject it into your Spring Beans easily. The Android application context is pre-defined in RoboSpring's application context under the name androidContext. So e.g. you can do the following:

privateContextcontext;
publicvoidsetContext(Contextcontext) {
this.context = context;
}
	<beanid="myBean"class="org.your.class.RequiringTheContext">
<propertyname="context"ref="androidContext" />
</bean>

Inject more than Spring Beans

RoboSpring additionally has preliminary support for RoboGuice annotations. You can e.g. inject views from you layout into your Activity. For this we even use the same annotations, so migrating from RoboGuice to RoboSpring should be easy.

When you have the following view in your layout (it's id is textView)...

 <TextViewandroid:id="@+id/textView"android:layout_width="fill_parent"android:layout_height="wrap_content" />

… all you have to do, is define a property of the same name and annotate it with the InjectView annotation and let RoboSpring.autowire(…) do the rest:

@InjectViewprivateTextViewtextView;

If you are familiar with RoboGuice, you will notice, that InjectView has no mandatory id attribute in RoboSpring. If you leave it away as shown, RoboSpring will deviate it from the property's name. Easy, isn't it?

PLEASE NOTE: You must call setContentView(...) in your Activity before calling RoboSpring.autowire(this). Otherwise, RoboSpring does not know, where to look for the views!

RoboSpring in Production

I am using RoboSpring in my Android Client for the RemoteUI Project. Get more information about it at

http://www.remoteui.org

HAPPY INJECTING!

Daniel

About

RoboSpring is a (real) port of the Spring Framework to the Android platform.

Resources

Stars

19 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

25 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

RoboSpring

RoboSpring is a (real) port of the Spring Framework to the Android platform. Additionally it offers preliminary support for functionality introduced by RoboGuice like injecting View references into Activities and more.

RoboSpring is based on version 3.1.0 RELEASE of Spring's core, beans, context and aop components. It offers the following functionality:

  • Configure application components with a Spring configuration file (XML)
  • Autowire your Android components with beans from the Spring application context.
  • Inject the Android application context into your Spring Beans.
  • Inject views into Activities.
  • … and more

License

RoboSpring is released under version 2.0 of the Apache License.

Getting Started

  • Download the latest RoboSpring release ( robospring-X.X.X.jar from the release page here on GitHub). Put this file into your application's classpath (e.g. by just dropping it into an Android Application Project's lib folder.)
  • Create a Spring configuration - for simplicity use the RoboSpring default location by adding a file named applicationContext.xml into the root of your classpath (src-folder). Add the following content to get started:
<?xml version="1.0" encoding="UTF-8"?>
<beansxmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
<beanid="exampleBean"class="java.net.URL">
<constructor-argvalue="http://www.robospring.org" />
</bean>
<!-- define your beans here, use 'androidContext' to get a reference to your app's application context --> </beans>
  • Let RoboSpring inject references to your beans into your Activities (or other application components). Just call RoboSpring.autowire(this) and let RoboSpring inject properties you have annotated with the Autowired annotation as shown below:
@AutowiredprivateURLserviceUrl;
@OverridepublicvoidonCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
RoboSpring.autowire(this);
System.out.println(serviceUrl);
}
  • After you have called RoboSpring's autowire method, you can use the injected beans. Well done!

For more info you can also refer to Spring's documentation. As RoboSpring is build on 3.1.0 RELEASE, you should refer to:

http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/

Get a reference to the Android Context

You can get a reference to the Android application context to inject it into your Spring Beans easily. The Android application context is pre-defined in RoboSpring's application context under the name androidContext. So e.g. you can do the following:

privateContextcontext;
publicvoidsetContext(Contextcontext) {
this.context = context;
}
	<beanid="myBean"class="org.your.class.RequiringTheContext">
<propertyname="context"ref="androidContext" />
</bean>

Inject more than Spring Beans

RoboSpring additionally has preliminary support for RoboGuice annotations. You can e.g. inject views from you layout into your Activity. For this we even use the same annotations, so migrating from RoboGuice to RoboSpring should be easy.

When you have the following view in your layout (it's id is textView)...

 <TextViewandroid:id="@+id/textView"android:layout_width="fill_parent"android:layout_height="wrap_content" />

… all you have to do, is define a property of the same name and annotate it with the InjectView annotation and let RoboSpring.autowire(…) do the rest:

@InjectViewprivateTextViewtextView;

If you are familiar with RoboGuice, you will notice, that InjectView has no mandatory id attribute in RoboSpring. If you leave it away as shown, RoboSpring will deviate it from the property's name. Easy, isn't it?

PLEASE NOTE: You must call setContentView(...) in your Activity before calling RoboSpring.autowire(this). Otherwise, RoboSpring does not know, where to look for the views!

RoboSpring in Production

I am using RoboSpring in my Android Client for the RemoteUI Project. Get more information about it at

http://www.remoteui.org

HAPPY INJECTING!

Daniel

About

RoboSpring is a (real) port of the Spring Framework to the Android platform.

Resources

Stars

19 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages